niedziela, 25 lipca 2010

Bind ciąg dalszy

W ostatnim artykule dotyczącym bind'a opisałem podstawową instalację oraz konfigurację, teraz przyszła pora na umożliwienie odpytania naszego serwera DNS przez inne hosty.

Pierwszą i podstawową czynnością (sprawdzone empirycznie) jest umożliwienie połączeń z określonych numerów IP na numer portu 53, czyli ten, na którym działa DNS (zakładam, że serwer DNS ma być udostępniony tylko dla sieci lokalnej).

Więc przechodzimy do /etc/sysconfig i robimy kopię bezpieczeństwa iptables
cp iptables iptables.backup , następnie edytujemy zawartość pliku iptables.
Ja dodałem tylko dwie reguły umożliwiające dwóm hostom odpytywanie serwera DNS:
-A RH-Firewall-1-INPUT -p udp -s 192.168.1.3 --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -s 192.168.1.2 --dport 53 -j ACCEPT

obie reguły muszą być dodane przed wierszem:
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited


Zapisujemy zmiany i restartujemy iptables (/etc/init.d/iptables restart) jak wyrzuci errory jakieś to trzeba znaleźć błędy w pliku i je poprawić.

Wcześniej tych reguł nie dodałem i niestety nie byłem w stanie odpytać serwera dns, wireshark i iptraf pokazywał komunikat:
icmp-host-prohibited
więc jeżeli zobaczycie taki komunikat, to pierwszą rzeczą, którą należy sprawdzić jest iptables.

Wcześniej próbowałem dodać przez wpisanie iptables -A INPUT -s i tak dalej, ale niestety nie przynosiło to żadnego efektu, pewnie w tych Red Hatowych iptables inaczej dodaje się reguły, ja wolałem po prostu edytować plik.


Teraz należy przystąpić do edycji pliku /etc/named.conf jego fragment wygląda następująco:

// Red Hat BIND Configuration Tool
//
// Default initial "Caching Only" name server configuration
//
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
allow-query { 192.168.1.3; 192.168.1.2 ;};
listen-on port 53 { 127.0.0.1; 192.168.1.4;};
//forwarders { 192.168.7.1; 192.168.2.1; };
};

zone "." IN {
type hint;
file "named.root";
};

zone "localdomain." IN {
type master;
file "localdomain.zone";
allow-update { none; };
allow-query {0.0.0.0/0;};
};

zone "localhost." IN {
type master;
file "localhost.zone";
allow-update { none; };
};




Przez wiersz allow-query { 192.168.1.3; 192.168.1.2 ;}; definiujemy kto może odpytywać nasz serwer DNS, ja zdefiniowałem dwa adresy ale można wszystkim umożliwić odpytywanie serwera DNS przez wprowadzenie wpisu allow-query { "any";};.

Kolejnym ważnym wierszem jest listen-on port 53 { 127.0.0.1; 192.168.1.4;};
, w którym definiujemy na którym porcie ma nasłuchiwać serwer (53) oraz na których numerach IP (to też jest jakaś metoda ochrony, ponieważ jeżeli damy tylko lokalny adres IP, a nie zewnętrzny nikt nie z zewnątrz nie będzie w stanie odpytać naszego serwera DNS).


Dla każdej domeny obsługiwanej przez serwer można jeszcze zdefiniować następujące opcje:
allow-update { none; }; // czyli kto może aktualizować informacje o wybranej strefie,
allow-query {0.0.0.0/0;}; // kto może odpytywać nasz serwer DNS,
allow-transfer // przydatne gdy nasz serwer chce wysyłać informacje o wybranej strefie do serwera master (popularne rozwiązanie w firmach hostingowych, mamy własny serwer VPS i trzeba wysłać informacje o podpiętych domenach do serwera nadrzędnego),
//forwarders { 192.168.7.1; 192.168.2.1; }; ta opcja się czasami przydaje, gdy chcemy zdefiniować do jakich serwerów mają być przekierowywane pytania o domeny, jeżeli nasz serwer DNS ich nie obsługuje. W moim przypadku pozostawiłem je zakomentowane i serwer i tak działał poprawie.

