Informacje o kontach użytkowników w systemie LINUX przechowywane są w pliku
A. /etc/shadow
B. /etc/group
C. /etc/shells
D. /etc/passwd
Pytanie z egzaminu CKE, wrzesień 2014 (arkusz E.13-X-14.08).
Informacje o kontach użytkowników w Linuksie są przechowywane w pliku /etc/passwd. To podstawowy plik tekstowy systemu, w którym każda linia opisuje jedno konto. Typowy wpis wygląda podobnie do: root:x:0:0:root:/root:/bin/bash. Pola są rozdzielone dwukropkami i oznaczają m.in. nazwę użytkownika, UID, GID, opis konta, katalog domowy oraz powłokę startową. Współcześnie znak x w miejscu hasła oznacza, że właściwy skrót hasła nie jest tutaj trzymany, tylko w /etc/shadow, co jest dużo bezpieczniejsze. Moim zdaniem warto to dobrze zapamiętać, bo w administracji Linuxem ten plik przewija się bardzo często. W praktyce zawartość /etc/passwd można sprawdzić poleceniem cat /etc/passwd albo bezpieczniej i bardziej uniwersalnie przez getent passwd, bo getent uwzględnia też inne źródła kont, np. LDAP. Dobrą praktyką jest nie edytować tego pliku zwykłym edytorem bez potrzeby, tylko używać narzędzi useradd, usermod, userdel albo vipw, które zmniejszają ryzyko uszkodzenia bazy użytkowników. To jest klasyczna wiedza z administracji systemami Linux/Unix.
W tym pytaniu łatwo pomylić kilka plików z katalogu /etc, bo wszystkie są jakoś związane z logowaniem, użytkownikami albo uprawnieniami. Jednak główne informacje identyfikujące konta użytkowników znajdują się w /etc/passwd. Ten plik opisuje konta przez nazwę użytkownika, UID, domyślną grupę GID, katalog domowy i powłokę logowania. Nie oznacza to już, że przechowuje prawdziwe hasła w jawnej formie. W nowoczesnych systemach Linux hasła, a dokładniej ich skróty kryptograficzne oraz parametry wygasania, są przechowywane w /etc/shadow. To częsty błąd myślowy: ktoś widzi nazwę shadow i kojarzy ją z kontami, więc wybiera ten plik jako ogólną bazę użytkowników. W praktyce /etc/shadow jest elementem mechanizmu uwierzytelniania i zabezpieczeń, a nie pełnym opisem konta.
Plik /etc/group dotyczy grup systemowych, czyli mapowania nazw grup na identyfikatory GID oraz przypisanych do nich użytkowników. Jest bardzo ważny przy uprawnieniach do plików i usług, ale nie jest podstawowym rejestrem kont użytkowników. Z kolei /etc/shells zawiera listę dozwolonych powłok, np. /bin/bash czy /bin/sh, które mogą być używane jako powłoki logowania. Ten plik bywa sprawdzany przez niektóre usługi, na przykład przy ograniczeniach logowania, ale nie zawiera listy użytkowników. Z mojego doświadczenia najlepszy sposób na zapamiętanie jest prosty: /etc/passwd opisuje konto, /etc/shadow chroni hasło, /etc/group opisuje grupy, a /etc/shells mówi, jakie powłoki są akceptowane. Takie rozróżnienie jest zgodne z typową administracją Linux/Unix i dobrymi praktykami bezpieczeństwa.
Plik /etc/group dotyczy grup systemowych, czyli mapowania nazw grup na identyfikatory GID oraz przypisanych do nich użytkowników. Jest bardzo ważny przy uprawnieniach do plików i usług, ale nie jest podstawowym rejestrem kont użytkowników. Z kolei /etc/shells zawiera listę dozwolonych powłok, np. /bin/bash czy /bin/sh, które mogą być używane jako powłoki logowania. Ten plik bywa sprawdzany przez niektóre usługi, na przykład przy ograniczeniach logowania, ale nie zawiera listy użytkowników. Z mojego doświadczenia najlepszy sposób na zapamiętanie jest prosty: /etc/passwd opisuje konto, /etc/shadow chroni hasło, /etc/group opisuje grupy, a /etc/shells mówi, jakie powłoki są akceptowane. Takie rozróżnienie jest zgodne z typową administracją Linux/Unix i dobrymi praktykami bezpieczeństwa.