Disabilita l'accesso di un utente senza disabilitare l'account


87

Diciamo che creo un utente chiamato "fasullo" usando il addusercomando. Come posso assicurarmi che questo utente NON sia un'opzione di accesso valida, senza disabilitare l'account. In breve, voglio che l'account sia accessibile tramite su - bogus, ma non voglio che sia accessibile tramite un normale prompt di accesso.

Cercando in giro, sembra che debba disabilitare la password di quell'utente, ma farlo passwd -d bogusnon mi ha aiutato. In effetti, ha peggiorato le cose, perché ora potrei accedere a fasullo senza nemmeno digitare una password.

C'è un modo per disabilitare gli accessi regolari per un determinato account?

Nota: per essere chiari, so come rimuovere un utente dalle opzioni di menu delle schermate di accesso grafiche come gdm, ma questi metodi nascondono semplicemente l'account senza disabilitare effettivamente l'accesso. Sto cercando un modo per disabilitare completamente l'accesso regolare, inclusa la modalità testo.


2
La tua -dè la bandiera per eliminare la password. Questo è diverso dal disabilitarlo (riferito a come blocco, vedi la risposta di Chad).
Caleb,

1
Probabilmente vuoi disabilitarli completamente: unix.stackexchange.com/questions/7690/… Vedi anche questa domanda su Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Risposte:


102
passwd -l user

è quello che vuoi.

Ciò bloccherà l'account utente. Ma sarai ancora in grado di farlo

su - user

ma dovrai farlo su - usercome root.

In alternativa, puoi realizzare la stessa cosa anteponendo !a alla password dell'utente /etc/shadow(questo è tutto passwd -ldietro le quinte). E passwd -uannullerà questo.


27
Usando l' passwd -lopzione dovresti essere consapevole che l'utente potrebbe accedere usando un altro token di autenticazione (es. Una chiave SSH).
pl1nk

2
Si prega di vedere la mia risposta di seguito su una soluzione consigliata su come evitarlo.
Jörg Gottschlich,

2
Questo non funziona su Ubuntu 16.04. Cambierà la data di scadenza e non consentirà più all'utente secondario.
merlin,

1
È uguale --disabled-passwordall'opzione data a adduser? Fa la creazione di un utente senza --disabled-passworde poi correre passwd -lsu quell'utente ottenere lo stesso risultato come in esecuzione addusercon --disabled-passwordin primo luogo?
Haridsv,

39

La pagina man di passwd(1)dice su passwd -l:

Si noti che ciò non disabilita l'account. L'utente potrebbe comunque essere in grado di accedere utilizzando un altro token di autenticazione (ad esempio una chiave SSH). Per disabilitare l'account, gli amministratori dovrebbero usare usermod - scaduto 1 (questo imposta la data di scadenza dell'account al 2 gennaio 1970).

Così

usermod --expiredate 1 [LOGIN]

mi sembra il modo giusto di disabilitare un account che un utente non dovrebbe più essere in grado di utilizzare (ad esempio perché ha lasciato la società).


4
Sul mio CentOs 6.3, passwd -lblocca la sshconnessione per un utente e usermod --expiredate 1non lo fa!
fduff,

1
Sul mio CentOS 7.4, passwd -lnon blocca più le sshconnessioni per un utente e usermod --expiredate 1 userblocca. Per man passwdpuoi anche usare chage -E 0 userper bloccare un utente. Dopo aver fatto domanda usermodo chagesono in grado disudo su user
user12345

usermod --expiredate 0 [LOGIN]funziona anche, imposta la data di scadenza al 1 gennaio 1970 mentre un 1 imposta questo al 2 gennaio 1970.
slm

"Il valore 0 non deve essere utilizzato in quanto viene interpretato come un account senza scadenza o come scadenza il 1 ° gennaio 1970." - shadow (5)
Johannes

28

Esistono due metodi per impedire a un utente di accedere:

  1. puoi bloccare l'utente modificando /etc/passwd
  2. inviando direttamente il passwdcomando con l' -lopzione

Nel secondo caso l'utente può accedere utilizzando un altro token di autenticazione (ad es. Una chiave SSH).

Metodo n. 1

  1. Trova dov'è nologin: / bin / nologin o / bin / sbin / nologin
  2. Apri un terminale e accedi come root
  3. genere vi /etc/passwd

Ora sei nel passwdfile premi Insper modificare il file.

Modificare la riga seguente con l' nologinopzione ( /bin/bashsignifica che l'utente è in grado di accedere).

root:x:0:0:root:/root:/bin/bash

a questo. nologinsignifica che l'utente non è in grado di accedere.

root:x:0:0:root:/root:/bin/nologin

(o con / bin / sbin / nologin)

  1. Chiudi il vi Esc :wq

Metodo n. 2

Per bloccare l'utente: passwd -l username

Per sbloccare l'utente: passwd -u username


1
Su un sistema Ubuntu 14.04, ho trovato /usr/sbin/nologininvece di /bin/nologin.
Dennis Williamson,

7

È abbastanza semplice, devi semplicemente apportare alcune modifiche al /etc/passwdfile.

Devi semplicemente cambiare la shell che è generalmente di default, /bin/bashcioè puoi accedere usando questa shell cambiandola in /bin/nologino /bin/false. Si consiglia di cambiarlo in /bin/nologinperché /bin/falseè obsoleto.


4

Imposta /bin/falsecome shell in/etc/passwd


18
Quando si imposta la shell su /bin/false, si impedisce di usare su per agire come quell'utente. Inoltre, l'uso /bin/falsenon produce alcun errore né altri suggerimenti di ciò che è appena andato storto - nei casi in cui si desidera impedire che anche su venga utilizzato per ottenere una shell come tale utente, la shell dovrebbe essere cambiata in /sbin/nologincui produce un errore.
HedgeMage,

8
No, il suè ancora possibile per gli utenti con /bin/falseconchiglie in passwd- basta usare l'opzione --shell: su - --shell /bin/sh bogus.
Matej Kovac,

1
/usr/sbin/nologinha lo stesso effetto di /bin/false, ma mostra anche un utile messaggio informativo.
Rörd,

0

Quando blocciamo l'utente utilizzando il passwd -l usercomando, " !!" sono indicati nel /etc/shadowfile. Ma siamo ancora in grado di passare a una shell utente dall'account root, ma non siamo in grado di passare all'account utente dalla shell di login di altri utenti normali.

Possiamo anche disabilitare l'account fornendo /bin/nologino /bin/falsenel /etc/passwdfile. Quindi l'utente potrebbe non essere in grado di accedere.


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.