W większości przypadków allow-update powinno być ustawione na none, lub powinny tam zostać wypisane numery IP serwerów, które mogą aktualizować informacje o strefie.
Allow-query albo wszyscy albo tylko komputery z sieci lokalnej.
Allow-transfer gdy mamy jakiś serwer nadrzędny.
Jeżeli się popełni błąd w plikach wymienionych powyżej, to można np. komuś z zewnątrz umożliwić modyfikacje strefy obsługiwanej przez nasz serwer DNS, a tego byśmy raczej nie chcieli.

No tak, jeszcze na komputerze, który ma korzystać z naszego serwera DNS należy zmodyfikować zawartość /etc/resolv.conf i wprowadzić np.:
nameserver 192.168.1.4

sobota, 24 lipca 2010

Rewrite, rewrite i jeszcze raz rewrite

Sytuacja przedstawia się w sposób następujący, mamy zainstalowany serwer Apache, bazę danych MySQL no i oczywiście PHP.

Traf chciał, że zachciało się nam pouczyć rewrite'ów trzeba tylko włączyć mod_rewrite w Apachu wpisujemy więc:
sudo a2enmod rewrite


Testujemy czy rewrity działają i nic, kompletnie nic się nie dzieje, dalej nie działają.

Więc przechodzimy do /etc/apache2 i ls mods-available | grep rewrite
rewrite.load

Czyli teoretycznie powinno działać, ale niebędne jest jeszcze wprowadzenie zmian w /etc/apache2/sites-available/default

W związku z tym, że to nie jest serwer produkcyjny i bezpieczeństwem się nie przejmujemy, można po prostu zmodyfikować wpis dotyczący katalogu /var/www aby przybrał postać:

Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all


Następnie zrestartować Apacha i cieszyć się z działających rewritów.

Podstawowe informacje dotyczącego tego do czego służą rewrity, przyjazne linki można znaleźć na stronie:
http://northpole.pl/przyjazne-linki/

Nagrywanie czynności wykonywanych na pulpicie

Na pewno zdarzyło się Wam tłumaczyć komuś bardzo proste zagadnienie np. konfiguracja klienta pocztowego. Problem w tym, że osoba której tłumaczycie, musi mieć coś opisanego krok po kroku i z prostego opisu robi się wówczas pół strony albo i więcej.

Rozwiązaniem jest nagranie filmiku przedstawiającego wszystkie czynności i przesłanie takiemu osobnikowi.

Gdy pracujemy na Linux'ie do tego celu może nam posłużyć program gtk-recordmydesktop, który jest nakładką graficzną na recordmydesktop, gdy pracujemy na łyndowsie to możemy posłużyć się programem ... nie mam pojęcia jakim i jest mi z tym dobrze :).

Po zainstalowaniu programu, wybieramy które okno ma być nagrywane i rozpoczynamy (program też nagrywa dźwięk więc możemy zrobić profesjonalny filmik instruktarzowy).

Po nagraniu przesyłamy filmik osobie zainteresowanej i wszystko powinno być już załatwione ..., ale nie jest. Po kilku minutach dostajemy telefon, że go nie mogą uruchomić bo to jest format ogv (to jest przykład z życia wzięty).

Więc nie pozostaje nam nic innego jak odpowiedzieć goń się :) lub konwertować filmik z ogv na avi za pomocą polecenia:

mencoder input.ogm -ovc xvid -oac mp3lame -xvidencopts pass=1 -o output.avi

Tak z innej beczki jeżeli chcemy sprawdzić jaki pakiet jest odpowiedzialny za record na systemach Debian'owych można wpisać:
apt-cache search record

W pracy niestety z opisanego powyżej rozwiązania nie korzystam, ale mam wrażenie że czami by się przydało (niektórzy mają problemy z przyswajaniem tekstu pisanego, z obrazkami idzie im o wiele lepiej).

sobota, 17 lipca 2010

Screen, czyli jak połączyć się zdalnie z serwerem, uruchomić skrypt, którego wykonanie zajmuje kilka godzin, rozłączyć się i pójść spać.

W celu uruchomienia screen'a w terminalu wpisujemy:
- screen

Jeżeli chcemy aby screen miał określoną nazwę (często na serwerze mamy uruchomionych kilka screenów i wygodniej jest wiedzieć, który jest od czego):
screen -S przykladowa_nazwa

Gdy chcemy się połączyć ze screen'em który w dalszym ciągu jest podłączon (Attached):
screen -x nazwa_screena

Gdy chcemy połączyć się ze screenem, który jest odłączony (Detached):
screen -r nazwa_screena

Usuwanie screen'a:
screen -wipe nazwa screena

Odłączanie się od screen'a bez zamykania sesji:
ctrl + a, ctrl + d


Wyłączanie screen'a:
ctrl + a, ctrl + k

Wyświetlanie uruchomionych screenów:
screen -ls

Teraz chyba będzie najfajniejszy trick w ramach jednej sesji screen'a można mieć uruchomionych kilka okien. Tworzenie nowego okna:
ctrl + a, ctrl +c

Przełączanie się pomiędzy poszczególnymi oknami:
ctrl + a, ctrl + n
ctrl + a, ctrl + p

Instalacja bind'a na centOS'ie

Załóżmy, że chcesz zainstalować bind'a na CentOS'ie ale nie wiesz jakie wpisy powinny być w poszczególnych plikach konfiguracyjnych.

Istnieje możliwość oszukania wszystkich tych, którzy twierdzą, że trzeba do tego przeczytać przynajmniej jedną książkę i mnóstwo how to w Internecie. Założenia są następujące:
- jest jeden serwer na którym będzie działał serwer DNS, bez środowiska graficznego,
- mamy drugi komputer lub uruchomioną maszynę wirtualną z centOS'em ze środowiskiem graficznym.

Pomysł polega na tym aby na maszynie ze środowiskiem graficznym zainstalować bind'a za pomocą narzędzia system-config-bind i następnie zainstalować binda na serwerze bez środowiska graficznego i przekopiować odpowiednie pliki.

Rozpoczynamy od instalacji narzędzia graficznego do konfiguracji bind'a na komputerze ze środowiskiem graficznym (a pani z polskiego mówiła, żeby takie same wyrazy się nie powtarzały w jednym zdaniu ):
- yum install system-config-bind

Uruchamiamy narzędzie graficzne przez wprowadzenie w konsoli system-config-bind.
Tak w ogóle to właśnie instaluje tego centOS'a ze środowiskiem graficznym i traf chciał, że zapodałem yum update i jak by to powiedzieć it is taking forever.
Jest na etapie cleanup więc chyba nie będzie tak źle.

No i poszło wreszcie zaczynamy:
yum install system-config-bind

No i się po drodze okazało, że nie ustawiłem aby była komunikacja pomiędzy komputerem matką, a maszyną wirtualną.
Czyli jak zwykle bridge-adapter, trzeba było jeszcze usunąć podmonotowywanie pliku iso, bo mi się chciał centOS jeszcze raz instalować, a tego bym raczej nie przeżył.
Po domyślnej instalacji ze środowiskiem graficznym system wstaje w trybie tekstowym.
Polecenie znane wszystkim użytkownikom linuxa startx uruchamia system w trybie graficznym, alternatywnym wyjściem jest wpisanie init 5.

W celu sprawdzenia czy serwer działa poprawnie jako cache DNS (nie ma ustawionej żadnej strefy, tylko odpytujemy inne serwery) należy wprowadzić zmiany w /etc/resolv.conf.

Należy za komentować wszystkie tzw. nameservery i dodać nameserver 127.0.0.1 (czyli będziemy odpytywać siebie sami) i oczywiście wystartować bind'a /etc/init.d/named start
jak się pojawi ok, to wszystko działa (jeszcze działa).

