← Весь справочник

chage

Сроки действия пароля и учётной записи — chage -l, -M, -m, -W, -I, -E, -d 0 и поля /etc/shadow

chage (change age) управляет «возрастом» пароля: через сколько дней его нужно сменить, за сколько дней предупреждать, когда учётная запись перестанет работать совсем. Все эти значения хранятся в /etc/shadow, chage просто правит нужные поля. Менять может только root; обычный пользователь может лишь посмотреть свои сроки через chage -l.

Синтаксис

chage -l пользователь            # посмотреть
chage [опции] пользователь       # изменить

Без опций (кроме имени) chage спрашивает все значения интерактивно.

Опции

ОпцияПоле shadowЧто задаёт
-l—показать текущие сроки
-i—с -l: даты в формате ГГГГ-ММ-ДД вместо Oct 13, 2026
-M дни5максимальный срок жизни пароля; после него пароль надо сменить. -M -1 — снять ограничение
-m дни4минимум дней между сменами пароля; 0 — менять можно когда угодно
-W дни6за сколько дней до истечения пароля предупреждать при входе
-I дни7сколько дней после истечения пароля ещё можно войти (сменив пароль); потом вход закрыт. -I -1 — снять
-E дата8дата, с которой учётная запись отключена целиком. -E -1 — без срока, -E 0 — отключить сразу
-d дата3дата последней смены пароля; -d 0 — заставить сменить пароль при следующем входе
-R каталог—работать с /etc/shadow внутри другого корня (chroot)

Даты пиши как ГГГГ-ММ-ДД; число трактуется как номер дня от 1 января 1970.

Поля /etc/shadow

alice:$y$j9T$…:20739:7:90:14:5:20849:
  1      2      3   4  5  6  7   8   9
№ПолеПримерСмысл
1имяalice
2хеш пароля$y$…! или * — пароль не задан или заблокирован
3последняя смена20739дни от 1970-01-01; 0 — сменить при входе; пусто — сроки не действуют
4минимум7-m
5максимум90-M; 99999 — фактически никогда
6предупреждение14-W
7неактивность5-I
8срок учётной записи20849-E, номер дня
9резервне используется

Перевести номер дня в дату: date -d @$((20849*86400)) +%F.

Вывод chage -l

Last password change                     : Oct 13, 2026
Password expires                         : Jan 11, 2027
Password inactive                        : Jan 16, 2027
Account expires                          : Jan 31, 2027
Minimum number of days between password change   : 7
Maximum number of days between password change   : 90
Number of days of warning before password expires: 14

Password expires = последняя смена + максимум, Password inactive = истечение + -I. После -d 0 в первых трёх строках стоит password must be changed.

Примеры

# посмотреть сроки, даты в ISO-формате
chage -l -i alice

# политика: менять раз в 90 дней, не чаще раза в неделю, предупреждать за 14
chage -M 90 -m 7 -W 14 alice

# временный сотрудник: учётная запись работает до конца месяца
chage -E 2027-01-31 alice

# выдать временный пароль и заставить сменить его при входе
echo 'alice:Temp-Passw0rd' | chpasswd
chage -d 0 alice

# заблокировать вход прямо сейчас и вернуть обратно
chage -E 0 alice
chage -E -1 alice

# снять все сроки
chage -M -1 -I -1 -E -1 alice

# то же при создании пользователя: -e — срок учётной записи, -f — неактивность
useradd -m -e 2027-12-31 -f 10 bob

# поля shadow напрямую
getent shadow alice

Подводные камни

  • Неверная дата не вызывает ошибку. chage -E 2026-13-45 молча превратится в 2027-02-14, 2026-02-30 — в 2026-03-02. Всегда проверяй результат через chage -l -i. Формат 31.01.2027 хотя бы отвергается.
  • -E и -M — разные вещи. -M ограничивает срок жизни пароля (пользователя попросят его сменить), -E отключает учётную запись целиком, независимо от пароля.
  • Сроки действуют и для su от root. После -E в прошлом su alice пишет «Your account has expired», после -d 0 — требует новый пароль. Вход по SSH-ключу тоже проверяет срок учётной записи.
  • -E 0 — это 1 января 1970, то есть «уже истекла», а не «без срока». Без срока — -E -1.
  • Значения по умолчанию для новых пользователей берутся из PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_WARN_AGE в /etc/login.defs. Уже существующих пользователей правка этого файла не меняет.
  • passwd -S alice показывает те же сроки одной строкой; там -1 означает «не задано».

См. также

useradd · su · getent · date · id