Как настроить linux, чтобы заставить новых пользователей менять свой пароль при первом входе в систему


11

Я пытаюсь настроить политику паролей пользователей на 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. Эффект тот же.


Вы должны попробовать использовать chage -d 0 {user-name}.
Хастур

Есть ли способ сделать это автоматически во время команды useradd, а не с помощью дополнительных команд или действий?
Mike_Lychkov

1
EXPIRE=0в /etc/default/useraddдолжен сделать работу. Я читал, что вы пытались. Можете ли вы добавить без комментариев строки /etc/default/useradd? Он заблокирован, даже если вы не укажете INACTIVE = -1, а другое значение или если вы прокомментируете эту строку? Можете ли вы указать, заблокированы ли учетные записи, даже если они созданы из командной строки. И, пожалуйста, если у вас есть другой вопрос, разместите его на отдельной странице, если он будет иметь разный ответ.
Hastur

1
Использование adduserпозволяет ввести chageкоманду /usr/local/sbin/adduser.local. Вы также можете установить поле возраста в / etc / shadow равным 0. useradd«утилита низкого уровня», предназначенная для использования в сочетании с другими командами.
mpez0

Ответы:


1

Поскольку вы спрашиваете о 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. Победа!


1

Почему бы не добавить это в скрипт?

passwd -e username

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


И если вы ищете решение для конкретного чейджа, возможно, попробуйте переключатель «-M / - maxdays» со значением «0». Я не очень знаком с chage, но со страницы руководства это выглядит разумно.
tniles

-1

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

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

/etc/default/useradd

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

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

Источник: GeekRide

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

chmod 777 /etc/default/useradd

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

(Благодаря Linux Command .)

Проверено в моей 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.


ОП хочет, чтобы это делалось автоматически во время команды useradd, если вы прочитали комментарии выше.
Безумный

Больше ничего комментировать не буду, но делать chmod -R 777 /это очень глупо!
PulseJet

@PulseJet да, я знаю, что в ретроспективе, и этот ответ был давным-давно, поэтому, пожалуйста, просто позвольте ему быть
Варад Махашабде

@VaradMahashabde, тогда я бы предложил удалить такие вещи из ваших ответов, так как они должны быть, по крайней мере, нормальными для следующего человека, который их читает.
PulseJet
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.