Pingujemy lub korzystamy z polecania host -a lub dig nazwa_domeny, nie mamy takich informacji w konfiguracji serwera DNS więc serwer musi odezwać się do innych serwerów DNS - co mu się z powodzeniem udaje.

No to sprawdzamy czy faktycznie odpytuje mój i tylko mój działający serwer DNS, czy też korzysta z jakiegoś innego:

host -a wp.pl
Trying "wp.pl"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63008
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 3, ADDITIONAL: 2

;; QUESTION SECTION:
;wp.pl. IN ANY

;; ANSWER SECTION:
wp.pl. 3600 IN TXT "v=spf1 ip4:212.77.96.0/19 ip4:195.205.40.200/29 mx -all"
wp.pl. 3600 IN MX 5 mx5.wp.pl.
wp.pl. 3600 IN MX 0 mx.wp.pl.
wp.pl. 3600 IN SOA ns2.wp.pl. dnsmaster.wp-sa.pl. 2010070802 900 600 86400 3600
wp.pl. 3379 IN A 212.77.100.101
wp.pl. 3600 IN NS ns1.task.gda.pl.
wp.pl. 3600 IN NS ns2.wp.pl.
wp.pl. 3600 IN NS ns1.wp.pl.

;; AUTHORITY SECTION:
wp.pl. 3600 IN NS ns1.task.gda.pl.
wp.pl. 3600 IN NS ns2.wp.pl.
wp.pl. 3600 IN NS ns1.wp.pl.

;; ADDITIONAL SECTION:
mx.wp.pl. 3600 IN A 212.77.101.4
mx5.wp.pl. 3600 IN A 212.77.101.9

Received 335 bytes from 127.0.0.1#53 in 53 ms


Tak, wiem czytacie i czytacie, a tak naprawdę ważna jest tylko ostatni wiersz:
Received 335 bytes from 127.0.0.1#53 in 53 ms


uruchamianie nameda przy starcie systemu:
/sbin/chkconfig named on

Wąłczanie uruchamiania nameda przy starcie systemu:
/sbin/chkconfig named of


Po przekopiowaniu plików na maszynę bez środowiska graficznego niestety nie chciała się ona normalnie uruchomić, w /var/log/messages znalazłem następujące informacje:
- nieprawidłowe uprawnienia do pliku /etc/named.conf oraz /etc/rndc.key
Sprawdziłem więc jakie uprawnienia mają wskazane pliki na serwerze ze środowiskiem graficznym:
-rw-r--r-- 1 root root 1,3K kwi 28 2005 named.conf
-rw-r----- 1 root named 108 lip 12 23:57 rndc.key

Zmieniłem więc uprawnienia wskazanych plików, ale dalej named nie działał poprawnie.
Poprawiłem uprawnienia w katalogu /var/named na:
drwxrwx--- 2 named named 4,0K sty 20 17:33 data
-rw-r--r-- 1 root named 208 kwi 28 2005 localdomain.zone
-rw-r--r-- 1 root named 195 kwi 28 2005 localhost.zone
-rw-r--r-- 1 root named 427 kwi 28 2005 named.broadcast
-rw-r--r-- 1 root named 424 kwi 28 2005 named.ip6.local
-rw-r--r-- 1 root named 426 kwi 28 2005 named.local
-rw-r--r-- 1 root root 1,3K lip 12 23:57 named.root
-rw-r--r-- 1 root named 427 kwi 28 2005 named.zero
drwxr-xr-x 2 named named 4,0K lip 12 23:57 slave
drwxrwx--- 2 root named 4,0K sty 20 17:33 slaves


coś nie chciało pójść więc przeinstalowałem system (jak coś nie działa to albo debugujemy albo reinstall w wielu przypadkach reinstall jest rozwiązaniem szybszym):

Po reinstalacji centOS'a bez środowiska graficznego skopiowałem pliki przez tarowaniez zachowaniem uprawnień "tar -pcvf named.tar.gz named"
i rozpakowałem z zachowaniem uprawnień "tar -pxvf named.tar.gz"

