Come configurare Linux per imporre ai nuovi utenti di cambiare la loro password al primo accesso


11

Sto cercando di configurare i criteri password degli utenti su RHEL 6.6 e desidero che il sistema chieda agli utenti appena creati di modificare la password iniziale al primo accesso.

Si noti che ho provato a impostare la variabile EXPIRE su 0 e INATTIVO su -1 in / etc / default / useradd, ma porta alla scadenza del nuovo account utente dopo la creazione. L'output del comando chage dopo la creazione dell'utente con queste variabili è:

 # 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

Quando provo ad accedere con un utente, viene visualizzato il messaggio "Il tuo account è scaduto. Contatta l'amministratore di sistema".

Ma se apro la finestra "Proprietà utente", seleziono la scheda "Informazioni password" e seleziono "Forza modifica password al prossimo accesso", il risultato sarà quello che mi aspetto. Al nuovo utente verrà chiesto di cambiare la password. L'output del comando chage in questo caso sarà:

 # 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

Quando accedo con l'utente foo2, il sistema mi chiede di cambiare la password.

Quindi, c'è un modo per configurare il sistema per impostare i parametri dell'account utente al momento della creazione come nel secondo caso?

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

Anche se commento INATTIVO o lo imposto su un valore positivo, l'account è scaduto, ma non una password.

Inoltre, ho configurato PAM sulla macchina.

Aggiornamento 2

Ho controllato questo sulla macchina con RHEL 6.2 e senza configurazione PAM. L'effetto è lo stesso.


Dovresti provare a usare chage -d 0 {user-name}.
Hastur,

C'è un modo per farlo automaticamente durante il comando useradd, non con comandi o azioni aggiuntivi?
Mike_Lychkov,

1
EXPIRE=0nel /etc/default/useradddovrebbe fare il lavoro. Ho letto che hai provato. Puoi aggiungere le righe non commentate di /etc/default/useradd? È bloccato anche se non si specifica INATTIVO = -1, ma un valore diverso o se si commenta quella riga? Puoi specificare se gli account sono bloccati anche quando creati dalla riga di comando. E, per favore, quando hai una domanda diversa pubblicala in una pagina separata se avrà una risposta diversa.
Hastur,

1
L'uso adduserti consente di inserire il chagecomando /usr/local/sbin/adduser.local. Puoi anche impostare il campo di età in / etc / shadow su 0 direttamente. useraddè l '"utilità di basso livello", intesa per essere utilizzata insieme ad altri comandi.
mpez0,

Risposte:


1

Dato che stai chiedendo di RHEL6, ho esaminato il codice sorgente per useradd (che viene consegnato come parte del pacchetto 'shadow'). In useradd.c è una funzione chiamata new_spent in cui imposta una nuova voce della password shadow. Qui risolve il problema "password scaduta alla creazione" in questo modo:

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

Soooo ... Se si imposta uno zero lo rende un -1.

Gli autori del programma hanno codificato specificamente contro l'impostazione dell'invecchiamento su 0, quindi non importa se lo si imposta su 0 nel parametro / etc / default / useradd per EXPIRE. (Se fossi stato io a fare quel codice avrei cercato di vedere se l'utente stava impostando la password nel comando e quindi permettendo la scadenza, ma non ero io ...)

Inoltre, è stato suggerito sopra che è possibile posizionare uno script in /usr/local/sbin/adduser.local per eseguire un comando 'chage'. Questo è stato un buon consiglio per un sistema Debian / Ubuntu in cui useradd è uno script perl che esegue effettivamente quel file se lo trova, ma su RHEL il comando useradd è un binario C.

Se fossi in te ed ero determinato a ottenere quel comportamento sull'utente RHEL6 e avrei ottenuto l'SRPM per il pacchetto shadow, commentare quelle righe sopra e fare un rpmbuild sul pacchetto e rockaway. Vincente!


1

Perché non aggiungere questo a uno script?

passwd -e username

Se tutto ciò che cerchi è il primo accesso, funzionerà. La -escade la password di account immediatamente, in modo che il successivo accesso l'utente è costretto ad aggiornare la propria password? (vedi man passwd)


E se stai cercando una soluzione specifica per chage, prova forse l'opzione "-M / - maxdays" con un valore di "0". Non ho molta familiarità con Chage, ma dalla pagina man sembra ragionevole.
tniles,

-1

Automatico:

Aggiorna questo file:

/etc/default/useradd

Questo file contiene i dettagli, quali saranno tutte le impostazioni applicate ai nuovi utenti creati nel sistema con il comando useradd.

Basta impostare il valore di EXPIRE = 0 in questo file e, successivamente, ogni volta che verrà creato un nuovo utente, saranno costretti a cambiare la password al prossimo accesso.

Fonte: GeekRide

Ora, modificare quel file nel terminale è stato difficile. Quindi ho modificato le autorizzazioni del file su 777 usando:

chmod 777 /etc/default/useradd

e lo ha modificato in grub.

(Grazie a Linux Command .)

Controllato nella mia macchina virtuale Ubuntu 12.04.5.

Manuale:

Utilizzare la sintassi seguente per forzare un utente a modificare la password al successivo accesso su un Linux:

# chage -d 0 {user-name}

In questo esempio, imponi a tom di cambiare la sua password al prossimo accesso, inserisci:

# chage -d 0 tom

-d 0: imposta il numero di giorni dal 1 ° gennaio 1970 in cui la password è stata modificata l'ultima volta. La data può anche essere espressa nel formato AAAA-MM-GG. Impostandolo su zero, costringerai l'utente a cambiare la password al primo accesso.

Fonte: nixCraft

Copia-incolla pura. Letteralmente. ;)
Controllato sulla mia Ubuntu 12.04.5 VM.


L'OP vuole che ciò avvenga automaticamente durante il comando useradd, se leggi i commenti sopra.
Insane

Non commenterò nient'altro, ma chmod -R 777 /è una cosa molto stupida da fare!
PulseJet

@PulseJet sì, lo so a posteriori e questa risposta è stata tanto tempo fa, quindi per favore lascia che sia
Varad Mahashabde

@VaradMahashabde quindi suggerirei di rimuovere tali contenuti dalle tue risposte, dal momento che dovrebbero almeno essere sani di mente per la prossima persona che li legge.
PulseJet
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.