Как принудительно заставить пользователя сменить пароль в Linux
TL;DR
Принудительная смена пароля в Linux делается просто: используйте chage -d 0 или passwd -e username, чтобы пометить пароль как просроченный. Для массовых операций, автоматизации и обратного отката применяйте скрипты, Ansible или команды usermod/passwd для блокировки и разблокировки. Проверьте результат через chage -l и попытку входа по SSH.

Безопасность — главная причина принудительной смены пароля: регулярные ротации уменьшают риск компрометации, а экстренные сбросы необходимы после подозрительных инцидентов. В этой статье описаны проверенные команды, сценарии использования, альтернативы и рекомендации по тестированию и откату.
Ключевые команды и понятия
Определение терминов в одну строку:
- chage — утилита управления «возрастом» пароля в Linux (shadow).
- passwd — стандартная утилита для установки и управления паролями пользователя.
- usermod — управление учётной записью (блокировка/разблокировка и т. п.).
Быстрая команда для немедленной принудительной смены
Используйте chage, чтобы пометить пароль как изменённый 0 дней назад, что приведёт к его немедленной истечению:
sudo chage -d 0 usernameПроверить состояние аккаунта можно так:
sudo chage -l usernameВыведенная информация покажет дату последней смены, минимальный/максимальный срок жизни пароля, предупреждение и т. д.
Альтернатива через passwd
Стандартный способ — использовать passwd с ключом -e, чтобы пометить пароль как истёкший:
sudo passwd -e usernameЧтобы задать максимум дней жизни пароля (например, 30 дней) или предупреждение за N дней:
sudo passwd -x 30 username
sudo passwd -w 5 usernameЧтобы немедленно заблокировать учётную запись вы можете использовать:
sudo passwd -l username # блокировка (добавляет '!' в /etc/shadow)
sudo passwd -u username # разблокировкаИли эквивалентные команды через usermod:
sudo usermod -L username # блокировка
sudo usermod -U username # разблокировкаРасширенные параметры chage
Полезные флаги chage:
- -l — список текущих параметров.
- -d ДАТА — установить дату последней смены пароля (в формате YYYY-MM-DD или количество дней с 1970-01-01 в некоторых реализациях).
- -M N — максимальное число дней жизни пароля.
- -m N — минимальное число дней между сменами.
- -W N — число дней предупреждения перед истечением.
- -I N — неактивность после истечения (в днях).
- -E YYYY-MM-DD — указать дату неактивности учётной записи.
Пример: задать политику 90 дней жизни, предупреждать за 7 дней:
sudo chage -M 90 -W 7 usernameКогда использовать chage, а когда passwd
- chage удобен для оперативного управления сроками и мгновенного принудительного истечения пароля; часто применяется в сценариях аварийного реагирования и массовых операциях.
- passwd — привычный инструмент для администраторов и интерактивных задач; подходит для регулярной политики паролей.
Массовые операции и автоматизация
Чтобы пометить всех пользователей из списка как требующих смены пароля:
while read -r user; do
sudo chage -d 0 "$user"
done < users.txtAnsible-пример, если хочется автоматизировать на уровне конфигурации (использует команду chage через модуль command):
- hosts: all
become: yes
tasks:
- name: Force password expire for a user
command: chage -d 0 {{ username }}Эту задачу можно расширить для нескольких пользователей или включить в роль безопасности.
Тестирование, приёмка и контроль успешности
Критерии приёмки:
- После применения chage -d 0 или passwd -e при попытке входа система запрашивает смену пароля.
- chage -l показывает ожидаемое состояние (последняя смена = «password must be changed»/дата).
- SSH-вход завершает сеанс и просит обновить пароль (в тестовой среде подтвердите через ssh в отдельной сессии).
Тестовые шаги:
- Выполнить команду для тестового пользователя.
- Попытаться войти по SSH под этим пользователем (новая сессия).
- Убедиться, что отображается запрос на смену пароля и сетевые сервисы не ломаются.
Откат и разблокировка
Если нужно быстро отменить принудительную смену или разблокировать аккаунт:
# Разблокировать учётную запись
sudo passwd -u username
# Вернуть максимальную продолжительность жизни пароля (например, 90 дней)
sudo chage -M 90 usernameЕсли вы заранее не сохранили старые параметры, восстановить их придётся вручную на основе политики организации.
Когда эти методы не работают или ограничены
- Если в системе настроен внешний источник аутентификации (LDAP, AD, OAuth), chage/passwd могут не применяться — изменения нужно делать в соответствующем каталоге.
- Если PAM и настройки sshd запрещают интерактивную смену пароля при входе (например, PasswordAuthentication отключён), пользователю может потребоваться другой путь (внутренний портал смены пароля или подключение консоли).
Важно: всегда проверяйте, где хранятся пароли и какие механизмы аутентификации используются в вашей инфраструктуре.
Роль-based checklist для администраторов
Для системного админа:
- Проверить источник учётных записей (локально / LDAP / AD).
- Выполнить chage -l перед изменением и сохранить параметры.
- Применить chage -d 0 или passwd -e и проверить chage -l.
- Провести тестовый вход.
- Сообщить пользователю о необходимости смены пароля и дать инструкции по сложному паролю.
Для владельца системы безопасности:
- Убедиться, что политика паролей документирована и согласована.
- Проверить журналы аудита после применения изменений.
Практические рекомендации по безопасности
- Сочетайте ротацию паролей с политиками качества пароля (pam_pwquality) и многофакторной аутентификацией (MFA), где это возможно.
- Планируйте массовые принудительные смены в окно обслуживания, чтобы снизить рабочую нагрузку службы поддержки.
- Локальные принудительные сбросы полезны, но для централизованных сред используйте управление через LDAP/AD и соответствующие политики.
Шпаргалка команд (cheat sheet)
# Немедленно пометить пароль как просроченный
sudo chage -d 0 username
# Проверить параметры
sudo chage -l username
# Немедленно истечь через passwd
sudo passwd -e username
# Установить максимальный срок жизни пароля
sudo passwd -x 30 username # или: sudo chage -M 30 username
# Заблокировать/разблокировать учётную запись
sudo passwd -l username
sudo passwd -u username
# Альтернатива через usermod
sudo usermod -L username
sudo usermod -U username1-строчный глоссарий
- chage — управление сроками паролей; passwd — установка/истечение/блокировка паролей; usermod — управление свойствами учётной записи; PAM — Pluggable Authentication Modules.
Итог
Используйте chage -d 0 или passwd -e для немедленной принудительной смены пароля. Для регулярных политик задавайте сроки через passwd или chage. Автоматизируйте массовые действия скриптами или системами управления конфигурацией и всегда тестируйте и документируйте изменения.


Important: перед массовыми изменениями сделайте резервную копию текущих настроек и протестируйте процедуру на тестовых аккаунтах.
Похожие материалы
Как улучшить графику в Elden Ring
Удаление пароля Windows 10 для локальной учётной записи
HANDLE_ERROR_ON_CRITICAL_THREAD — как исправить BSOD
Устранение утечки памяти LockAppHost.exe в Windows 10
Ошибка AppHangB1: способы исправления