Oprócz skopiowania na serwer katalogu /var/named trzeba również skopiować następujące pliki:
- /etc/named.conf
- /etc/rndc.key
- /etc/request-key.conf

Uruchomiłe serwer bind i przetestowałem działanie jeszcze raz i wszystko działa poprawnie nawet bez środowiska graficznego.
Więc jak chcecie zainstalować serwer DNS, to powyżej macie najłatwiejszą opcję jego konfiguracji.

W planach na przyszłość mam zainstalowanie serwera bind z wykorzystaniem chroot (większe bezpieczeństwo, nawet jak ktoś przejmie kontrolę nad bind'em to będzie uwięziony w jego katalogu).

tar z zachowaniem uprawnień

Często zdarza się przenoszenie plików i katalogów na inny serwer i chcemy aby po przeniesieniu miały one takie same uprawnienia jak na poprzednim serwerze.

Rozwiązaniem jest spakowanie plików i/lub katalogów za pomocą polecenia tar z wykorzystaniem przełącznika -p (ang. preserve czy jakoś tak :]).

tar -pcvf named.tar.gz named

Powyższe polecenie pakuje zawartość katalogu named do archiwum named.tar.gz z zachowaniem uprawnień.
Gdy już przeniesiemy plik na inny serwer to można go rozpakować również z zachowaniem uprawnień.

tar -pxvf named.tar.gz

Powyższe polecenia rozpakowuje archiwum w katalogu bieżącym i z zachowaniem uprawnień.

Przełącznik -p działa również dla innych poleceń takich jak scp oraz rsync.

wtorek, 6 lipca 2010

konfiguracja interfejsów sieciowych centOS

Często zdarza się tak, że chcemy aby po restarcie serwera uzyskał on określone adresy IP, lub żeby po restarcie networka podniosły się wszystkie niezbędne numery IP.

W tym celu należy przeprowadzić edycję plików /etc/sysconfig/network-scripts/ifcfg-ethX lub stworzyć taki plik z następującą zawartością:

DEVICE=eth0 # nazwa pod którą dana karta będzie rozpoznawana
BOOTPROTO=static # tu istnieją dwie możliwości albo dynamicznie przydzielany adres - dhcp, albo statycznie
ONBOOT=yes # czy podczas uruchamiania systemu ma być dany IP'ik podnoszony,
IPADDR=192.168.1.4 # z jakim adresem ma podnieść się interfejs
NETMASK=255.255.255.0 # maska
GATEWAY=192.168.1.1 # brama domyślna dla danego interfejsu

Czasami chcemy żeby na jednej karcie sieciowej były obsługiwane dwa lub więcej numerów IP, wówczas tworzymy plik ifcfg-ethX:1 z następującą treścią:
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.5
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

Po wprowadzaniu zmian w plikach konfiguracyjnych restartujemy networka:
/etc/init.d/network restart
i sprawdzamy czy są dany interfejs podniósł się z właściwymi numerami IP:

[root@komp-1-4 network-scripts]# ip a
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 08:00:27:a0:76:a4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.5/24 brd 192.168.1.255 scope global secondary eth0:1
inet6 fe80::a00:27ff:fea0:76a4/64 scope link
valid_lft forever preferred_lft forever


lub:
eth0 Link encap:Ethernet HWaddr 08:00:27:A0:76:A4
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fea0:76a4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:588 errors:0 dropped:0 overruns:0 frame:0
TX packets:542 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:55487 (54.1 KiB) TX bytes:63769 (62.2 KiB)
Interrupt:11 Base address:0xd020

eth0:1 Link encap:Ethernet HWaddr 08:00:27:A0:76:A4
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:11 Base address:0xd020


Czasami zdarza się też, że nie chcemy edytować żadnych plików tylko podnieść wybrany interfejs z określonym numerem ip wtedy wpisujemy np.:
ifconfig eth0:2 192.168.1.6 netmask 255.255.255.0

