Jak skonfigurować system Linux, aby wymusić na nowych użytkownikach zmianę hasła przy pierwszym logowaniu

10

Próbuję skonfigurować zasady haseł użytkowników na RHEL 6.6 i chcę, aby system poprosił nowo utworzonych użytkowników o zmianę hasła początkowego przy pierwszym logowaniu.

Zauważ, że próbowałem ustawić zmienną EXPIRE na 0 i NIEAKTYWNE na -1 w / etc / default / useradd, ale prowadzi to do wygaśnięcia konta nowego użytkownika po utworzeniu. Dane wyjściowe polecenia chage po utworzeniu użytkownika za pomocą tych zmiennych to:

 # 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

Gdy próbuję zalogować się w ramach konta użytkownika foo, pojawia się komunikat „Twoje konto wygasło. Skontaktuj się z administratorem systemu”.

Ale jeśli otworzę okno „Właściwości użytkownika”, wybierz kartę „Informacje o haśle” i zaznaczę „Wymuś zmianę hasła przy następnym logowaniu”, wynik będzie taki, jak się spodziewam. Nowy użytkownik zostanie poproszony o zmianę hasła. Wyjście polecenia chage w tym przypadku będzie:

 # 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

Kiedy loguję się pod użytkownikiem foo2, system prosi mnie o zmianę hasła.

Czy istnieje więc sposób skonfigurowania systemu do ustawiania parametrów konta użytkownika podczas tworzenia, tak jak w drugim przypadku?

Aktualizacja

 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

Nawet jeśli komentuję NIEAKTYWNE lub ustawię wartość dodatnią, konto wygasło, ale nie hasło.

Skonfigurowałem również PAM na komputerze.

Aktualizacja 2

Sprawdziłem to na maszynie z RHEL 6.2 i bez konfiguracji PAM. Efekt jest taki sam.

Mike_Lychkov
źródło
Powinieneś spróbować użyć chage -d 0 {user-name}.
Hastur
Czy istnieje sposób, aby zrobić to automatycznie podczas komendy useradd, a nie z dodatkowymi komendami lub akcjami?
Mike_Lychkov
1
EXPIRE=0w /etc/default/useraddpowinno załatwić sprawę. Czytałem, że próbowałeś. Czy możesz dodać nieskomentowane linie /etc/default/useradd? Jest zablokowany, nawet jeśli nie określisz NIEAKTYWNE = -1, ale inną wartość lub skomentujesz ten wiersz? Czy możesz określić, czy konta są zablokowane, nawet jeśli zostały utworzone za pomocą wiersza poleceń. I proszę, jeśli masz inne pytanie, opublikuj je na osobnej stronie, jeśli będzie ono miało inną odpowiedź.
Hastur
1
Używanie adduserpozwala wstawić chagepolecenie /usr/local/sbin/adduser.local. Możesz także ustawić pole wieku w / etc / shadow na 0 bezpośrednio. useraddto „narzędzie niskiego poziomu” przeznaczone do użycia w połączeniu z innymi poleceniami.
mpez0

Odpowiedzi:

0

Ponieważ pytasz o RHEL6, spojrzałem na kod źródłowy useradd (który jest dostarczany jako część pakietu „shadow”). W useradd.c jest funkcją o nazwie new_spent, w której ustawia się nowe hasło cienia. Tam rozwiązuje problem „wygasłego hasła przy tworzeniu” w następujący sposób:

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

Soooo ... Jeśli ustawisz zero, będzie to -1.

Autorzy programu specjalnie zakodowali, aby nie ustawiać starzenia na 0, więc nie będzie miało znaczenia, jeśli ustawisz go na 0 w parametrze / etc / default / useradd dla EXPIRE. (Gdybym to ja robił ten kod, sprawdziłbym, czy użytkownik ustawia hasło w poleceniu, a następnie zezwala na wygaśnięcie, ale to nie ja ...)

Ponadto zasugerowano powyżej, że można umieścić skrypt w /usr/local/sbin/adduser.local, aby wykonać polecenie „chage”. To była dobra rada dla systemu Debian / Ubuntu, w którym useradd jest skryptem perla, który rzeczywiście uruchamia ten plik, jeśli go znajdzie, ale w RHEL polecenie useradd jest plikiem binarnym C.

Gdybym był tobą i byłem zdeterminowany, aby uzyskać takie zachowanie na użytkowniku RHEL6, dostałbym SRPM dla pakietu cienia, skomentowałem te linie powyżej i zrobiłem rpmbuild na pakiecie i rockaway. Zwycięski!

P. Heffner
źródło
0

Dlaczego nie dodać tego do skryptu?

passwd -e username

Jeśli szukasz tylko pierwszego logowania, zadziała. -eNatychmiast wygasa hasło konta, więc następnym logowaniu użytkownik jest zmuszony do aktualizacji swojego hasła? (patrz man passwd)

tniles
źródło
A jeśli szukasz rozwiązania specyficznego dla gry, spróbuj przełącznika „-M / - maxdays” z wartością „0”. Nie znam się na chage, ale na stronie podręcznika wygląda to rozsądnie.
tniles,
-1

Automatyczny:

Zaktualizuj ten plik:

/etc/default/useradd

Ten plik zawiera szczegóły, jakie wszystkie ustawienia zostaną zastosowane do nowych użytkowników utworzonych w systemie za pomocą komendy useradd.

Wystarczy ustawić wartość EXPIRE = 0 w tym pliku, a następnie za każdym razem, gdy zostanie utworzony nowy użytkownik, będzie on zmuszony zmienić hasło przy następnym logowaniu.

Źródło: GeekRide

Teraz edycja tego pliku w terminalu była trudna. Więc zmieniłem uprawnienia do pliku na 777, używając:

chmod 777 /etc/default/useradd

i edytowałem go w grub.

(Dzięki Linux Command .)

Sprawdzone w mojej maszynie Wirtualnej Ubuntu 12.04.5.

Podręcznik:

Użyj następującej składni, aby zmusić użytkownika do zmiany hasła przy następnym logowaniu w systemie Linux:

# chage -d 0 {user-name}

W tym przykładzie wymuś na Tomie zmianę hasła przy następnym logowaniu, wprowadź:

# chage -d 0 tom

-d 0: Ustaw liczbę dni od 1 stycznia 1970 r., kiedy hasło zostało ostatnio zmienione. Data może być również wyrażona w formacie RRRR-MM-DD. Ustawiając go na zero, zmusisz użytkownika do zmiany hasła przy pierwszym logowaniu.

Źródło: nixCraft

Czysta kopia-wklej. Dosłownie ;)
Sprawdzone na mojej maszynie Wirtualnej Ubuntu 12.04.5.

Varad Mahashabde
źródło
OP chce zrobić to automatycznie podczas komendy useradd, jeśli przeczytasz powyższe komentarze.
Szalony
Nie skomentuje niczego innego, ale chmod -R 777 /jest bardzo głupią rzeczą!
PulseJet,
@PulseJet tak, wiem to z perspektywy czasu, a ta odpowiedź była dawno temu, więc proszę, niech tak będzie
Varad Mahashabde,
@VaradMahashabde to sugerowałbym usunięcie takich rzeczy z twoich odpowiedzi, ponieważ powinny one być przynajmniej rozsądne dla następnej osoby, która je czyta.
PulseJet,