Come posso creare account utente con scadenza automatica?


20

Questo è quello che mi piacerebbe poter fare:

Dopo aver creato l'account di un utente, dovrebbero essere in grado di ssh-tunnel, ma il loro account viene rimosso automaticamente dopo 30 giorni a meno che il conto alla rovescia non venga ripristinato dall'utente root.

Come posso automatizzare questo? Dovrò gestire circa 15 utenti.

Risposte:


29

useradd

Puoi controllare per quanto tempo è valido l'account di un utente attraverso l'uso --expiredatedell'opzione useradd.

estratto dalla useraddpagina man

-e, --expiredate EXPIRE_DATE
     The date on which the user account will be disabled. The date is
     specified in the format YYYY-MM-DD.

     If not specified, useradd will use the default expiry date specified
     by the EXPIRE variable in /etc/default/useradd, or an empty string 
     (no expiry) by default.

Pertanto, quando si configura l'account dell'utente, è possibile specificare una data di +30 giorni nel futuro e aggiungerla al useraddcomando quando si configurano i loro account.

$ useradd -e 2013-07-30 someuser

chage

Puoi anche cambiare una data di account esistente usando il chagecomando. Per modificare una data di scadenza degli account, procedi come segue:

$ chage -E 2013-08-30 someuser

calcolando la data +30 giorni da adesso

Per fare questo è in realtà abbastanza banale usando il datecomando. Per esempio:

$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013

Puoi formattare usando le +FORMATopzioni per il datecomando, che finisce per darti quanto segue:

$ date -d "30 days" +"%Y-%m-%d"
2013-05-28

Mettere tutto insieme

Quindi, conoscendo i pezzi sopra, ecco un modo per metterli insieme. Innanzitutto quando crei un account esegui questo comando:

$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser

Quindi, quando desideri modificare le date di scadenza, esegui periodicamente questo comando:

$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser

Specificare periodi di tempo inferiori a 24 ore

Se si desidera che un utente sia attivo solo per alcuni minuti, non è possibile utilizzare le opzioni sopra indicate poiché richiedono di specificare una data. In tal caso, è possibile impostare a crontabper rimuovere / bloccare l'utente creato dopo il tempo specificato (ad esempio, 10 minuti) oppure è possibile effettuare una delle seguenti operazioni:

adduser someuser && sleep 600 && usermod --lock someuser

o

$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes

Riferimenti


3
Mi sono preso la libertà di cambiare% M (minuti) in% m (mese)
Anthon,

5

Se sei su Debian / Ubuntu dovresti usare addusere usermod. Sui sistemi basati su Debian useraddè considerato di basso livello e (secondo le pagine man):administrators should usually use adduser(8) instead

adduser non ha un'opzione di scadenza, quindi la usi solo per creare l'account.

usermodha l' opzione -e/ --expiredateper impostare la data di scadenza.

Calcola il parametro datecon: date -d "30 days" "+%Y-%m-%d"per ottenere:

usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username

1

Un altro modo (se il tuo sistema operativo non supporta la scadenza dell'account o questa funzione non funziona per qualsiasi motivo): imposta un cron job da eseguire tra 30 giorni che bloccherà questo account.

Di solito l'account viene bloccato impostando la password crittografata su un valore non valido; su FreeBSD, il pw lock Xcomando bloccherà l'account X.


1
Spiega come è possibile bloccare un account.
slm

Dipende dal sistema operativo, davvero.
sendmoreinfo,

4
Sarebbe comunque utile se tu facessi un esempio mostrandolo.
slm
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.