I sprawdzamy czy zadziałało poprawnie:
[root@komp-1-4 network-scripts]# ip a
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 08:00:27:a0:76:a4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.5/24 brd 192.168.1.255 scope global secondary eth0:1
inet 192.168.1.6/24 brd 192.168.1.255 scope global secondary eth0:2
inet6 fe80::a00:27ff:fea0:76a4/64 scope link

Adresy IP podniesione za pomocą polecenia ifconfig po restarcie nie zostaną automatycznie uruchomione.


Z ciekawszy rzeczy można też wyświetlić tablicę routingu przez polecenie route.
Co jest ciekawe przeważnie w listingu tego polecenia nie ma podanej bramy domyślnej:
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 1 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
default NOT-AVIABLE-ERR 0.0.0.0 UG 0 0 0 eth0

Bramę domyślną można dodać za pomocą następującego polecenia (to polecenie wykonuję gdy nie mam już pomysłów jak sprawić aby dana sieciówka pingowała poprawnie):
route add -net default gw 192.168.1.1 dev eth0

Można też dodać za pomocą polecenia route trasę do wybranego hosta lub sieci:
route add -host 212.77.100.101 dev eth0
route add -net 212.77.100.101 netmask 255.255.255.0 gw 10.0.10.2 dev eth0

Przydatne mogą się również okazać polecenia ip np.:
ip addr add 212.77.100.101/24 dev eth0
czyli uruchomienie eth0 z numerem ip 212.77.100.101 z maską 24

ip addr add 212.77.100.102/24 dev eth0
czyli dodanie aliasu do już skonfigurowanie eth0

ip ro add 212.77.100.200/32 dev eth2
dodanie trasy do komputera o numerze ip 212.77.100.200 przez interfejs eth2

ip ro add 172.16.0.0/16 via 10.0.10.2 dev eth1
dodanie trasy do sieci 172.16.0.0 przez bramę 10.0.10.2 i interfejs eth1.

ip ro add default via 10.0.10.1 dev eth0
dodanie trasy domyślnej przez numer ip 10.0.10.1 i eth0


Często zdarza się, że przenosimy serwis internetowy na inny serwer i chcemy sprawdzić czy wszystko działa poprawnie ale nie możemy, ponieważ domena w dalszym ciągu wskazuje na stary serwer.
Wówczas należy przeprowadzić edycję pliku /etc/hosts.

W celu zademonstrowania jak to działa pingujemy wp.pl:
ping wp.pl
PING wp.pl (212.77.100.101) 56(84) bytes of data.
64 bytes from www.wp.pl (212.77.100.101): icmp_seq=1 ttl=250 time=26.2 ms

Edytujemy /etc/hosts i wstawiamy:
100.100.100.100 wp.pl

Pingujemy wp.pl ponownie:
ping wp.pl
PING wp.pl (100.100.100.100) 56(84) bytes of data.

Na łyndowsie też znajduje się plik hosts (lub host) ale jego dokładnej lokalizacji niestety w tej chwili nie jestem w stanie przytoczyć.

Z przydatnych rzeczy to można czasami zmienić mac adres karty sieciowej (gdy administrator sieci jest lammerem to można się pod kogoś podszyć i korzystać z netu za free - przynajmniej dopóki nas nie złapią):
ifconfig eth0 down
ifconfig eth0 hw ether 00:80:48:BA:d1:30
ifconfig eth0 up

Przydatne też może okazać się znajomość programów typu wireshark, tcpdump, iptraf oraz netstat ale to pewnie po opiszę w najbliższej przyszłości.


Acha jeżeli jesteśmy niedobrzy to możemy wprowadzić kartę w tryb nasłuchu (zasysamy wszystkie pakiety, nie tylko te kierowane do nas):
ifconfig eth0 promisc


