Итак, я установил новый сервер Debian и добавил несколько пользователей для веб-пространства и т. Д., Как обычно.
Пропустите 180 дней, и пользователи начнут жаловаться, что их логины не работают. Учитывая, что это поднимали более одного человека, я проверил журналы авторизации и ... БУМ. Неудачный вход из-за истечения срока действия пароля. Черт!
Каким же глупым я не учел политику истечения срока действия пароля на этом конкретном сервере.
Обратите внимание, что у этих пользователей не было прав оболочки, но они могли войти через sftp для управления своим веб-пространством. Таким образом, они не получали напоминаний об истечении срока действия и не имели возможности изменить пароль, даже если бы знали. Насколько я могу судить, ошибка регистрировалась только на стороне сервера. На стороне клиента это была общая ошибка авторизации.
Как я могу легко опросить сервер, чтобы получить информацию об истечении срока действия пароля для всех пользователей?
Получив эту информацию, я могу легко увидеть, какие пользователи будут затронуты, а какие будут затронуты в будущем.
Такая команда должна показать вам статус истечения срока для всех учетных записей, определенных в вашем /etc/passwd
.
cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c " echo -e '\n{}' ; chage -l {}"
Важная команда - это chage -l username
. Это команда, которая возвращает пользователю статус истечения срока действия. Chage также команда, которую вы использовали бы для изменения правил истечения срока действия. Вам может потребоваться добавить sudo
перед chage
в зависимости от настроек вашей системы.
Вы также можете использовать эту простую команду:
awk -F':' '{ system("echo " $1 " && chage -l " $1) }' /etc/passwd
С помощью awk
и system
сделай это проще.
1.
awk -F':'
Вот:
разделитель полей с/etc/passwd
файл в качестве ввода.2.
system("echo " $1 " && chage -l " $1)
это сначала будет эхом$1
и информация об истечении срока действия пароля пользователя сchage -l