Użytkownicy i grupy w Linuksie

Mariusz Siwko
20.08.2015

Ponieważ Linux jest systemem przeznaczonym głównie do pracy w sieciach, zastosowano w nim konieczny podział na użytkowników i grupy. Pierwszym i najważniejszym użytkownikiem w systemie jest root. Posiada on nieograniczone uprawnienia w systemie (stąd słynne powiedzenie: "Root or God - what's a difference?" - z ang. dosł. root czy Bóg - co za różnica?).

Konto administratora tworzone jest podczas instalacji systemu. Tworzenie innych kont nie jest wymagane, ale mocno zalecane. Istnieje przekonanie, że nie powinno się przesiadywać cały czas na koncie roota, gdyż ma to poważne znaczenie dla bezpieczeństwa systemu (zarówno wewnętrznego, jak i zewnętrznego).Powinno być używane wyłącznie do zadań wymagających maksymalnych uprawnień (administracja systemem).
Zatem nawet jeśli do Twojego komputera dostęp masz tylko Ty to i tak powinieneś utwórzyć konto dla zwykłego użytkownika - dla siebie.


Grupy tworzone są dla użytkowników charakteryzujących się daną cechą. Dzięki grupom możliwe jest ustalenie uprawnień dla większego grona użytkowników jednocześnie - nie zaś każdemu indywidualnie.
Grupy przydają się na komputerach, do których dostęp mają użytkownicy z zewnątrz (szkoły, kafejki, konta shell) - podział może np. wyróżniać użytkowników domowych i "zewnętrznych".
Pliki użytkowników i grup
W Linuksie istnieją trzy standardowe pliki odnoszące się kolejno do użytkowników, grup i haseł.
Pierwszy z nich to /etc/passwd. Kiedyś przechowywano w nim hasła (ang. password), teraz umieszcza się tam informacje m.in. o użytkownikach. Dane przechowywane są w postaci rekordów.
Poniżej znajduje się format wpisu:


użytkownik:hasło:nr_id:nr_gid:nazwa_grupy:/home/użytkownik:/bin/bash


Pierwsza jest nazwa użytkownika, później znajduje się pole dla hasła (zwykle jest tam tylko x). Następny jest numer id użytkownika i numer id grupy (identyfikator w systemie). Następnie katalog domowy użytkownika (zwykle /home/nazwa_użytkownika), a na końcu ścieżka do interpretera poleceń (w tym wypadku powłoka bash - z angielska: walić - w klawisze oczywiście).


Plik odnoszący się do grup to /etc/group - znajdują się w nim informacje o grupach w następującym formacie:
nazwa_grupy:hasło:id_grupy:użytkowni1,użytkownik2
Hasło odnosi się oczywiście do grupy (nie do użytkowników). Tutaj chyba nie trzeba nic wyjaśniać.
Ostatnim plikiem, którego wnętrze należy omówić to /etc/shadow - gdzie przechowywane są m.in. zaszyfrowane hasła.
A oto i format zapisywania rekordów:


użytkownik:zaszyfrowane_hasło:d_1:d_2:d_3:d_4:d_5:d_6:


Kolejno możemy wymienić (od lewej): nazwę użytkownika - wiadomo, zaszyfrowane_hasło - np. w systemie md5 lub des, następne pola to daty:


Pole
Opis
d_1
data ostatniej zmiany hasła (liczona w dniach od początku epoki Uniksa)
d_2
liczba dni od ostatniej zmiany hasła, po których hasło może być zmienione ponownie
d_3
liczba dni od ostatniej zmiany hasła, po których musi nastąpić zmiana hasła
d_4
liczba dni przed wygaśnięciem hasła (o czym użytkownik jest ostrzegany)
d_5
liczba dni po wygaśnięciu hasła
d_6
data wyłączenia konta liczona w dniach (od początku epoki Uniksa)


Unix i jego epoka


Początek epoki Uniksa (ang. Unix epoch) jest datowany na 1 stycznia 1970 roku, godziny 00:00:00 (czasu GMT). Jest to przedział czasu od początku istnienia systemu Unix. Czas epoki Uniksa jest ograniczony zakresem dodatniej 32-bitowej liczby sekund, która wynosi 2 147 483 647 (czyli 231 - 1).
Koniec epoki Uniksa ma nastąpić 19 stycznia 2038 o godzinie 03:14:07 (GMT). Liczba sekund, która upłynęła od początku epoki nazywa się uniksowym znacznikiem czasu (ang. Unix Time Stamp). Taki znacznik czasu stosowany jest również w wersjach pochodnych systemu - Linux, BSD i inne...
W wielu sytuacjach w Linuksie musimy użyć właśnie takiej jednostki czasu, np. w sytuacji przedstawionej powyżej.
Tworzenie użytkowników i grup
Linux posiada kilka narzędzi, które pozwolą nam stworzyć nowego użytkownika lub grupę. Poniżej opiszę jak stworzyć nowego użytkownika i grupę za jednym zamachem. Tworzenie będzie miało bardzo prostą formę.
Jako root wpisz jedno polecenie:


adduser


