Ротация паролей на Linux управляется через PAM и утилиту chage. Политика задаётся либо глобально через /etc/login.defs, либо точечно для каждого пользователя.
Глобальная политика
/etc/login.defs применяется ко всем новым пользователям при создании:
# /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_WARN_AGE 14
PASS_MAX_DAYS: через сколько дней пароль истекает. PASS_MIN_DAYS: минимум дней до смены, защищает от немедленной смены обратно на старый. PASS_WARN_AGE: за сколько дней предупреждать пользователя.
Для существующих пользователей login.defs не применяется задним числом, только chage:
chage -M 90 -m 1 -W 14 username
Смотрим текущую политику пользователя
chage -l username
passwd -S username
chage -l покажет даты последней смены, истечения, предупреждения и блокировки.
Применяем ко всем пользователям разом
for user in $(awk -F: '$3 >= 1000 && $3 != 65534 {print $1}' /etc/passwd); do
chage -M 90 -W 14 $user
echo "$user: $(chage -l $user | grep 'Password expires')"
doneФильтруем по UID >= 1000 чтобы не трогать системных пользователей.
Принудительная смена при следующем входе
Если нужно сбросить пароль конкретному пользователю:
chage -d 0 username
При следующем SSH-входе система потребует сменить пароль до того как пустит в систему.
