9

Я пытаюсь настроить политику паролей пользователей на RHEL 6.6, и я хочу, чтобы система попросила вновь созданных пользователей изменить первоначальный пароль при первом входе в систему.

Обратите внимание, что я попытался установить для переменной EXPIRE значение 0, а для параметра INACTIVE - значение -1 в /etc /default /useradd, но это привело к истечению срока действия новой учетной записи пользователя после создания. Вывод команды chage после создания пользователя с этими переменными:

 # chage -l foo
 Last password change                                : Feb 22, 2015
 Password expires                                    : May 23, 2015
 Password inactive                                   : never
 Account expires                                     : Feb 22, 2015
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Когда я пытаюсь войти под пользователем foo, появляется сообщение «Срок действия вашей учетной записи истек. Пожалуйста, свяжитесь с вашим системным администратором ".

Но если я открою окно «Свойства пользователя», выберите вкладку «Информация о пароле» и установите флажок «Принудительно изменить пароль при следующем входе в систему», результат будет таким, как я ожидаю. Новому пользователю будет предложено сменить пароль. Вывод команды chage в этом случае будет:

 # chage -l foo2
 Last password change                                : password must be changed
 Password expires                                    : password must be changed
 Password inactive                                   : password must be changed
 Account expires                                     : never
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Когда я вхожу в систему под именем пользователя foo2, система просит меня сменить пароль.

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

Upd

 cat /etc/default/useradd
 # useradd defaults file
 GROUP=100
 HOME=/home
 INACTIVE=-1
 EXPIRE=0
 SHELL=/bin/bash
 SKEL=/etc/skel
 CREATE_MAIL_SPOOL=yes

Даже если я прокомментирую НЕАКТИВНО или установлю положительное значение, срок действия учетной записи истек, но пароль отсутствует.

Также я настроил PAM на машине.

Upd 2

Я проверил это на машине с RHEL 6.2 и без конфигурации PAM. Эффект тот же.

3 ответа3

0

Поскольку вы спрашиваете о RHEL6, я посмотрел на исходный код для useradd (который поставляется как часть пакета 'shadow'). В useradd.c есть функция с именем new_spent, где она устанавливает новую запись теневого пароля. Там он решает проблему "истек срок действия пароля при создании" следующим образом:

if (0 == spent->sp_lstchg) {
/* Better disable aging than requiring a password change */
spent->sp_lstchg = -1;

Тааак ... Если вы установите ноль, это делает его -1.

Авторы программы специально разработали код установки устаревания на 0, поэтому не имеет значения, если вы установите его на 0 в параметре /etc /default /useradd для EXPIRE. (Если бы я делал этот код, я бы посмотрел, установил ли пользователь пароль в команде, а затем разрешил истечь, но это был не я ...)

Кроме того, выше было предложено, чтобы вы могли поместить скрипт в /usr/local/sbin/adduser.local для выполнения команды 'chage'. Это был хороший совет для системы Debian /Ubuntu, где useradd - это perl-скрипт, который действительно запускает этот файл, если он его находит, но на RHEL команда useradd - это двоичный код C.

Если бы я был вами, и я был полон решимости получить такое поведение на RHEL6 useradd, я бы получил SRPM для пакета shadow, закомментировал эти строки выше и выполнил rpmbuild для пакета и rockaway. Победа!

0

Почему бы не добавить
passwd -e username
к сценарию?

Если все, что вам нужно, это первый вход в систему, это будет работать. '-E' истекает срок действия пароля учетной записи, поэтому при следующем входе в систему пользователь вынужден обновить свой пароль? (см. man passwd)

-2

Автоматический режим:

Обновите этот файл:

/etc/default/useradd

Этот файл содержит подробную информацию о том, какие настройки будут применены к новым пользователям, созданным в системе с помощью команды useradd.

Просто установите значение EXPIRE = 0 в этом файле, и после этого каждый раз, когда будет создаваться новый пользователь, он будет вынужден сменить пароль при следующем входе в систему.

Источник: GeekRide

Теперь редактировать этот файл в терминале было сложно. Поэтому я изменил права доступа к файлу на 777, используя:

chmod 777 /etc/default/useradd

и отредактировал его в grub.

(Благодаря команде Linux.)

Проверено в моей Ubuntu 12.04.5 VM.

Руководство:

Используйте следующий синтаксис, чтобы заставить пользователя изменить свой пароль при следующем входе в Linux:

# chage -d 0 {user-name}

В этом примере, чтобы заставить Тома изменить свой пароль при следующем входе в систему, введите:

# chage -d 0 tom

-d 0: установить количество дней с 1 января 1970 года, когда пароль последний раз менялся. Дата также может быть выражена в формате ГГГГ-ММ-ДД. Установив его на ноль, вы заставите пользователя сменить пароль при первом входе в систему.

Источник: nixCraft

Чистая копия-паста. В прямом смысле. ;)
Проверено на моей Ubuntu 12.04.5 VM.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .