Почему срок действия беспарольной учетной записи в PAM истекает?

Мы настроили политики нашей учетной записи в PAM в соответствии с рекомендациями RHEL7 STIG http://rhel7stig.readthedocs.io/en/latest/. У нас есть несколько учетных записей служб, пароли которых пусты, и для входа в систему используются ключи SSH. По истечении 60 дней срок действия пароля сервисных учетных записей истекает, и он отключается. Это не то поведение, которое я ожидал для учетной записи без пароля, я не думал, что истечение срока действия пароля будет применяться к учетным записям без пароля. Как сообщить PAM, что срок действия учетных записей без пароля не истекает?

В логин.defs

PASS_MIN_DAYS     1
PASS_MAX_DAYS     60
PASS_WARN_AGE     7
FAIL_DELAY        4

В /etc/default/useradd

INACTIVE=0

person Ryan Currah    schedule 08.09.2017    source источник


Ответы (2)


Так как системе все равно, есть ли у этих учетных записей пароль или нет. Вам нужно будет установить для PASS_MAX_DAYS значение 99999 или любое другое значение, подходящее для этих учетных записей.

person cptPH    schedule 08.09.2017
comment
Да, я не думаю, что есть способ (из коробки) создать отдельную политику, в которой на некоторых учетных записях отключено устаревание паролей. - person cptPH; 08.09.2017
comment
Вы можете отключить некоторые взаимодействия между PAM ‹-› SSH, как описано здесь: unix.stackexchange.com/questions/160268/, но это не кажется очень умным :/ - person cptPH; 08.09.2017
comment
Я нашел решение на справочной странице useradd. Создание учетной записи в качестве системной учетной записи кажется решением. Если я передам опцию --system Системные пользователи будут созданы без информации об устаревании в /etc/shadow - linux .die.net/man/8/useradd. - person Ryan Currah; 08.09.2017

Похоже, мне нужно создать эти учетные записи как системные учетные записи. На справочной странице useradd...

Системные пользователи будут созданы без информации об устаревании в /etc/shadow - https://linux.die.net/man/8/useradd

Пример команды.

useradd testuser --system

Если вы используете Ansible, вы можете указать систему в пользовательском модуле.

- user:
    name: testuser
    group: testuser
    system: yes

Результат виден в /etc/shadow. Обратите внимание, что для пользователя testuser не указан максимальный срок действия пароля.

[root@localhost ~]# useradd testuser --system
[root@localhost ~]# grep testuser /etc/shadow
testuser:!!:17417::::::

[root@localhost ~]# grep ryan /etc/shadow
ryan:*:18976:1:60:7:0::
person Ryan Currah    schedule 08.09.2017