Integralność plików passwd, group, shadow, gshadow
Spis treści
W pliku /etc/passwd jest przechowywana baza danych kont użytkowników w systemie linux. Z kolei w
/etc/group mamy wypisane wszystkie grupy oraz powiązanych z nimi użytkowników. Generalnie rzecz
biorąc, to te dwa pliki odpowiadają za konfigurację kont. Problem jednak zaczyna się w momencie gdy
w grę wchodzą hasła, zarówno do kont jak i do grup. Gdyby były one trzymane w tych plikach, nie
byłyby one w żaden sposób szyfrowane. Dlatego też powstał inny mechanizm, który ma na celu
przeniesienie zahashowanych haseł do plików /etc/shadow i /etc/gshadow . W debianie
użytkownikami i grupami możemy zarządzać przy pomocy odpowiednich narzędzi, które automatycznie
dostosują wszystkie powyższe pliki. Nic jednak nie stoi na przeszkodzie aby edytować każdy z nich
ręcznie. Problemy mogą się pojawić w momencie, gdy te pliki będą zawierać różne wpisy, np. w pliku
passwd będzie określony użytkownik, który jednocześnie nie będzie istniał w pliku shadow ,
podobnie z grupami. W tym wpisie postaramy się sprawdzić te pliki i upewnimy się czy aby na pewno
jest z nimi wszystko w porządku.
Narzędzia pwck i grpck
Do zarządzania kontami użytkowników mamy oddelegowanych kilka narzędzi. Przy pomocy adduser możemy konta dodawać, a za pomocą userdel je usuwać. Dodatkowo mamy także usermod, przy pomocy którego to możemy edytować już te istniejące w systemie konta użytkowników. Podobnie sprawa ma się w przypadku grup, tj. mamy odpowiednio groupadd, groupdel oraz groupmod. Dodatkowo do zmiany hasła wykorzystujemy passwd, a do określenia shell'a chsh. Możemy także zmienić sobie informacje o koncie przy pomocy chfn.
Jeśli nie korzystamy z tego całego zestawu narzędzi, to jest niemal pewne, że prędzej czy później w
konfigurację użytkowników systemowych wkradnie się jakiś błąd. Mamy na szczęście do dyspozycji
również dwa inne ciekawe narzędzia:
pwck oraz
grpck . Pierwsze z nich zajmuje się
sprawdzeniem integralności plików /etc/passwd i /etc/shadow , drugie zaś weryfikuje wpisy w
/etc/group i /etc/gshadow .
W przypadku plików passwd i shadow , sprawdzana jest ilość pól w każdym wpisie, unikalność i
prawidłowość nawy użytkownika, identyfikatory UID/GID, główna grupa, katalog domowy oraz shell. Z
kolei jeśli chodzi o pliki group i gshadow , to tutaj sprawdzane są takie informacje jak
unikalność i prawidłowość nazw grup, identyfikatory grup oraz lista użytkowników i administratorów.
Każda z tych dwóch par plików musi posiadać dokładny zestaw wpisów, który musi do siebie pasować.
Sprawdzenie plików /etc/passwd oraz /etc/shadow
By przeprowadzić integralność plików /etc/passwd oraz /etc/shadow , odpalamy terminal i logujemy
się na użytkownika root. Następnie wpisujemy pwck :
# pwck
user 'lp': directory '/var/spool/lpd' does not exist
...
pwck: no changes
W moim przypadku pojawiło się jedynie kilka wpisów, które odnoszą się do nieistniejących katalogów
domowych pewnych użytkowników. W każdym razie, nic czym należałoby się przejmować. Jeśli byśmy mieli
jakieś poważniejsze błędy, to pwck powinien podjąć się próby ich naprawy. W przypadku gdyby nie
było to możliwe będzie próbował taki wpis usunąć z pliku.
Poprawek możemy naturalnie dokonać ręcznie, lub przy pomocy tego powyższego narzędzia. Niemniej
jednak, warto też wiedzieć, że do dyspozycji mamy jeszcze pwconv i
pwunconv, które potrafią dokonać
konwersji między plikami passwd oraz shadow w obu kierunkach.
Sprawdzenie plików /etc/group /etc/gshadow
Podobnie sprawa ma się w przypadku sprawdzania integralności plików /etc/group i /etc/gshadow ,
z tym, że w terminalu wydajemy to poniższe polecenie:
# grpck
'morfik' is a member of the 'audio' group in /etc/gshadow but not in /etc/group
No i tutaj już widzimy klasyczny przykład niekorzystania z tych wszystkich wyżej wymienionych
narzędzi do zarządzania kontami użytkowników. W efekcie czego użytkownik morfik znajduje się w
grupie audio tylko w jednym z tych plików. Tego typu stan rzeczy należy bezzwłocznie poprawić.
Podobnie jak w przypadku plików /etc/passwd oraz /etc/shadow także możemy dokonać ręcznych
poprawek oraz mamy też do dyspozycji narzędzia grpconv i
grpunconv , które potrafią dokonać
konwersji między plikami group oraz gshadow również w obu kierunkach.