Użytkownicy i grupy

Uwaga. POSIX nie specyfikuje szczegółów implementacyjnych użytkowników i grup. Przedstawione tu elementy są typowe dla większości systemów GNU/Linux.

W typowym systemie UNIX znajdują się dwa pliki z ogólnodostępnymi informacjami o użytkownikach i grupach użytkowników: /etc/passwd, /etc/group. Zawierają one numery identyfikatorów grup/użytkowników, ich nazwy, w przypadku użytkowników ścieżkę do katalogu domowego i pełną nazwę (w systemie wydziałowym: numer indeksu imię nazwisko) i kilka innych informacji. Poza plikami ogólnodostępnymi w systemie znajduje się plik zawierający jednokierunkowe skróty kryptograficzne haseł użytkowników, informacje o datach ważności haseł, konta. W systemach GNU/Linux te informacje znajdują się w pliku /etc/shadow (niedostępnym dla zwykłych użytkowników). Standard POSIX nie specyfikuje dokładnie tego pliku i jego zawartości, na przykład w systemach FreeBSD podobny plik to /etc/master.passwd.

Bazy danych w plikach obowiązują tylko lokalnie. W przypadku systemów z centralnymi bazami użytkowników, poza plikami lokalnymi informacje o użytkownikach pobierane są z innych baz, na przykład LDAP. Za konfigurację źródeł informacji o użytkownikach, grupach, ale także nazwach sieciowych i podobnych odpowiada plik konfiguracyjny /etc/nsswitch.conf (GNU Name Service Switch). Efektywna baza użytkowników to połączenie wszystkich źródeł podanych w tym pliku konfiguracyjnym.

Składnia plików z prostą bazą danych użytkowników opisana jest w podręczniku systemowym w sekcji 5. Nazwy stron są takie same jak nazwy plików w /etc/

 $ man 5 passwd
 $ man 5 group
 $ man 5 shadow

W celu uzyskania dostępu do połączonej bazy, zawierających informacje ze wszystkich źródeł można skorzystać z programu getent:

 $ man 1 getent
 $ getent passwd
 $ getent passwd karwowskij
 $ getent group

Przypomnienie: do przeglądania plików można użyć takich programów jak less i grep.

Wszystkie ćwiczenia należy wykonać na stacji roboczej na wydziale (lub na jednym z serwerów wydziałowych, jeśli tak jest napisane):

  1. Poszukać w pliku /etc/passwd informacji o swoim koncie użytkownika. W przypadku, gdy konta nie ma w pliku, ustalić czy w systemie są inne źródła nazw użytkowników, przeglądając plik /etc/nsswitch.conf.
    Przeglądając połączone bazy użytkowników z użyciem programu getent poszukać informacji o swoim koncie użytkownika ponownie.

  2. Porównać wyjście komend (w drugim wywołaniu podać swój login):

    $ id
    $ id <login>

    Pierwsze wywołanie wyświetla informacje o użytkowniku uruchamiającym program id, drugie o użytkowniku o podanej nazwie. Czy wyjście jednego i drugiego jest takie same?

    Uwaga: podczas logowania w konkretnych warunkach użytkownik może otrzymać dodatkowe uprawnienia poprzez dodanie przynależności do grup. Typową sytuacją jest, gdy użytkownik loguje się do fizycznego terminala (czyli nie, na przykład, przez ssh), nadanie mu przynależności do grup, które pozwalają na używanie urządzeń podłączonych do komputera, na przykład:

    • cdrom – dostęp do napędu optycznego
    • audio – dostęp do karty dźwiękowej
    • plugdev – większość urządzeń podłączonych do usb i innych portów
  3. Porównać informacje o użytkownikach podawane na serwerze ssh.mini.pw.edu.pl i na stacji roboczej. Zaobserwować istnienie centralnej bazy danych.

  4. PAM (Pluggable Authentication Modules) system metod uwierzytelniania użytkowników i autoryzacji występujący w popularnych dystrybucjach GNU/Linux. Za pomocą modułów można włączać i wyłączać różne metody uwierzytelniania od najprostszych – hasła użytkownika, poprzez jednorazowe kody, uwierzytelnianie dwuskładnikowe, po współpracę z urządzeniami zewnętrznymi, na przykład czytnikami odcisków palca, urządzeniami bluetooth czy usb. W szczególności PAM pozwala na używanie zewnętrznych serwerów do weryfikacji hasła.

    PAM pozwala również na nakładanie szeregu ograniczeń, na przykład logowanie tylko w określonych godzinach czy z określonych maszyn.

    System posiada szereg plików konfiguracyjnych:

    • pliki w /etc/pam.d
    • pliki w /etc/security
    • plik /etc/login.defs

    Zajrzeć do pliku /etc/pam.d/system-auth. Zawiera on zasady logowania się do środowiska graficznego. (lightdm to nazwa programu, który pyta Państwa o nazwę użytkownika i hasło na stacji roboczej w laboratorium). Zaobserwować wpis dla modułu pam_ldap.so – weryfikacji hasła użytkownika z użyciem centralnego serwera LDAP.

    Zajrzeć do pliku /etc/pam.d/sshd na serwerze ssh.mini.pw.edu.pl i poczynić podobne obserwacje.

    Zajrzeć do plików /etc/login.defs i /etc/security/limits.conf. Jakie ograniczenia można w nich ustawiać?

  5. Program passwd. Program passwd służy do zmiany hasła użytkownika. Administrator może zmienić hasło dowolnego z użytkowników. Każdy inny użytkownik tylko swoje i tylko po podaniu starego hasła. (W aktualnej konfiguracji serwerów wydziałowych ta metoda zmiany hasła nie działa w naszym laboratorium).

    $ passwd # zmienia hasło bieżącego użytkownika

    Program passwd zapyta o stare hasło użytkownika, a następnie o nowe.

    Administrator systemu może wywołać:

    # passwd <login> # zmiana hasła podanego użytkownika