E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\35.DOC 579
Rozdzia³ 35. ¨ Użytkownicy i konta 579
Tim Parker
W tym rozdziale:
u Konto administratora
u Konta użytkowników – plik /etc/passwd
u Użytkownicy systemowi
u Dodawanie nowego konta
u Usuwanie kont
u Grupy
u Polecenie su
Każdy użytkownik ma dostęp do systemu linuxowego tylko poprzez swoje konto. Każde konto użytkownika musi zostać skonfigurowane przez administratora (za wyjątkiem konta root, które jest zakładane podczas instalacji systemu). Choć z niektórych systemów linuxowych korzysta tylko jeden użytkownik, nie powinien on używać na co dzień konta root. W wielu systemach możliwa jest równoczesna praca kilku użytkowników, czy to dzięki konsolom wirtualnym, czy też przez modem, czy za pomocą terminalu. Umiejętność konfigurowania i zarządzania kontami użytkowników jest ważnym aspektem administrowania systemem.
W tym rozdziale przyjrzymy się następującym zagadnieniom:
u konto administratora (root),
u dodawanie nowych kont,
u usuwanie kont,
u grupy użytkowników,
u zarządzanie grupami.
W trakcie instalowania systemu linuxowego tworzone jest jedno konto – konto administratora, o identyfikatorze root. Podczas gdy większość kont użytkowników jest zabezpieczona przed wyrządzeniem jakichkolwiek szkód w systemie, użytkownik root może za pomocą jednego polecenia zniszczyć cały system. Na użytkownika root nie są nałożone żadne ograniczenia.
Możliwości, jakie oferuje konto root, mogą uzależniać. Nie trzeba martwić się o prawa dostępu czy konfigurację oprogramowania; można zrobić wszystko i wszędzie. To powoduje, że większość nowych użytkowników używa konta root do codziennej pracy. Zwykle porzucają ten zwyczaj w momencie, gdy przez przypadek uda im się zniszczyć cały system. Brak ograniczeń nałożonych na konto root pociąga za sobą brak jakichkolwiek zabezpieczeń. Z tego powodu konto root powinno być używane tylko do zadań o charakterze administracyjnym. Nie używaj konta root do codziennej pracy!
Konto root powinno być używane tylko wtedy, gdy sytuacja naprawdę tego wymaga. Dobrym pomysłem jest zmiana znaku zachęty dla użytkownika root, dzięki czemu będziesz widział, że jesteś zalogowany jako root i być może zastanowisz się przed wydaniem jakiegoś niefortunnego polecenia. Możesz to zrobić ustalając odpowiednio wartość zmiennej środowiskowej PS – dokładniejsze informacje na ten temat znajdziesz w rozdziale 14. „Programowanie w języku powłoki”. Jeśli systemu używasz tylko Ty i uda Ci się go przez przypadek zniszczyć – to jeszcze niewielki problem. O wiele gorzej sytuacja wygląda, gdy zniszczysz efekty pracy innych użytkowników…
Mając na uwadze wszystkie powyższe ostrzeżenia, nie masz chyba wątpliwości, że pierwsze, co powinieneś zrobić po zainstalowaniu systemu, to założenie dla siebie konta do codziennego użytku. Hasło użytkownika root nie może być łatwe do odgadnięcia dla innych użytkowników systemu. Powinieneś również w miarę regularnie je zmieniać.
Warto także założyć konta służące do prac administracyjnych nie wymagających aż tak szerokich uprawnień, jakie oferuje root, na przykład do tworzenia kopii zapasowych na taśmach. Użytkownik ten może mieć np. dostęp do całego systemu plików (tak jak root), ale bez prawa zapisu. Podobne konta mogą zostać stworzone do obsługi poczty, Internetu itp. Przemyśl dobrze przywileje, jakie trzeba nadać każdemu użytkownikowi – dzięki temu system będzie bezpieczniejszy i unikniesz przypadkowych uszkodzeń.
Jeśli chodzi o ścisłość, konto administratora nie musi nazywać się root. Może mieć dowolną nazwę, ale jego identyfikator numeryczny musi być ustawiony na 0 (w pliku /etc/passwd).
Nawet jeśli jesteś jedynym użytkownikiem systemu, warto wiedzieć kilka rzeczy o kontach użytkowników i zarządzaniu nimi, choćby dlatego, że powinieneś posiadać konto do codziennej pracy (inne niż root). Musisz więc umieć dodać do systemu nowego użytkownika. Jeśli inne osoby również będą korzystać z systemu, czy to przez modem, czy też bezpośrednio, powinieneś założyć dla każdej z nich osobne konto. Można też utworzyć konta ogólnodostępne, np. dla przyjaciół tylko okazyjnie korzystających z Twojego systemu.
Każda osoba używająca systemu powinna posiadać własny identyfikator oraz hasło. Jedynym wyjątkiem mogą być użytkownicy typu guest, którzy powinni mieć jednak bardzo ograniczone prawa dostępu. Dzięki założeniu osobnego konta dla każdego użytkownika znacznie poprawia się bezpieczeństwo systemu. Jako administrator masz również lepsze pojęcie o tym, kto i w jakim celu z niego korzysta.
Wszystkie informacje o kontach użytkowników przechowywane są w pliku /etc/passwd. Jego właścicielem powinien być root, a identyfikator grupy powinien być ustawiony na 0 (grupa root albo system, zależnie od wpisu w pliku /etc/groups). Prawa dostępu powinny być tak ustawione, by zapisywać do tego pliku mógł tylko root, natomiast prawo odczytu powinni mieć wszyscy użytkownicy (o grupach i prawach dostępu będziemy jeszcze mówić w dalszej części tego podrozdziału). Wpisy w pliku /etc/passwd mają następujący format:
nazwa_uzytkownika:hasło:ID_użytkownika:ID_grupy:komentarz:katalog_domowy:powłoka_domyślna
Listing 35.1 przedstawia przykładową zawartość takiego pliku.
Listing 35.1. Plik /etc/passwd utworzony podczas instalacji Linuxa
root:jyGSAETCyfRDE:0:0:root:/root:/bin/bashbin:*:1:1:bin:/bin:daemon:*:2:2:daemon:/sbin:adm:*:3:4:adm:/var/adm:lp:*:4:7:lp:/var/spool/lpd:sync:*:5:0:sync:/sbin:/bin/syncshutdown:*:6:0:shutdown:/sbin:/sbin/shutdownhalt:*:7:0:halt:/sbin:/sbin/haltmail:*:8:12:mail:/var/spool/mail:news:*:9:13:news:/var/spool/news:uucp:*:10:14:uucp:/var/spool/uucp:operator:*:11:0:operator:/root:games:*:12:100:games:/usr/games:gopher:*:13:30:gopher:/usr/lib/gopher-data:ftp:*:140:50:FTP User:/home/ftp:nobody:*:-1:100:Nobody:/:
Każdy wiersz składa się z siedmiu pól rozdzielonych dwukropkami. Jeśli dane pole nie ma zawierać żadnych informacji, dwukropki muszą pozostać (tzn. każdy wiersz musi zawierać sześć dwukropków). Pola te mają następujące funkcje:
nazwa_uzytkownika: niepowtarzalny identyfikator użytkownika;
hasło: hasło dostępu do systemu, zakodowane tak, by jego odczytanie nie było możliwe;
ID_użytkownika: identyfikator numeryczny, inny dla każdego użytkownika, używany przez system;
ID_grupy: liczba określająca grupę, do której należy użytkownik;
komentarz: zwykle prawdziwe imię i nazwisko użytkownika, ale można tu wpisać dowolny tekst;
katalog_domowy: katalog, w którym użytkownik znajdzie się po zalogowaniu;
powłoka_domyślna program uruchamiany po zakończeniu procesu logowania.
Każdemu polu przyjrzymy się nieco dokładniej. Powinieneś orientować się, w jaki sposób są one wykorzystywane przez programy. Taki plik, jak /etc/passwd, używany jest nie tylko w systemie Linux, ale we wszystkich systemach UNIX-owych.
Identyfikatorem użytkownika może być dowolny tekst, zwykle o długości do ośmiu znaków, inny dla każdego użytkownika. Ponieważ jest on podstawą identyfikacji podczas pracy w sieci, powinien być prosty i oczywisty; nie od rzeczy jest na przykład kombinacja taka jak pierwsza litera imienia + nazwisko lub jego część (np. tszydl czy wkuc) – taka konwencja jest dość często stosowana w większych systemach.
Zauważ, że wszystkie litery w powyższych przykładach są małe. Wielkość liter jest istotna w systemach UNIX-owych, więc identyfikator tszydl nie jest tożsamy z TSzydl. Zwykle używa się identyfikatorów składających się tylko z małych liter. Dozwolone, choć rzadko używane, są podkreślenia, przecinki, cyfry i niektóre inne symbole.
W niewielkich systemach często używa się identyfikatorów brzmiących nieco bardziej przyjaźnie, na przykład michal czy iwona. Jeśli dwóch użytkowników nosi te same imiona, trzeba znaleźć sposób na ich rozróżnienie (np. tomek i tom).
Niektórzy użytkownicy wolą, żeby ich identyfikatorem było przezwisko czy cokolwiek innego. Wszystko jest w porządku w niewielkich sieciach i do zastosowań „rozrywkowych”, ale staje się dziwactwem w pracy, gdzie tylko utrudnia życie innym osobom próbującym skontaktować się z danym użytkownikiem.
System przechowuje hasła użytkowników w postaci zakodowanej. Hasło może być zmienione przez użytkownika po zalogowaniu się (co wymaga znajomości tegoż hasła) lub też przez użytkownika root. Pole pliku /etc/passwd zawierające hasło jest bardzo wrażliwe na wszelkiego rodzaju modyfikacje, które w zasadzie zawsze powodują zablokowanie dostępu do danego konta (aż do zmiany hasła przez administratora systemu).
W niektórych wersjach UNIX-a dla zapewnienia większego bezpieczeństwa hasła nie są przechowywane w pliku /etc/passwd. Jeśli w Twoim systemie zamiast zakodowanych haseł w pliku passwd znajduje się znak x, oznacza to, że istnieje inny plik, w którym zapisane są ich rzeczywiste wartości (ta technika nazywa się password shadowing – ukrywanie haseł).
Systemy korzystające z Yellow Pages lub Network Information Service nie wykorzystują tego pola, a zamiast tego używają wspólnego pliku zawierającego dane o użytkownikach. Pozwala to każdemu użytkownikowi na zalogowanie się do systemu za pomocą dowolnego komputera podłączonego do sieci.
Podczas logowania program login sprawdza, czy wprowadzone hasło odpowiada zakodowanemu. Jeśli nie, użytkownik nie uzyska dostępu do systemu.
Pole to może również być wykorzystane do ograniczenia dostępu do systemu. Jeśli dane konto nie powinno być używane, wystarczy do pola zawierającego hasło wprowadzić pojedynczą gwiazdkę (*). Ma to zastosowanie również w przypadku użytkowników systemowych, takich jak lp czy sync. Gwiazdka w polu hasła spowoduje zablokowanie dostępu do systemu dla określonego użytkownika.
Można pozostawić to pole puste, co daje wszystkim możliwość dostania się do systemu bez podawania hasła. Użytkownik, który ma taką możliwość, powinien mieć bardzo ograniczone prawa dostępu do plików w systemie, ponieważ każdy może zalogować się używając jego identyfikatora. Ogólnie nie należy jednak pozostawiać pustych haseł, chyba że używasz systemu wyłącznie do zabawy i w systemie plików nie są zapisane żadne istotne dane.
Nie powinieneś próbować wprowadzić zakodowanego hasła do pliku /etc/passwd ręcznie. Nie jest możliwe odtworzenie metody kodowania haseł, więc prawie na pewno skończy się to zablokowaniem dostępu do danego konta (aż do zmiany hasła przez administratora systemu).
Z każdym identyfikatorem tekstowym użytkownika związany jest również identyfikator numeryczny. To on, a nie identyfikator tekstowy, jest używany przez system do rozróżniania użytkowników. Programy wyświetlające informacje o użytkownikach dokonują translacji numeru na odpowiadający mu identyfikator tekstowy (na podstawie zawartości pliku /etc/passwd) dla wygody czytającego.
W większości systemów UNIX-owych numery użytkowników mają wartości od 100 w górę, ponieważ numery od 0 do 99 zarezerwowane są dla użytkowników systemowych. W podanym wcześniej przykładowym pliku /etc/passwd można zauważyć, że użytkownikowi root przypisany jest numer 0 – jest to reguła obowiązująca w każdym systemie. Użytkownikowi nobody (używanemu do obsługi sieciowych systemów plików NFS) przypisany jest numer – 1, który jest nieprawidłowy. Przy zakładaniu nowych kont dobrze jest numerować użytkowników kolejno, rozpoczynając od wartości 100, następnie 101 itd.
Identyfikator grupy zapisany w pliku /etc/passwd jest również wartością liczbową. Decyduje on o tym, do której grupy należał będzie dany użytkownik po zalogowaniu. Grupy używane są dla ułatwienia zarządzania prawami dostępu do plików ale w wielu małych systemach ich możliwości nie są wykorzystywane. Numery grup rozpoczynają się od 0. Grupa o nazwie users zwykle posiada numer 100.
Identyfikator grupy używany jest do weryfikowania praw dostępu do plików, oraz przy tworzeniu i modyfikowaniu plików. Jeśli w Twoim systemie funkcjonuje tylko jedna grupa użytkowników, nie musisz martwić się o przydzielanie prawidłowych wartości identyfikatorów grupy. Jeśli chcesz założyć kilka grup, musisz również zmodyfikować plik /etc/group.
Pole komentarza używane jest przez administratora systemu po to, aby wpis można było łatwiej zidentyfikować. Zwykle zawiera ono prawdziwe imię i nazwisko użytkownika, czasem również wydział czy numer ewidencyjny. Nazywane jest czasem polem GECOS – nazwa ta pochodzi od pierwszego systemu, w którym go używano.
Niektóre programy bazują na informacjach zapisanych w tym polu przy wyświetlaniu danych o użytkownikach, nie należy więc wpisywać tam żadnych poufnych danych. Systemy poczty na przykład informują na jego podstawie o tym, kto wysłał daną wiadomość. Choć nie trzeba używać tego pola, w większych systemach ułatwia ono życie zarówno administratorowi, jak i innym użytkownikom.
Pole to określa, w jakim katalogu będzie znajdował się użytkownik po zalogowaniu się do systemu. Każdy użytkownik powinien posiadać własny katalog domowy, w którym nie są na niego nałożone żadne ograniczenia. W nim zapisywane są pliki konfiguracyjne różnych programów. Na ten katalog powinna wskazywać wartość zmiennej środowiskowej HOME.
...
Wolf-1