Як знайти всі способи блокування облікового запису користувача Unix


12

Іноді я опиняюсь у ситуації, коли недоотримана система має обліковий запис, який заблокований. Проблема полягає в тому, що існують різні способи блокування облікового запису, кожен із яких розблокується.

Справа не в тому, що обліковий запис блокується неправильно, несподівано, але знайти правильний замок для скидання важко.

Моя остання атака цієї проблеми була на системі SUSE, і виявилося, що термін дії пароля закінчився (що спочатку не було відомо, оскільки спроби входу були не через систему, яка надає такий зворотній зв'язок), а потім також заблокована через невдалі спроби входу.

Чи є десь список усіх можливих блокувань облікових записів і як їх відключити? Я маю намір фактично зламати, наприклад, проблеми з доступом до домашніх каталогів, пошкоджені бібліотеки PAM тощо, щоб бути поза межами цього питання.

Відповіді:


13

Ви можете використовувати passwdдля збору деякої інформації, наприклад, якщо обліковий запис заблоковано

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)

chageУтиліта надасть інформацію про різні таймерах на рахунок , наприклад , для минулого пароля

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

для пароля з минулим терміном дії

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

В passwdі chageутиліти також список багатьох облікових записів замків.

Ви можете скористатися getentінформацією безпосередньо з відповідної бази даних для експертизи

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

Загалом: ні.

Відповідь Іена - це хороший підсумок того, як запитувати системи старіння паролів, але пропускав усілякі речі. Наприклад:

  • Хтось, хто намагається увійти через ssh, може бути заборонений директивами в sshdконфігурації.
  • Система може бути налаштована так, щоб дозволити входити лише учасникам певної мережі.
  • Локальна PAMконфігурація може вимагати явного членства в групі для входу в систему або може дозволяти лише певний список користувачів.
  • Схоже, що заблокований обліковий запис може виявитись проблемами доступу до домашнього каталогу.
  • Можливо, хтось створив /etc/nologin, що для деяких додатків (наприклад, ssh) заблокує всіх користувачів.

Іншими словами, існує багато способів закрити рахунок, який не має нічого спільного з passwdфайлом. Ваша найкраща ставка - це перевірити /var/log/secureмісцевий аналог, який відповідає розподілу.


Я мав намір своє питання припустити, що все не було "зламано" і що користувач міг увійти в систему раніше. Тобто, що якась функціонуюча система належним чином заблокувала рахунок. Це хороші моменти, але я оновлю питання, щоб бути більш чітким.
wfaulk

1

Окрім вищезгаданого passwd chageта getent, є такожpam_tally2

Якщо кількість невдалих спроб входу перевищує допустимий ліміт (який встановлено в /etc/pam.d/password-auth), вам доведеться зробити це, pam_tally2 --user=foo --resetперш ніж вони зможуть знову увійти.


0

Наступний сценарій дасть вам короткий опис усіх користувачів та їх статус (заблоковано чи ні)

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

Це лише перевіряє один із способів блокування облікового запису.
wfaulk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.