Come disabilito completamente un account?


48

Come disabilito completamente un account? passwd -lnon consentirà a nessuno di accedere a un account utilizzando una password, ma è comunque possibile accedere tramite chiavi private / pubbliche. Come disabiliterei completamente l'account? Come soluzione rapida ho rinominato il file in authorized_keys_lockme. C'è un altro modo?


3
Stai pensando di riattivarlo alla fine? Blocchi di sistema? In caso contrario, rimuoverei semplicemente l'account.
Ken,

Risposte:


59

Il modo corretto secondo usermod(8)è:

usermod --lock --expiredate 1970-01-02 <username>

(In realtà, l'argomento --expiredatepuò essere qualsiasi data prima della data corrente nel formato YYYY-MM-DD.)


Spiegazione:

  • --lockblocca la password dell'utente. Tuttavia, l'accesso con altri metodi (ad es. Chiave pubblica) è ancora possibile.

  • --expiredate YYYY-MM-DDdisabilita l'account alla data specificata. Secondo il man shadow 51970-01-01 è un valore ambiguo e non deve essere utilizzato.

L'ho provato sulla mia macchina. Non è possibile accedere con password o chiave pubblica dopo aver eseguito questo comando.


Per riattivare l'account in un secondo momento è possibile eseguire:

usermod --unlock --expiredate '' <username>

7
Non usare 1970-01-01 in quanto imposterà il campo di scadenza / etc / shadow su 0. shadow (5) Il valore 0 non deve essere usato in quanto interpretato come un account senza scadenza o come scadenza su 1 gennaio 1970. Si prega di utilizzare: usermod --lock - scaduto 1970-02-02 <nomeutente>
Marcus Maxwell

4
Sarebbe bello se si potesse anche fornire il metodo per invertire questa operazione. Sembra che usermod --unlock --expiredate '' usernamelo farà.
Bob,

3
Aggiungendo a ciò che @MarcusMaxwell ha scritto: La pagina man per usermoddice:Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3,

1
Perché --expiredate 1non è abbastanza da solo?
Thomas Jensen,

Ma sudo su usernamesembra funzionare usando un altro account.
xuhdev,

10

Blocca la password e modifica la shell in /bin/nologin.

sudo usermod --lock --shell /bin/nologin username

(O più concisamente sudo usermod -L -s /bin/nologin username.)


Come 'cambio la shell in / bin / nologin.'?

5
@mattdm Questa non è una soluzione completa, in quanto un utente può ancora specificare un comando da eseguire. Ad esempio ssh username@hostname /bin/bash, darà all'utente un prompt di bash, indipendentemente dalla shell predefinita.
phunehehe,

4
@phunehehe - l'hai provato? Nel registro verrà visualizzato "Utente [nome utente] non consentito perché la shell / bin / nologin non esiste".
Mattdm,

2
Per quanto ne so, il comportamento della shell non valida non è effettivamente documentato. D'altra parte, la pagina man dice che se la password ha un vantaggio !! su Linux l'account verrà trattato come bloccato e in realtà non funziona. Quindi, sai, la documentazione e la realtà sono comunque solo corrispondenze approssimative. :)
mattdm,

2
sudo chsh -s /bin/nologinsarebbe meglio che modificarlo /etc/passwda mano. Inoltre, su alcuni sistemi, lo è /sbin/nologin.
Mikel,

3

Ecco un altro modo semplice. È possibile impostare l'account utente scaduto. Ciò impedirà l'accesso sia basato su password che su chiave ssh per l'account, ma non toccherà la password.

Per bloccare l'account:

# chage -E 0 username

L'account utente "nome utente" verrà bloccato sul sistema. Per riattivare l'account utente, procedere come segue.

Per sbloccare l'account:

# chage -E -1 username

L'account utente "nome utente" verrà riattivato sul sistema con la stessa password di prima. Il binario 'chage' fa parte del pacchetto shadow-utils su Red Hat Linux o del pacchetto passwd su Debian Linux.


3

Non ho un rappresentante sufficiente per commentare la risposta di Legate, ma volevo condividere che questa risposta ci ha aiutato con un altro caso d'uso:

1.) l'account in questione è un account di servizio locale che esegue un'applicazione, non un account utente finale.

2.) gli utenti finali sudo /bin/su <user>devono inserirsi come loro stessi e diventare utenti e amministrare l'applicazione a causa di un requisito di audit trail che l'account del servizio non può avere accesso diretto.

3.) l'account del servizio deve avere una shell valida ( /bin/bashe non /sbin/nologin), poiché una piattaforma di pianificazione aziendale (l'agente viene eseguito come root localmente) deve essere in grado su - <user>e non ha la su -s /bin/bash <user>capacità di una shell completa ed è necessaria per eseguire i lavori in remoto per operazioni batch più grandi che comprendono più server e database.


Quindi ...

passwd -l <user>
Non soddisfa i vincoli perché l'autenticazione con chiave pubblica ignora PAM e consente comunque l'accesso diretto.

usermod -s /sbin/nologin <user>
Non soddisfa i vincoli perché interrompe lo scheduler aziendale

usermod --lock --expiredate 1970-01-01 <user>
Questo è il nostro vincitore L'accesso remoto è disabilitato, ma root può ancora su <user>, come possono fare altri utenti, sudoquindi lo scheduler funziona correttamente e gli utenti finali autorizzati possono diventare l'account del servizio di destinazione secondo necessità.

Grazie per la soluzione!


1

Per eliminarlo interamente, utilizzare userdel.

Si noti che se si elimina un account esiste il rischio che il suo ID utente venga comunque utilizzato nel file system da qualche parte e che un nuovo utente erediti la proprietà di tali file se è entrato con lo stesso ID utente.

Si desidera modificare il proprietario di tutti i file di proprietà dell'utente eliminato.

Se si desidera aggiungere l'utente in un secondo momento, salvare le sue righe da /etc/passwd(e su Solaris /etc/shadow) in file temporanei come /etc/passwd_deleted.

In questo modo quando lo aggiungi di nuovo puoi utilizzare lo stesso ID utente e la stessa password (che è crittografata in uno dei file sopra)

Disclaimer: ho imparato UNIX da solo, quindi non sarei sorpreso se c'è un modo migliore per disabilitare temporaneamente l'utente. In realtà non so nemmeno di cosa stai parlando le chiavi private / pubbliche. Inoltre sono sicuro che esiste un findcomando che può essere utilizzato per cercare i file con quel userid userid


1
google authorized_keys o prova a leggere questo eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html in pratica invece di usare una password, inserisci la tua chiave di pubblicazione in quel file e quando ti connetti con ssh verrai automaticamente loggato se quello del pubblico corrisponde alla tua chiave privata corrente

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.