A jeżeli chcemy się dowiedzieć jak mieć darmowy internet w sieciach z dhcp (nie polecam, bo to przecież kradzież jest - ale w celach edukacyjnych zawsze można poczytać):
http://newbie.linux.pl/wydruk.php?wydruk=187&show=artykul

piątek, 2 lipca 2010

Skopiowałem dane na pendriva, czemu ich na nim nie ma?

Niektóre osoby mają tendencję do wyciągania pendriva z portu usb, bez jego wcześniejszego odmontowania i później dziwią się dlaczego nie ma na nim danych albo dlaczego nagle przestał działać.

W linux'ie czasami dane zamiast być skopiowane bezpośrednio na dysk są jeszcze przez jakiś czas przetrzymywane w buforze, więc jeśli nie odmontujesz urządzenia to mogą one nie zostać zapisane.
Odmontować pendriva można przez polecenie umount /dev/nazwa_urządzenia

Inną metodą na upewnienie się, że na pendrive są już zapisane dane jest wykonanie polecenia sync.

Osoby którym bardzo zależy na danych mogą wykonywać najpierw sync i później umount.

Z ciekawostek: żeby uruchomić polecnie sync nie trzeba mieć uprawnień administratora, ale dla polecenia umount i mount te uprawnienia są niezbędne.

Jak zmienić runlevel w linux'ie, jak zmienić hasło root'a

Czasami chcemy zmienić hasło root'a, bo gdzieś nam przepadło w zakamarkach pamięci (runlevel 1, inaczej zwany single user), czasami chcemy odpalić jakiś zasobożerny skrypt więc nie chcemy aby uruchomione środowisko graficzne wszystko spowalniało (runlevel 3), czasami chcemy pracować w środowisku graficznym (runlevel 5), innym razem kogoś nie lubimy i chcemy żeby mu się restartował komputer non stop (runlevel 6).

Zmienić runlevel w centOS'ie można w następujący sposób:
1. Edycja pliku /etc/inittab, odnajdujemy wiersz id:3:initdefault i zmieniamy na dowolny numer (1-5).
2. Edycja pliku /etc/grub.conf, odnajdujemy np. wiersz:
title CentOS (2.6.18-194.3.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.3.1.el5 ro root=LABEL=/
i zmieniamy na root=LABEL=/ single
(system uruchomi się w runlevel 1 i będzie można zmienić hasło root'a),
3. Podczas uruchamiania systemu wciskamy dowolny klawisz aby pojawiło się okno z możliwością wyboru kernel'a, najeżdzamy na wybrany i wciskamy e (od edit), wpisujemy single wciskamy enter i wciskamy b (od boot). Gdy system uruchomi się w trybie jedno-użytkownikowym (chyba nowe słowo wynalazłem), wpisujemy passwd, wpisujemy dwa razy hasło, wciskamy enter i zmieniliśmy właśnie hasło root'a (gdy w systemie są zaszyfrowane partycje ta procedura nie zadziała).

Podane informacje działają w systemach Red Hat'o pochodnych takich jak centOS, Fedora itp.



W celu wyświetlania, w którym trybie działamy należy wpisać: runlevel w konsoli.

Runlevels

Słów kilka o trybach pracy maszyn z Linux'em na pokładzie:
0 — Halt (zatrzymanie systemu, jeżeli chcemy zatrzymać system wystarczy wpisać init 0),
1 — Single-user mode (system nie pyta o hasło root'a, nie działa sieć, może zalogować się tylko jeden użytkownik),
2 — Not used (user-definable),(można samemu ustawić, jeszcze się nie spotkałem żeby ktoś z tego korzystał),
3 — Full multi-user mode (może zalogować się wielu użytkowników, sieć działa, w tej opcji system jest uruchomiony bez środowiska graficznego),
4 — Not used (user-definable), (też można zdefiniować),
5 — Full multi-user mode (with an X-based login screen), (to samo co wersja 3 tylko z uruchomionym środowiskiem graficznym),
6 — Reboot (gdy chcemy zrestartować system wystarczy wpisać init 6, dobre do robienia kawałów znajomym :)).