Jak znaleźć wszystkie sposoby blokowania konta użytkownika w systemie Unix


12

Czasami znajduję się w sytuacji, w której w niezrównoważonym systemie jest zablokowane konto. Problem polega na tym, że istnieje wiele sposobów blokowania konta, każdy z własną metodą odblokowania.

Nie chodzi o to, że konto jest blokowane nieprawidłowo, po prostu nieoczekiwanie, ale znalezienie właściwej blokady do zresetowania jest trudne.

Mój ostatni atak tego problemu dotyczył systemu SUSE i okazało się, że hasło wygasło (co początkowo nie było znane, ponieważ próby logowania nie odbyły się przez system, który dostarczył tego rodzaju informacje zwrotne), a następnie również zablokowane z powodu nieudanych prób logowania.

Czy jest gdzieś lista wszystkich możliwych blokad kont i jak je wyłączyć? Zamierzam, aby rzeczywiste uszkodzenia, takie jak problemy z dostępem do katalogu domowego, uszkodzone biblioteki PAM itp., Były poza zakresem tego pytania.

Odpowiedzi:


13

Możesz użyć passwddo zebrania niektórych informacji, np. Jeśli konto jest zablokowane

passwd -S user
user LK 2012-11-06 0 99999 7 -1 (Password locked.) (CentOS)
user L 01/22/2013 0 99999 7 -1 (Ubuntu)

chageNarzędzie dostarczy informacji na temat różnych czasomierzy na rachunku np na niewygasłe hasło

chage -l user
Last password change                                    : Nov 12, 2012
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

dla wygasłego hasła

chage -l user
Last password change                                    : password must be changed
Password expires                                        : password must be changed
Password inactive                                       : password must be changed
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 22
Number of days of warning before password expires       : 33

Te passwdi chagenarzędzia również wymienić wiele blokad kont.

Możesz użyć getentdo pobrania informacji bezpośrednio z odpowiedniej bazy danych do sprawdzenia

getent passwd user
user:x:505:505::/home/passtest:/sbin/nologin  <-- denied login
getent shadow user
user:!!:0:0:22:33:44::   <-- this is locked

7

Ogólnie: nie.

Odpowiedź Iaina jest dobrym podsumowaniem tego, jak odpytywać systemy starzenia się haseł, ale pominęła wiele różnych rzeczy. Na przykład:

  • Ktoś próbuje zalogować się przez ssh może zostać zabroniony przez dyrektywy w sshdkonfiguracji.
  • System można skonfigurować tak, aby zezwalał tylko członkom określonej grupy sieci na logowanie.
  • PAMKonfiguracja lokalna może wymagać wyraźnego członkostwa w grupie, aby się zalogować, lub może zezwalać tylko na określoną listę użytkowników.
  • To, co wygląda na zablokowane konto, może okazać się problemami z dostępem do katalogu domowego.
  • Ktoś mógł utworzyć /etc/nologin, co w przypadku niektórych aplikacji (np. ssh) Zablokuje wszystkich użytkowników.

Innymi słowy, istnieje wiele sposobów na zablokowanie konta, które nie mają nic wspólnego z passwdplikiem. Najlepszym rozwiązaniem jest sprawdzenie /var/log/securelub lokalny analog odpowiedni do dystrybucji.


Zamierzałem zadać pytanie, czy rzeczy nie zostały „zepsute” i czy użytkownik mógł się wcześniej zalogować. Oznacza to, że niektóre systemy działające poprawnie zablokowały konto. To są dobre punkty, ale zaktualizuję pytanie, aby było bardziej wyraźne.
wfaulk

1

Oprócz wyżej wymienionych, passwd chagei getentjest teżpam_tally2

Jeśli liczba nieudanych prób logowania przekroczy dopuszczalny limit (który jest ustawiony w /etc/pam.d/password-auth), musisz to zrobić, pam_tally2 --user=foo --resetzanim będą mogli się zalogować ponownie.


0

Poniższy skrypt da ci krótki opis wszystkich użytkowników i ich statusu (zablokowany lub nie)

cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'

To sprawdza tylko jeden ze sposobów zablokowania konta.
wfaulk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.