Linux Budowa i działanie systemu
Transkrypt
Linux Budowa i działanie systemu
Linux Budowa i działanie systemu System operacyjny Unix - Model warstwowy systemu W modelu tym dzieli się system na 4 warstwy: jądro, biblioteki, powłoka i programy. Jądro/Kernel • zawiera m.in. program szeregujący oraz sterowniki urządzeń • zarządza pamięcią operacyjną • w nowszych systemach sterowniki rzadziej występujących urządzeń dostępne są w postaci zewnętrznych modułów, które moŜna wybiórczo załadować do jądra - dzięki temu jego rozmiary są mniejsze • jądro ma bezpośredni dostęp do wszystkich zasobów komputera Biblioteki • zawierają zestawy podprogramów (zwykle napisanych w języku C), wykonujących róŜne, często stosowane, operacje (mogą to być np. zestawy funkcji matematycznych, procedury, umoŜliwiające obsługą monitora czy teŜ operacje na dysku) • biblioteki te są zwykle dołączane do programów na etapie ich konsolidacji (program, np. w języku C, przed uruchomieniem zostaje poddany kompilacji, a następnie konsolidacji) • taka statyczna konsolidacja powoduje, Ŝe dana biblioteka jest dołączana do kaŜdego z korzystających z niej programów - nawet wtedy, gdy uruchamiane są one jednocześnie w systemie; powoduje to znaczną zajętość pamięci operacyjnej Powłoka • nazwa pochodzi stąd, Ŝe warstwa ta oddziela wewnętrzna część systemu operacyjnego od uŜytkownika • powłoka zawiera interpreter poleceń, który umoŜliwia komunikację z uŜytkownikiem (jest to odpowiednik programu command.com z DOS’a) • interpreter poleceń uruchamia polecenia systemu operacyjnego oraz programy uŜytkowe Programy • procesy uruchamiane przez uŜytkownika • zarządzane przez program szeregujący jądra • mogą być przerwane w dowolnym momencie, np. komendą - kill • kaŜdy ma przydzielony odpowiedni obszar pamięci i priorytet • jeśli proces uŜytkownika próbuje dostać sie do cudzego obszaru pamięci, zostaje przerwany, a system wyświetla komunikat: segmentation fault • bieŜąca zawartość pamięci procesu moŜe zostać zapisana na dysku w pliku o nazwie core (nazwa od słów core dump, czyli zrzut pamięci) • analiza zawartości tego pliku moŜe pomóc programiście w wykryciu przyczyny wystąpienia błędu Schemat blokowy Struktura katalogów Rozbudowana struktura katalogów Linuxa jest pogrupowana w logiczne części. KaŜdy katalog zawiera pliki powiązane ze sobą logicznie. Struktura katalogu głównego jest następująca: /bin - wykonywalne pliki binarne, niezbędne do pracy zarówno w trybie wielouŜytkownikowym, jak i w awaryjnym trybie jednego uŜytkownika, /boot - jądro systemu oraz pliki niezbędne przy jego uruchomieniu, /dev - pliki urządzeń, stanowiące interfejs do sterowników w jądrze, /etc - konfiguracja systemu /home - katalogi domowe uŜytkowników /lib - biblioteki systemowe /lost+found - pliki odnalezione podczas wykonywania testów dysku /mnt - katalog do którego zwykle mountowane są tymczasowe systemy plików takie jak dyskietka czy CD-ROM /proc - pseudosystem plików, odzwierciedlający stan procesów w systemie, /root - katalog domowy uŜytkownika root, /sbin - wykonywalne pliki binarne, niezbędne do pracy systemu zarówno w trybie wielouŜytkownikowym, jak równieŜ w trybie jednego uŜytkownika. Zawiera polecenia administracyjne, /tmp - pliki tymczasowe, /usr - pliki uŜytkowników, dodatki doinstalowywane do systemu itp. /var - pliki często zmieniane, np logi czy poczta /usr/X11R6 - pliki związane z systemem XWindow, /usr/bin - wykonywalne polecenia systemu Linux potrzebne do pracy w trybie wielouŜytkownikowym, /usr/dict - słownikowa lista wyrazów angielskich, uŜywana m.in. przy sprawdzaniu jakości hasła uŜytkownika, /usr/doc - dodatkowa dokumentacja, /usr/include - pliki nagłówkowe, /usr/info - dokumentacja dla polecenia info, /usr/lib - biblioteki systemowe, /usr/local - struktura katalogów przeznaczona dla potrzeb elementów instalowanych przez administratora systemu, /usr/man - pliki pomocy kontekstowej man, /usr/sbin - wykonywalne polecenia administracyjne systemu Linux potrzebne do pracy w trybie wielouŜytkownikowym, /usr/share - pliki wspólne, generalnie katalog zawiera dodatkowe informacje na temat niektórych poleceń, /usr/src - źródła do systemu i jądra, /usr/tmp - pliki tymczasowe. /var/catman - preformatowane strony pomocy kontekstowej man, /var/db - bazy danych, /var/lock - semafory uŜywane do komunikacji międzyprocesowej, /var/log - logi systemowe, /var/named - pliki serwera nazw (DNS), /var/nis - pliki systemu NIS, /var/run - pliki z danymi dotyczącymi numerów poszczególnych procesów w systemie, /var/spool - kolejki poczty, wydruków itp. /var/tmp - pliki tymczasowe. System plików i prawa dostępu ext2 (ang. Second Extended File System) – drugi rozszerzony system plików dla systemu Linux. Ext2 zastąpił rozszerzony system plików ext. Rozpoznanie uszkodzenia systemu plików (np. po załamaniu się systemu) następuje przy starcie systemu, co pozwala na automatyczne naprawianie szkód za pomocą oddzielnego programu (e2fsck), uszkodzone pliki zapisywane są w katalogu lost+found. System plików ext2 zawiera mechanizm zapobiegający znacznej fragmentacji danych, co zdarzało się podczas uŜywania poprzedniej jego wersji. Ext2 przy domyślnym rozmiarze bloku (4 KB) obsługuje partycje o wielkości do 16384 GB i pojedyncze pliki o wielkości do 2048 GB. Nazwy plików mogą mieć do 255 znaków długości. WaŜnym elementem systemu ext2 są wolne pola w strukturach danych – to dzięki nim między innymi, moŜliwa jest konwersja „w locie” do systemu ext3 – wykorzystuje on po prostu część z nich do przechowywania swoich danych. Budowa systemu plików: blok startowy (boot block) zawiera informacje potrzebne Linuksowi do startu (uzyskania dostępu do systemu plików) superblok (superblock) zawiera informacje o strukturze systemu plików lista i-węzłów (inode list) to lista adresów do tych bloków danych na których są zapisane rzeczywiste dane pliku. Wyjaśnienie: przed zapisaniem na dysku twardym plik jest dzielony na części określone przez rozmiar bloku danych. Po zdefiniowaniu adresów takich bloków w i-węzłach dane moŜna zapisać (lub potem odczytać). bloki danych (oraz bloki katalogów czyli data blocks) to części o stałym rozmiarze przestrzeni dyskowej przygotowane do wprowadzania i odczytu danych plików (katalogów). JeŜeli plik jest większy od jednego bloku danych, to jest dzielony i zapisany na powierzchni kilku bloków danych - adresy do takich bloków są notowane w i-węzłach. Natomiast, gdy wielkość pliku jest mniejsza niŜ blok danych, to wolna przestrzeń bloku danych marnuje się. chown – zmiana właściciela ls -l # chown root /var/run/httpd.pid -rw-rw-r-- 1 artur artur 0 Mar 4 13:01 test chmod <prawa> <nazwa pliku> u-user a-all g-group o-other r-read w-write x-execute chmod a+x test chmod 706 test 0 to - brak praw dostępu 1 to -x wykonywanie 2 to -w- zapis 3 to -wx zapis i wykonywanie 4 to r- odczyt 5 to r-x odczyt i wykonywanie 6 to rw- odczyt i zapis 7 to rwx odczyt, zapis, wykonywanie Dowiązania w systemie Linux Dowiązania często są przyrównywane do skrótów w systemie Windows. W rzeczywistości posiadają jednak znacznie większe moŜliwości, np.: tworzenie twardych, symbolicznych dowiązań, dowiązań do urządzeń, innych systemów etc. Jest jednak jedno "ale" - polecenie "ln" moŜe być nieobsługiwane przez niektóre systemy, na innych moŜe być ograniczone... Linki twarde posiadają te same rozmiary, te same numery iwęzłów. Są to po prostu inne nazwy tego samego pliku(obszaru dysku). Linki twarde są domyślnym typem dowiązań. Dowiązania symboliczne pozwalają na stworzenie dowiązań do pliku, który jest w innym systemie, na innym urządzeniu. Jako parametr przy wywołaniu "ln" podajemy "-s" np.: $ ln -s /mnt/hda1/wazne wazne_c FSCK fsck (skrót od file system check lub file system consistency check) - Uniksowy program do sprawdzania integralności systemu plików. Zwykle fsck jest uruchamiany podczas bootowania systemu, aby sprawdzić, czy system plików jest w dobrym stanie. JeŜeli nie jest, na przykład w wyniku spadku zasilania, fsck próbuje go naprawić. Na systemach plików, które nie obsługują księgowania, jak na przykład ext2, moŜe to trwać nawet przez wiele godzin, w zaleŜności od pojemności partycji. fsck moŜe być teŜ uruchomiony ręcznie przez administratora systemu, jeŜeli ten uzna, Ŝe to konieczne. Odpowiednikiem fsck dla Windows jest Scandisk. UŜytkownicy systemu root (z ang., dosłownie korzeń) to tradycyjna nazwa uniksowego konta, które ma pełną kontrolę nad systemem. Z załoŜenia konto root nie powinno być uŜywane do pracy, do której wystarczyłoby zwykłe konto z ograniczonymi uprawnieniami. Istotną sprawą jest zabezpieczenie tego konta silnym hasłem i zabezpieczenie przed nieautoryzowanym dostępem. Dobrze jest ograniczyć moŜliwość logowania na konto root i uŜywać poleceń su albo sudo. logowanie przez ssh blokujemy w Linuksie z mieniając w zbiorze /etc/ssh/sshd_config parametr PermitRootLogin z "yes" na "no". Konto root uprawnia do wykonywania takich operacji jak zmiana właściciela pliku czy otwarcie portu TCP/UDP z numerem poniŜej 1024. W innych systemach operacyjnych uŜywa się teŜ nazw takich jak toor, superuser, supervisor, Administrator, czy operator. Nazwa root funkcjonuje, jako określenie administratora systemu, zarówno w systemach UNIX, jak i pokrewnych (FreeBSD, GNU/Linux). UID (ang. User IDentifier) - jest to identyfikator uŜytkownika w systemie Unix. Reguły • root ma UID 0, • uŜytkownik nobody ma ostatni UID (zazwyczaj 32767), • UID-y od 1 do 100 są zarezerwowane dla systemu. Atrybuty uŜytkownika System przechowuje w pliku /etc/passwd następujące atrybuty kaŜdego zarejestrowanego uŜytkownika: nazwa - nazwa jednoznacznie identyfikująca konto uŜytkownika, identyfikator uŜytkownika UID - numer jednoznacznie identyfikujący uŜytkownika w systemie, identyfikator grupy GID - numer grupy, do której naleŜy uŜytkownik, katalog domowy - prywatny katalog uŜytkownika, w którym moŜe bezpiecznie przechowywać swoje pliki, zabezpieczone przed dostępem innych uŜytkowników, powłoka logowania - nazwa interpretera poleceń, który jest uruchamianypo zalogowaniu uŜytkownika. Powłoki - shell Wyświetlenie listy powłok: # cat /etc/shells /bin/bash /bin/csh /bin/sh /bin/tcsh uruchamiamy np.: csh wychodzimy: exit Drobne obliczenia z linii komend echo $[2*3-10] -4 a=12; b=3 Definiowanie własnych zmiennych c=a+b echo $c a+b let c=a+b echo $c 15 dmc=/home/user1/doc cd $dmc Aliasy i skrypty Wyświetlenie dostępnych aliasów: # alias alias cd..=‘cd ..’ alias l=‘ls -al’ ... Definiowanie aliasów: # alias md=‘mkdir’ # alias l=‘ls -l’ # alias um=‘umount –f /mnt/floppy’ # unalias l Dodawanie aliasów do pliku bashrc. TREŚĆ SKRYPTU #!/bin/sh TEKST="Hello world!" LICZBA=12 SUMA=$[$LICZBA+111] echo Tekst: $TEKST echo Liczba: $LICZBA echo Suma: $SUMA WYNIK SKRYPTU Tekst: Hello world! Liczba: 12 Suma: 123 Proces i jego strumienie WE dane PROCES WY dane Błędy deskryptor 0 – stdin – wejście standardowe deskryptor 1 – stdout – wyjście standardowe deskryptor 2 – stderr – wyjście standardowe błędów Operatory przekierowania > plik - wyjście std. jest kierowane do pliku a nie na ekran >> plik - identyczne jak > ale dopisuje do pliku < plik - jako wejście standartowe (zamiast klawiatury) zostanie otwarty plik 2 > plik – przekierowanie stderr do pliku 1 > &2 – przekierowuje 1 w to samo miejsce co 2 Przykłady ls -al >> lista.txt cat > plik ls -l /nie_istniejacy_katalog 2> /tmp/cos Filtrowanie - grep Podstawowe elementy wyraŜeń regularnych: Rodzaje . -dowolny pojedynczy znak; wieloznaczników Przykłady: $ -dopasuj poprzedzające wyraŜenie do końca wiersza; W większości przypadków uŜywane są dwa wieloznaczniki: grep 'Ala' plik -znajduje wyraz 'Ala' w pliku; ^ -dopasuj występujące po operatorze wyraŜenie do początku wiersza; grep 'A[lg]a' plik -znajduje wyraz 'Ala' lub 'Aga'; pojedyncze wieloznacznik lokalny –operator; zastępujący * -dopasuj zero lub więcej wyraŜeń znaku poprzedzający wystąpienie grepznaczenia 'A.a'znaku plikznaku -znajduje wyrazy takie jak 'Ala' 'Aga' itp; stosowany dowolnego (do jego oznaczania najczęściej \ -oznacza ominięcie specjalnego np:"\*"; jest znak'^Ala' zapytania (?)), wyraz 'Ala' na początku wersu; grep plik - znajduje [ ] -dopasuj dowolny znak w nawiasie; [-] -dopasuj dowolny znak z przedziału [0-9]; plik - znajduje wyraz 'Gogle', 'Google' itd; grep 'Go*gle' wieloznacznik ogólny – zastępujący dowolną liczbę dowolnych [^] -dopasuj znak, który nie znajduje sie w -nawiasie; grep '[0-9]' znajduje dowolny najczęściej ciąg znaków zstosowany zakresu od 0 jest do 9;znak znaków (do jego oznaczania gwiazdki (*)). ls -l | grep student spowoduje wyświetlenie zawartości tylko tych pozycji katalogu, gdzie znajduje się słowo "student" (czyli np. będących własnością studenta, posiadających słowo "student" w nazwie itp). cat zrodlo.c | grep include PowyŜsze polecenie wyświetli wszystkie linie pliku zrodlo.c, zawierające ciąg "include" Komendy shela Pliki konfiguracyjne /etc uŜytkownicy /etc/passwd zakodowane hasła /etc/shadow dyski / partycje /etc/fstab zamontowane sys. plików /etc/mtab allow (dozwolone) /etc/hosts.allow komputery niedopuszczone /etc/hosts.deny powłoki /etc/shells Demony Daemon – proces w systemach UNIX działający w tle bez konieczności interakcji z uŜytkownikiem. Zwykle nazwa takiego procesu odpowiada pełnionej funkcji z dołączoną na końcu literą d, np. automountd, ftpd, httpd, inetd, lockd, powerd, rlogind, sshd, statd, syslogd, talkd, telnetd, vold, xntpd, W systemach MS-DOS/PC-DOS podobną funkcjonalność oferują programy rezydentne (TSR – Terminate and Stay Resident), natomiast w Microsoft Windows analogiem jest usługa (service). Instalacja pakietów RPM (RPM Package Manager, dawniej Red Hat Package Manager) to program słuŜący do instalacji i zarządzania pakietami zawierającymi oprogramowanie, oraz nazwa tych pakietów (poniewaŜ mają one rozszerzenie .rpm). Pakiety RPM zawierają skompresowane (we wczesnych wersjach gzipem, w nowszych bzipem2) archiwum cpio zawierające oprogramowanie. Zawierają takŜe (w specjalnym pliku .spec) informacje na temat zawartości, m.in. tzw. zaleŜności (ang. dependencies) - czyli spis programów lub pakietów, które są wymagane do zainstalowania i poprawnej pracy pakietu (działa to takŜe w druga stronę - pakiety później zainstalowane wymagające danego pakietu, uniemoŜliwiają jego odinstalowanie). Program ten powstał na potrzeby dystrybucji Red Hat Linux, aktualnie jest uŜywany równieŜ w innych dystrybucjach (np. Fedora Core, SUSE, Mandrake, PLD). Nazwy pakietów RPM wprowadził ujednolicone nazwy plików. Przykładowy pakiet z GNU Gadu posiada nazwę gg2-2.2.7-1.athlon.rpm. Nazwa ta składa się z czterech członów w formacie plik-wersja-wersja_pakietu.architektura.rpm: gg2 - nazwa programu, 2.2.7 - wersja programu, 1 - wersja pakietu (moŜe istnieć kilka wersji pakietu dla jednej wersji programu), athlon - architektura (typ procesora) dla której pakiet jest przeznaczony (np. i386, Athlon, Alpha, PPC). rpm -q nazwa - czy taki pakiet jest zainstalowany? rpm -i --test nazwa.rpm - testuj rpm -ivh nazwa.rpm - instaluj i – instaluje v – komunikat h – zaawansowanie rpm -Uvh nazwa.rpm - aktualizacja rpm -e --test nazwa - deinstaluj DEB - Pakiety występujące w Debianie TGZ - archiwa tara; pakiety obecne w Slackware DEB: dpkg -i nazwa_pakietu.deb - instalacja apt-get remove nazwa_pakietu.deb - usunięcie dpkg --info nazwa_pakietu.deb - wyświetla informacje o pakiecie dpkg --reconfigure nazwa_pakietu.deb - ponowna konfiguracja pakietu dpkg --list nazwa_pakietu.deb - wyświatlenie listy pakietów o podanym wzorcu nazwy dpkg --unpack nazwa_pakietu - rozpakowanie pakietu TGZ: installpkg nazwa_pakietu.tgz - instalacja removepkg nazwa_pakietu.tgz - usunięcie Instalacja programów ze źródeł Rozpakowanie tar -zxvf gettheport.tar.gz gunzip plik.tar.gz bunzip2 plik.tar.bz2 configure sprawdza, czy w systemie zainstalowane są wymagane biblioteki lub programy, co ustrzeŜe Cię przed błędami kompilacji. makefile przeprowadza cały proces kompilacji programu. Dzieli się przewaŜnie na trzy części: make - sekcja kompilująca źródła install - sekcja instalująca skompilowane pliki uninstall - sekcja odinstalowująca pliki zainstalowane 1. Configure 2. Make 3. Make install Linux to Kernel (jądro systemu) plus ZBIÓR oprogramowania. Nie ma jednego systemu Linux, a tylko Kernel jest ustandaryzowany. W przeciwieństwie do znanego powszechnie Windows , Linux działa bez okienek. Wynika to zreszta z historii systemu, który pierwotnie był dostępny tylko w wersji tekstowej i wymagał znajomości komend unixowych. Okienka (np. KDE, Gnome) są są więc dodatkowym oprogramowaniem, tzw. "nakładką" na powłokę tekstową (shella). Kolejność czynności podczas startu systemu: 1. Pierwszy uruchamiany jest program LILO (ew. GRUB) Dane tam zawarte pozwalają procesorowi na ustawienie ekranu, uruchomienie właściwego Kernela itp. 2. Zostaje odpalony pierwszy proces Kernela, czyli init. Zawsze ma on identyfikator procesu PID o wartości 1. Większość dystrybucji Linuksa uŜywa init w oparciu o parametry zapisane w pliku /etc/inittab. Proces init odpala proces getty 3. Proces init montuje systemy plików (np. dysk twardy) zgodnie z danymi w pliku /etc/fstab, a to co zamontował odnotowuje w pliku /etc/mtab 4. Następnie są czytane skrypty startowe w katalogach /etc/rc.d/rc?.d/ (będą wówczas włączone demony w ramach osobnych procesów) oraz plik /etc/rc.d/sysinit . 5. W zaleŜności od widzimisie admina niektóre programy mogą być uruchomione za pomocą skryptów w katalogu /etc/xinetd/ . Mamy wówczas do czynienia z pracą programu nie w osobnym procesie (te zostały włączone podczas startu systemu za pośrednictwem w/w skryptów /etc/rc.d/rc?.d/*), a pod kontrolą nadserwera inetd (lub xinetd) 6. Uruchamiany jest skrypt /etc/rc.d/rc.local . W nim moŜemy (na końcu!) umieszczać odwołania do własnych, autorskich skryptów (np. uruchomienie połączenia SDI - patrz ostatnie wiersze pliku). 7. Gdy system zakończy ładowanie np. w 3 levelu (w powłoce tekstowej), to automatycznie zostanie włączony program login umoŜliwiający zalogowanie do systemu. Po zalogowaniu zostaną uruchomione skrypty konfigurujące shella. 8. JeŜeli system odpalił w 3 levelu (w powłoce tekstowej), a uŜytkownik zechce pracować w okienkach np. KDE, to wielki finał wykona skrypt /usr/bin/X11/startx (uruchamiany poprzez wpisanie zlecenia startx i wciśnięcie klawisza ENTER). 1) LILO LILO to program (bootloader) uruchamiający system Linux. Innym, choć na razie mniej popularnym bootloaderem jest GRUB. LILO jest umieszczane standardowo na dyskietce 1,44 lub w MBR dysku twardego, zaś konfig LILO czyli plik lilo.conf na dysku twardym, w katalogu /etc. 2) INIT Gdy program LILO ustawi parametry startowe, nastąpi uaktywnienie pierwszego procesu Kernela pod nazwą init, którego opcje są zapisane w pliku /etc/inittab . Oto przykład tego pliku #(Tu decydujemy, czy załadują się okienka 5 lub czy system zatrzyma ładowanie na powłoce tekstowej 3. Więcej informacji umieściłem poniŜej. W naszym przykładzie system wystartuje w okienkach (5) id:5:initdefault: #(wskazanie miejsca połoŜenia pliku rc.sysinit - jest to skrypt konfigurujący niektóre parametry startowe systemu) si::sysinit:/etc/rc.d/rc.sysinit Głównym zadaniem pliku /etc/inittab jest wskazanie poziomu startowego runlevel w wierszu id:5:initdefault: . Oczywiście moŜemy narzucić inny niŜ 5 poziom. Oto ich lista: 0 - halt, czyli zatrzymaj system (nie ustawiaj tego jako domyślny poziom ;) 1 - system jednouŜytkownikowy (będzie działać tylko pod jednym userem), bez funkcji sieciowych 2 - wielouŜytkownikowy system (tak jak poziom 3), ale z wyłączoną funkcją sieciową 3 - wielouŜytkownikowy system z funkcjami sieciowymi 4 - unused (nieuŜywane ) 5 - tak jak poziom 3, ale w okienkach (serwer X11) 6 - reboot czyli restart systemu (nie ustawiaj tego jako domyślny poziom ;) Poziom 0 i 6 jest uŜywany przez system do zwykłego restartu lub zatrzymania, więc nie powinno się go wpisywać do pliku /etc/inittab w wierszu id:?:initdefault: . Zobaczysz ten runlevel, gdy wydasz zwykłe zlecenie halt, reboot lub np. init 6, telinit 6. 3) Skrypty startowe /etc/rc.d/rc?.d/* w pracowni: komputery startują w poziomie 3, czyli powłoka tekstowa a okienka uruchamiamy zleceniem startx. NaleŜy wiedzieć, Ŝe w zaleŜności od tego czy system załaduje się w powłoce tekstowej, czy w okienkach (np. KDE) - są wykorzystywane inne pliki autostartu. JeŜeli wybraliśmy domyślny poziom działania nr 3, to automatycznie zmusiliśmy system, by w czasie startu odczytał zawartość katalogu /etc/rc.d/rc3.d/ (który działa podobnie jak autostart w windowsowm menu START- PROGRAMY- AUTOSTART). W przypadku startu systemu w okienkach (czyli poziomie 5), system odczyta zawartość katalogu /etc/rc.d/rc5.d/ . Znajdują się w nim linki do plików startowych demonów. Mają one w nazwie literkę S (czyli plik startowy) lub K (kill - koniec, zabity), nr oznaczający kolejność uruchomienia i nazwę demona. Skróty te moŜna śmiało ręcznie kasować (zamiast usuwania moŜna zmienić nazwę, dopisując na początku dolną kreskę "_") lub dodawać w zaleŜności od potrzeb. Skąd się tam biorą? Ano, podczas instalacji programu np sshd, w katalogu /etc/rc.d/init.d/ zostanie utworzony plik sshd umoŜliwiający uruchomienie danego demona. To właśnie do niego jest dowiązany skrót w /etc/rc.d/rc3.d/. 4) Superserwer inetd (xinetd) Superserwer inetd (xinetd) to narzędzie bardzo przydatne w systemie Linux. Jego zaletą jest umiejętność nasłuchiwania na wybranych portach i uruchamiania danej usługi w razie potrzeby. Weźmy przykład: sshd. MoŜna go odpalić jako osobny proces standalone wówczas sshd będzie pracował jako demon i zostanie aktywny CAŁY CZAS, nawet gdy nie będzie prób nawiązania połączenia. Z punktu widzenia oszczędności zasobami komputera, to rozrzutne choć umoŜliwiające natychmiastową reakcję rozwiązanie. MoŜna teŜ uruchomić sshd pod inetd (xinetd) i wówczas nasz superserwer będzie się czaił na porcie 22, a gdy usłyszy nawoływanie do połączenia - samoczynnie uruchomi nieaktywnego dotychczas demona sshd. Niestety, wydłuŜa się wówczas czas oczekiwania na uruchomienie i reakcję. Serwer inetd (xinetd) ustala nr portu pobierając dane z pliku /etc/services. Plik ten zawiera listę wszystkich usług sieciowych wraz z odpowiadającymi im portami. Podczas instalowania demonów (np. proftpd, sshd itd.) tworzone są w katalogu /etc/xinetd.d pliki konfiguracyjne o tytułach zawierających nazwę demona. Po wyedytowaniu dowolnego pliku, znajdziesz parametr disable (wyłączone). Decyduje on, czy demon będzie podporządkowany xinetd (opcja no) lub czy włączy się jako jako samodzielny proces (opcja yes). Demona np. sshd pracującego pod xinetd uruchomimy (po dokonaniu zmian w katalogu /etc/xinetd.d) resetując superserwer zleceniem: kilall -HUP xinetd lub /etc/rc.d/xinetd restart 5) Skrypt /etc/rc.d/rc.local Mamy włączony system. Działają demony, interfejsy. Został ostatni główny skrypt startowy rc.local, w którym informatycy opiekujący się daną dystrybucją Linuksa umieszczają ostatnie szlifujące konfigurację zlecenia. 6) Skrypty konfigurujące shella Proces uruchamiania shella dla danego usera jest skomplikowany. Wspomniałem o tym na początku strony. Nas interesuje co się dzieje od chwili, gdy program getty zaczyna proces przygotowania konsoli do uŜycia uruchamiając odpowiednie programy. Program login pozwolił wpisać nazwę usera i sprawdził hasło. Z pliku /etc/passwd oraz passwd- jest pobierany rodzaj shella przypisany danemu userowi (plik /etc/shells zawiera listę wszystkich, dostępnych, systemowych shelli). Po ustaleniu rodzaju shella (w naszym przypadku bash) jest czytany plik /etc/profile Następnie ustalana jest zmienna PATH zgodnie z zawartością pliku ~/ .bash_profile lub jeŜeli go nie ma, to ~/bash_login lub jeŜeli ich nie ma to ~/.profile Pozostaje jeszcze plik ~/ bashrc , który współpracuje z plikiem /etc/bashrc 7) Skrypt /usr/bin/X11/startx Przyjmuję, Ŝe jesteśmy zalogowani w 3 levelu, czyli działamy w powłoce tekstowej. JeŜeli mamy prawa do odpowiednich plików, to moŜemy zleceniem startx uruchomić okienka. Źródła Ćwiczenia z systemu Linux, Leszek Madeja, Mikom 1999 http://www.eioba.pl/c150/linux http://zsk.tech.us.edu.pl/ogloszenia/romanek/5_7.html http://pl.wikipedia.org/ http://rainbow.mimuw.edu.pl/SO/Linux/