Konta użytkowników – plik /etc/passwd
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.
Wpisy w pliku /etc/passwd mają następujący format:
nazwa_uzytkownika:hasło:ID_użytkownika:ID_grupy:komentarz:katalog_domowy:powło
ka_domyślna
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.
Identyfikatory użytkowników
Identyfikatorem użytkownika może być dowolny tekst, inny dla każdego użytkownika.
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.
Hasła
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)
Numeryczny identyfikator użytkownika
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
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.
Komentarz
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.
Katalog domowy
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 konfiguracyjneróżnych programów. Na ten katalog powinna wskazywać wartość zmiennej środowiskowej HOME.
Zwykle wszystkie katalogi domowe użytkowników zebrane są w jednym miejscu. W systemie Linux jest to przeważnie katalog /home.
Powłoka domyślna
Pole określające powłokę domyślną zawiera nazwę programu, który zostanie uruchomiony po zakończeniu logowania. W większości przypadków jest to interpreter poleceń bash czy tcsh, ale może
to być dowolna aplikacja, taka jak program do obsługi poczty itp. – na przykład dla użytkownika uucp jest to program uucp. Jeśli pole to pozostawione jest puste, system uruchomi interpreter domyślny (zwykle bash, ale zależy to od konfiguracji systemu).
Użytkownicy systemowi
Podany wcześniej przykładowy plik /etc/passwd zawiera kilkanaście wpisów, wprowadzonych przez system podczas instalacji. Wszyscy zdefiniowani w nim użytkownicy spełniają w systemie linuxowym specjalną rolę. Kilku z nich jest szczególnie wartych uwagi:
root
administrator – użytkownik, na którego nie są nałożone żadne
ograniczenia;
daemon
konto używane dla procesów systemowych;
bin
właściciel niektórych plików wykonywalnych;
sys
właściciel niektórych plików wykonywalnych;
adm właściciel plików administracyjnych;
uucp konto używane do komunikacji za pomocą protokołu UUCP.
W innych systemach mogą również być założone konta do specyficznych zadań; ich nazwy zwykle wyjaśniają przeznaczenie – na przykład użytkownik postmaster przeznaczony jest do obsługi poczty.
Większości z tych wpisów nie należy modyfikować. W polu hasła mają one wpisaną gwiazdkę, co zabezpiecza przed ich wykorzystaniem do zalogowania się do systemu.
Dodawanie nowego konta
I Sposób
Nowego użytkownika można dodać do systemu na dwa sposoby: ręcznie, edytując plik /etc/passwd, bądź też za pomocą skryptu automatyzującego wszystkie czynności, dzięki czemu minimalizowane jest ryzyko popełnienia błędów, co jest szczególnie ważne dla mało doświadczonych administratorów lub w przypadku dodawania większej liczby użytkowników. Tylko użytkownik root może modyfikować plik /etc/passwd.
Ogólnie proces dodawania nowego użytkownika składa się z trzech etapów:
1. dodania wpisu do pliku /etc/passwd,
2. utworzenia katalogu domowego i przypisania mu odpowiedniego właściciela,
3. skopiowania plików konfiguracyjnych do katalogu nowego użytkownika.
II sposób
Do utworzenia nowego konta użytkownika służy polecenie adduser, które posiada następującą składnię:
adduser nazwa użytkownika
gdzie nazwa użytkownika określa nazwę nowego użytkownika, któremu chcesz założyć konto. W
trakcie wykonywania polecenia dodawania nowego użytkownika zostaniesz poproszony o wprowadzenie wymaganych informacji na jego temat.
III sposób
Korzystając z graficznych programów służących do tego celu np.:Kuser
Usuwanie kont
Podobnie jak dodawanie nowego konta, usuwanie można przeprowadzić na dwa sposoby: ręcznie lub używając odpowiedniego skryptu, który zwykle nazywa się deluser lub userdel.
Grupy
Każdy użytkownik w systemie UNIX-owym musi należeć do jakiejś grupy. Grupa to logiczny zbiór użytkowników. Przykładowo, grupę mogą stanowić wszyscy pracownicy jednego wydziału, którzy powinni mieć dostęp do jakichś wspólnych danych, czy możliwość używania danego urządzenia, na przykład skanera czy kolorowej drukarki laserowej. W systemie może być dowolnie dużo grup.
Użytkownik może być w danym momencie przypisany tylko do jednej grupy. Jeśli jednak należy jeszcze do innych (każdy użytkownik może należeć do dowolnej liczby grup), może w każdej chwili sam przyłączyć się do odpowiedniej grupy.
Prawa dostępu dla grup można ustalić tak, by ich członkowie mieli np. dostęp do danych urządzeń, plików czy systemów plików, natomiast nie mieli ich inni użytkownicy. Przykładowo, wszyscy pracownicy księgowości powinni mieć dostęp do rachunków firmy, do których jednak nie powinni mieć dostępu pozostali pracownicy – takie ograniczenie może być z łatwością zrealizowane za pomocą grup.
Zalety używania grup ujawniają się, gdy z systemu zaczyna korzystać większa liczba użytkowników – na przykład dzieci i przyjaciele – wówczas, używając grup, można z łatwością manipulować prawami dostępu do plików.
Informacje o grupach przechowywane są w pliku /etc/groups, którego struktura jest podobna do struktury pliku /etc/passwd.
Każdy wiersz składa się z czterech pól, rozdzielonych dwukropkami (dwa dwukropki obok siebie oznaczają, że dane pole jest puste):
nazwa_grupy:hasło_grupy:ID_grupy:użytkownicy
Pola te mają następujące znaczenie:
nazwa_grupy:
niepowtarzalna nazwa grupy, składająca się maksymalnie
z ośmiu znaków;
hasło_grupy:
pole to zwykle pozostawiane jest puste (w niektórych
wersjach systemu tu przechowywane jest hasło, które użytkownik
musi podać, chcąc przyłączyć się do grupy); większość wersji
Linuxa nie obsługuje tego pola;
ID_grupy: numer identyfikacyjny, różny dla każdej grupy, używany przez system operacyjny;
użytkownicy:
lista użytkowników należących do danej grupy.
W każdym systemie istnieje pewna liczba grup tworzonych podczas instalacji, służących do obsługi samego systemu operacyjnego, do grup tych nie należą zwykli użytkownicy systemu. Funkcje niektórych z nich są następujące:
• root/wheel/system
zwykle używana, aby uzyskać prawa użytkownika root za pomocą
polecenia su; grupa ta jest właścicielem większości plików systemowych;
• daemon
używana do obsługi katalogów kolejki dla poczty, drukarek itp.;
• kmem używana przez programy wymagające bezpośredniego dostępu do pamięci (np. ps);
• sys
właściciel niektórych plików systemowych; w niektórych systemach grupa ta zachowuje się tak samo jak kmem;
• tty
właściciel plików obsługujących terminale.
Dodawanie nowej grupy
Aby utworzyć nową grupę, można ręcznie edytować plik /etc/groups, ale można również w tym celu użyć skryptu o nazwie addgroup czy groupadd.
Dodawanie użytkowników do grupy
Każdy użytkownik może być członkiem wielu grup; w takim przypadku jego identyfikator powinien pojawić się w każdym wierszu odpowiadającym grupie, do której on przynależy (identyfikatory użytkowników w pliku /etc/groups powinny być rozdzielone przecinkami).