Następnie zostaniesz poproszony o nazwę nowego użytkownika, hasło oraz inne dane, które nie są już niezbędne. Jest to bardzo prosta metoda, nie zawiera wiele czasu.
Aby skasować użytkownika wpisz deluser a następnie podaj nazwę.
Aby utworzyć nową grupę wpisz:


addgroup


Następnie podajesz nazwę grupy i gotowe.
Aby skasować grupę wpisz delgroup i podaj nazwę.
Zarówno w jednym i w drugim przypadku niezbędne informacje (tj. id, katalogi) tworzone są automatycznie. Często te właśnie programy używane są do tworzenia grup podczas instalacji. Niestety nie zawsze znajdziemy je w naszej dystrybucji.
Inne metody tworzenia użytowników i grup
Metody zaprezentowane poniżej mogą odstraszyć początkujących użytkowników. Przy odrobinie czasu polecam poeksperymentować z nimi na konta i grupy testowe. To pozwoli złagodzić "strach".
Polecenia do tworzenia i modyfikowania użytkowników:


useradd, usermod, userdel


Oto przykład tworzenia użytkownika za pomocą polecenia useradd (zaloguj się jako root):
useradd -d /home/user -G grupa1,grupa2 -m user
W ten sposób zostanie utworzony użytkownik (o nazwie user), do tego zostanie utworzony jego katalog domowy. Użytkownik ten zostanie przydzielony do grup: grupa1 i grupa2.
Pozostaje utworzyć jeszcze tylko hasło:


passwd user


Po wpisaniu polecenia zostaniesz poproszony o zmianę hasła lub w przypadku roota o podanie nowego. Jest to najprostrzy sposób, aby nadać hasło użytkownikowi.
Innym sposobem na podanie hasła może być zastosowanie opcji -p zaszyfrowane_hasło. W tym wypadku należy podać hasło odpowiednio zakodowane (w zależności jakie szyfrowanie wybrałeś podczas instalacji, np. md5 czy des itp...). Jeszcze innym sposobem jest edycja pliku /etc/shadow i tam też w odpowiednie miejsce wpisujemy zaszyfrowane hasło.
Oto flagi do polecenia useradd (i nie tylko):


Flaga
Opis
-d
ustawia domyślny katalog domowy
-e
data, od której konto użytkownika zostanie wyłączone (dla użytkowników tymczasowych), czyli data ważności konta
-f
liczba dni od wygaśnięcia hasła, po których konto ma być blokowane
-g
grupa użytkownika
-G
lista grup, do których ma należeć użytkownik (grupy oddzielaj przecinkami)
-s
podanie shella (np. /bin/bash lub innego zamiast domyślnego)
-u
numer id użytkownika
-l
(małe "L"), zmiana nazwy użytkownika (usermod)
Poleceniem userdel usuwamy danego użytkownika:
userdel -r user
Zastosowanie opcji -r spowoduje dodatkowo usunięcie katalogu domowego tego użytkownika.


Opcję usermod można łączyć z wymienionymi wyżej flagami. Przykładowo opcja -d towrzy nowy katalog (np. -d /home/nowy), opcja -l nowy_login, -G grupa1,grupa2,grupa3 itd...
Polecenia do tworzenia i modyfikowania grup:
groupadd, groupmod, groupdel
Oto przykład utworzenia nowej grupy poleceniem groupadd:
groupadd -g 1021 grupa
Opcja -g powoduje przypisanie numeru gid (group id) i jest opcjonalna - jeśli nie podasz tego parametru zostanie przydzielony pierwszy wolny identyfikator. Zaleca się nadawanie unikalnego identyfikatora. Całe powyższe polecenie tworzy grupę o nazwie "grupa".
Modyfikacja grupy - przykład:
groupmod -n nowa_nazwa grupa
Polecenie powoduje nadanie nowej nazwy podanej grupie.
Poleceniem groupdel usuwamy grupę. Po poleceniu należy podać nazwę grupy.
Modyfikacja danych osobistych - chfn
Jeśli chcesz dokonać zmianę danych takich, jak: imię i nazwisko, telefon itp., użyj polecenia:
chfn nazwa_użytkownika
Dostaniesz kilka pól do wypełnienia. Naciśnięcie entera spowoduje pozostawienie aktualnej wartości. Jeżeli chcesz skasować wartość i pozostawić dane pole puste - wpisz spację (spacja, enter).


Zmiana shella


Aby zmienić powłokę logowania użyj polecenia chsh (ang. Change Shell). Zostaniesz poproszony o podanie nowej ścieżki do shella. Jako root możesz podać nazwę użytkownika przy wywoływaniu polecenia, aby dokonać dla niego zmiany.
Rada dla początkujących
Jeśli nie czujesz się pewnie w tym co chcesz zrobić nie pozostawaj bezradny. Do szybkiego dodawania i usuwania użytkowników oraz grup używaj pierwszych poleceń (tych łatwiejszych).
Jak pisałem wcześniej, polecenia te mogą nie występować w Twojej dystrybucji - w takim wypadku możesz użyć gotowych wzorów (patrz przykłady).
Dodatkowe eksperymenty na trudniejszych poleceniach napewno nie zaszkodzą, jeśli zachowasz odpowiednią ostrożność.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie