Иногда я оказываюсь в ситуации, когда в недостаточно обслуживаемой системе есть заблокированная учетная запись. Проблема в том, что существует множество способов заблокировать учетную запись, каждый из которых имеет собственный метод разблокировки.
Дело не в том, что учетная запись заблокирована неправильно, просто неожиданно, но найти правильную блокировку для сброса сложно.
Моя последняя атака на эту проблему была в системе SUSE, и оказалось, что срок действия пароля истек (который изначально не был известен, потому что попытки входа в систему были не через систему, которая обеспечивала такую обратную связь), а затем также заблокирован из-за неудачных попыток входа в систему.
Есть ли где-нибудь список всех возможных блокировок учетных записей и способы их отключения? Я намерен сделать так, чтобы фактические неисправности, такие как проблемы с доступом к домашнему каталогу, поврежденные библиотеки PAM и т. Д., Выходили за рамки этого вопроса.
Ты можешь использовать 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
В общем: нет.
Ответ Иэна - хорошее резюме того, как запрашивать системы устаревания паролей, но упустил все виды вещей. Например:
sshd
конфигурация.PAM
конфигурация может потребовать явного членства в группе для входа в систему или может разрешить только определенный список пользователей./etc/nologin
, который для некоторых приложений (например, ssh
) заблокирует всех пользователей.Другими словами, есть много способов заблокировать учетную запись, которые не имеют ничего общего с passwd
файл. Лучше всего проверить /var/log/secure
или соответствующий для распространения местный аналог.
В дополнение к вышесказанному, passwd
chage
и getent
, есть также pam_tally2
Если количество неудачных попыток входа в систему превышает допустимый предел (установленный в /etc/pam.d/password-auth), вам придется сделать pam_tally2 --user=foo --reset
прежде чем они смогут снова войти в систему.
Следующий скрипт даст вам краткое описание всех пользователей и их статус (заблокирован или нет).
cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'