Как найти все способы блокировки учетной записи пользователя Unix

12

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

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

Моя последняя атака на эту проблему была в системе SUSE, и оказалось, что срок действия пароля истек (который первоначально не был известен, потому что попытки входа были не через систему, которая обеспечивала такую ​​обратную связь), а затем также заблокирован из-за неудачных попыток входа в систему.

Есть ли где-нибудь список всех возможных блокировок аккаунта и как их отключить? Я намерен, чтобы фактический сбой, такой как проблемы с доступом к домашним каталогам, поврежденные библиотеки PAM и т. Д., Был вне сферы этого вопроса.

wfaulk
источник

Ответы:

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
user9517
источник
7

В общем, нет.

Ответ Иэйна - хорошее резюме того, как запрашивать системы устаревания паролей, но упустил все виды вещей. Например:

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

Другими словами, существует много способов блокировки учетной записи, которые не имеют ничего общего с passwdфайлом. Лучше всего проверять /var/log/secureместный аналог или соответствующий дистрибутиву.

larsks
источник
Я собирался предположить, что мой вопрос не был «сломан» и что пользователь мог войти раньше. То есть некоторые системы, функционирующие должным образом, заблокировали аккаунт. Это хорошие моменты, но я обновлю вопрос, чтобы быть немного более явным.
wfaulk
1

В дополнение к вышеупомянутому, passwd chageи getent, есть такжеpam_tally2

Если количество неудачных попыток входа в систему превышает допустимый предел (который установлен в /etc/pam.d/password-auth), вам придется сделать это, pam_tally2 --user=foo --resetпрежде чем они смогут войти снова.

Jistanidiot
источник
0

Следующий скрипт даст вам краткое описание всех пользователей и их статуса (заблокирован или нет)

cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'
Арун Кришнан
источник
Это проверяет только один из способов блокировки учетной записи.
wfaulk