Linux, парольная политика: различия между версиями
Admin (обсуждение | вклад) (→cron) |
(нет различий)
|
Текущая версия на 12:49, 26 мая 2023
Файл /etc/login.defs
определяет значения по умолчанию, которые используются при создании новых учетных записей.
PASS_MAX_DAYS 90 PASS_MIN_DAYS 1 PASS_MIN_LEN 9 PASS_WARN_AGE 7
Период не активности пароля - это количество дней, через которое пароль будет заблокирован после устаревания. Значение 0 означает немедленную блокировку после устаревания. Значение -1 означает, что блокировка после устаревания отключена.
Команда passwd
# определение текущих параметров парольной политики для учетной записи passwd -S testuser # формат вывода: <1> <2> <3> <4> <5> <6> <7> <8> # <1> - имя учетной записи # <2> - статус пароля # PS - password set (пароль задан) # NP - no password (пароль не задан) # LK - password locked (пароль заблокирован) # <3> дата последнего изменения пароля # <4> PASS_MIN_DAYS # <5> PASS_MAX_DAYS # <6> PASS_WARN_AGE # <7> период не активности # <8> расширенное описание статуса # вывод статуса всех учетных записей for u in `cat /etc/passwd | cut -d: -f1 | sort`; do passwd -S $u; done # блокировка пароля учетной записи passwd -l testuser # снятие блокировки пароля учетной записи passwd -u testuser # установка PASS_MIN_DAYS для учетной записи passwd -n <days> testuser # установка PASS_MAX_DAYS для учетной записи passwd -x <days> testuser # установка PASS_WARN_AGE для учетной записи passwd -w <days> testuser # установка периода не активности для учетной записи passwd -i <days> testuser
Команда usermod
# блокировка учетной записи usermod -L testuser # установка периода не активности для учетной записи usermod -f <days> testuser # установка даты истечения пароля usermod -e <дата в формате YYYY-MM-DD> testuser # отключение устаревания пароля usermod -e testuser
Команда useradd
# установка периода не активности по умолчанию для новых учетных записей useradd -D -f <days>
Команда chage
# вывод информации о параметрах учетной записи chage -l testuser Последний раз пароль был изменён : PASS_CHANGE_DATE Срок действия пароля истекает : PASS_CHANGE_DATE + PASS_MAX_DAYS Пароль будет деактивирован через : PASS_CHANGE_DATE + PASS_MAX_DAYS + INACTIVE_DAYS Срок действия учётной записи истекает : EXPIRE_DATE Минимальное количество дней между сменой пароля : PASS_MIN_DAYS Максимальное количество дней между сменой пароля : PASS_MAX_DAYS Количество дней с предупреждением перед деактивацией пароля : PASS_WARN_AGE # установка PASS_MIN_DAYS chage -m <num_days> testuser # установка PASS_MAX_DAYS # <num_days> = -1 (отключение устаревания пароля) # <num_days> = 99999 (второй способ отключения устаревания пароля) chage -M <num_days> testuser # установка PASS_CHANGE_DATE (дата последней смены пароля) # <date> = ГГГГ-ММ-ДД, или кол-во дней с 01.01.1970 # <date> = 0 (1.01.1970, установка требования смены пароля) chage -d <date> testuser # установка EXPIRE_DATE (дата после которой учетная запись считается заблокированной) # <date> = ГГГГ-ММ-ДД, или кол-во дней с 01.01.1970 # <date> = -1 (никогда) # <date> = 0 (1.01.1970, способ блокировки учетной записи) chage -E <date> testuser # установка INACTIVE_DAYS (через какое количество дней после истечения пароля блокируется возможность его изменения, т.е. учетная запись считается заблокированной) # <num_days> = -1 (никогда) # <num_days> = 0 (учетная запись блокируется сразу после истечения пароля, нет возможности изменить истекший пароль) chage -I <num_days>
Пример скрипта уведомления об истечении пароля
dexpire=$(chage -l myuser | grep "Password expires" | cut -d ':' -f 2 | sed 's/^ *//') if [ "$dexpire" = "never" ]; then echo Password will never expire elif [ $(date -d "$dexpire - 7 days" +"%s") -le $(date -d "now" +"%s") ]; then echo Password will expire $(date -d "$dexpire" +"%d.%m.%Y") echo -e '' fi
cron
Если у учетной записи истекает пароль, то ее задания cron перестают запускаться.
Сообщение об истечении пароля отправляется пользователю за PASS_WARN_AGE дней в почтовый файл пользователя. Если в профиле пользователя создать файл .forward, то все сообщения данному пользователю будут пересылаться на указанный в нем почтовый сервер и почтовый адрес.
Чтобы cron мог запускать задания под пользователем с истекшим паролем, необходимо внести корректировку в правила PAM. Если вы не уверены, что верно понимаете работу правил PAM, то лучше это не делать.