Як налаштувати Linux для примушування нових користувачів змінити свій пароль під час першого входу


11

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

Зауважте, що я намагався встановити змінну EXPIRE на 0, а INACTIVE на -1 in / 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, система просить мене змінити пароль.

Отже, чи є спосіб налаштувати систему для встановлення параметрів облікових записів користувачів при створенні, як у другому випадку?

Оновити

 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 на машині.

Оновлення 2

Я перевірив це на машині з RHEL 6.2 та без конфігурації PAM. Ефект той же.


Спробуйте використати chage -d 0 {user-name}.
Гастур

Чи є спосіб зробити це автоматично під час команди useradd, а не з додатковими командами чи діями?
Mike_Lychkov

1
EXPIRE=0в /etc/default/useraddповинен зробити роботу. Я читав, що ти спробував. Чи можете ви додати коментовані рядки /etc/default/useradd? Він заблокований, навіть якщо ви не вказуєте INACTIVE = -1, а інше значення, або якщо коментуєте цей рядок? Чи можете ви вказати, чи заблоковані облікові записи, навіть коли вони створені командним рядком. І, будь ласка, коли у вас є інше питання, опублікуйте його на окремій сторінці, якщо він буде мати різні відповіді.
Гастур

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

Відповіді:


1

Оскільки ви запитуєте про RHEL6, я переглянув вихідний код для useradd (який постачається у складі пакету "тінь"). У useradd.c - це функція під назвою new_spent, де вона встановлює новий вхід в тіньовий пароль. Там він вирішує питання про "термін дії пароля при створенні" таким чином:

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

Soooo ... Якщо ви встановите нуль, це значить -1.

Автори програми спеціально запрограмували проти встановлення старіння 0, тому не має значення, якщо ви встановите його на 0 в / etc / default / useradd параметрі для EXPIRE. (Якби це я робив цей код, я би подивився, чи встановив користувач пароль у команді, а потім дозволив закінчити термін дії, але це не я ...)

Також вище було запропоновано, що ви можете розмістити скрипт у /usr/local/sbin/adduser.local, щоб виконати команду "chage". Це було гарною порадою для системи Debian / Ubuntu, де useradd - це сценарій perl, який дійсно запускає цей файл, якщо він його знаходить, але на RHEL команда useradd є двійковою C.

Якби я був ти, і я вирішив отримати таку поведінку на RHEL6 useradd, я отримав би SRPM для тіньового пакету, прокоментуй ці рядки вище і зробимо rpmbuild на пакеті і роквей. Перемагає!


1

Чому б не додати це до сценарію?

passwd -e username

Якщо все, що ви шукаєте, це перший вхід, це спрацює. -eНегайно закінчується пароль облікового запису, тому при наступному вході користувача змушений оновити свій пароль? (див. man passwd)


І якщо ви шукаєте рішення, пов’язане з чатом, можливо, спробуйте перемикач "-M / - maxdays" зі значенням "0". Я не дуже знайомий з ченджем, але зі сторінки чоловіка це виглядає розумно.
tniles

-1

Автоматичне:

Оновіть цей файл:

/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}

У цьому прикладі змушуйте tom змінити пароль при наступному вході, введіть:

# chage -d 0 tom

-d 0: Встановіть кількість днів з 1 січня 1970 року, коли востаннє було змінено пароль. Дату також можна виразити у форматі РРРР-ММ-DD. Встановивши його в нуль, ви примусите користувача змінити пароль при першому вході.

Джерело: 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.