Linux735


Rozpoczynanie pracy w systemie
Do spisu tresci tematu 7




Rozpoczynanie pracy w systemie

Za umozliwienie uzytkownikowi wejscia do systemu odpowiedzialne sa 2 programy:
Getty - jest to program otwierajacy linie terminalowa i czekajacy az ktos
wprowadzi identyfikator.
Jest on uruchamiany przez proces INIT na samym poczatku dzialania systemu.Algorytm dzialania programu "agetty" jest nieskomplikowany.

Otworz terminal tak, aby byl przypisany do deskryptorow o numerach 0,1,2 (stdin,stdout,stderr)
Ustaw parametry jego pracy (glownie dotyczy to linii terminalowych zwiazanych z portami szeregowymi)
Pobierz identyfikator uzytkownika (get_logname(...)) Tu ciekawostka: Jesli uzytkownik wprowadzi swoj identyfikator duzymi literami, to ten program zmieni je na male (ale WSZYSTKIE litery musza byc wprowadzone jako wielkie)
Ustawia koncowe parametry pracy terminala (na "normalne")
Wywoluje program "login" podajac mu, jako parametr wczytany identyfikator uzytkownika



Drugim programem jest "login" Jego algorytm jest nastepujacy:

Sprawdz parametry wywolania (skladniowo,tzn. czy opcje ktore dostalismy pasuja do jakiegos wzorca)
W petli nieskonczonej wykonuj co nastepuje:
Jesli konieczne, pobierz identyfikator uzytkownika (czasami to nie jest potrzebne, bo mozemy dostac wlasciwy identyfikator uzytkownika jako parametr wywolania)
Z pliku z haslami odczytaj pole odpowiadajace temu identyfikatorowi
Ustaw identyfikator grupy i uzytkownika na 0 (czyli nadzorcy) (Nie wiem po co; przeciez powinnismy byc tak wlasnie wywolani ??)
Jesli identyfikator nie jest identyfikatorem nadzorcy, sprawdz czy uzytkownik nie stracil prawa do zalogowania sie (np. za duzo nieudanych prob)
Jesli identyfikator jest rowny identyfikatorowi nadzorcy to sprawdz czy uzytkownik loguje sie z "bezpiecznego" terminala (rootterm(...)) jesli nie, to wyswietl wlasciwy komunikat i przejdz do nastepnego obrotu petli
Pobierz haslo
Zakoduj je
Porownaj to co wyszlo z odpowiednim rekordem w naszym polu pobranym z pliku z haslami .
Wykonaj petelke ktorej liczba obrotow jest uzalezniona od ilosci nieudanych prob; ponadto jesli bylo wiecej niz 10 prob, zakoncz dzialanie.
Jesli wszystko sie udalo to uaktualnij pliki zawierajace informacje o dokonanych wejsciach do systemu (utmp i wtmp), ustaw odpowiednio identyfikator grupy i uzytkownika i uruchom interpretator polecen uzytkownika


Ktos moglby sie spytac dlaczego uzywa sie tutaj 2 programow, zamiast jednego. Odpowiedz brzmi: Pierwszym z tych programow moze byc program otwierajacy konsole jako terminal, moze tez otwierac urzadzenie podlaczone do linii szeregowej; dzieki rozdzieleniu zajmowania terminali isprawdzania poprawnosci mamy wieksza elastycznosc.
Uwaga: Prosze zauwazyc, ze to co jest tutaj napisane jest to omowienie 2 zupelnie niezaleznych od jadra programow. Dlatego prosze sie nie zdziwic gdy wezmiece zrodla wlasnego getty i okaze sie, ze cos jest robione nieco inaczej niz tu jest napisane.
Tu jescze jedna uwaga: Jak zapewne to zostanie powiedziane w temacie 10 proces getty ma "atrybut" (?) respawn, gdy jest uruchamiany przez init. Dzieki temu nie musimy sie martwic o wznawianie tych procesow, gdy proba wejscia do systemu skonczy sie niepowodzeniem lub gdy uzytkownik skonczy prace - init zrobi to automatycznie.


Autorzy: Kamil Jonca i Piotr Suchodol







Wyszukiwarka

Podobne podstrony:
Linux714 (3)
Linux714
linux721
Linux712 (4)
Linux736 (4)
Linux736 (3)
Linux722 (4)
Linux713 (2)

więcej podobnych podstron