GNU/Linux >> Linux Esercitazione >  >> Linux

Perché non è possibile utilizzare `su` per passare a utenti con password vuota?

Crea un nuovo account chiamato test :

$ sudo useradd test

test non ha una password in questo momento. Quindi

$ su test

non funziona. Se provi, ti viene chiesto un test la password. Non ne ha uno. Non è la stessa cosa che la sua password è vuota, quindi se inserisci una password vuota premendo invio, viene visualizzato il messaggio "su:Authentication Failure".

Lo stesso vale se passi a un tty e provi ad accedere come test :Una password vuota non è accettata.

Ora assegna test una password vuota:

$ sudo passwd -d test

Ora puoi accedere come test su un tty fornendo la stringa vuota come password. Tuttavia, se ci provi

$ su test

ancora una volta, ricevi ancora il messaggio "su:Authentication Failure" la sessione non passa all'utente test .

Perché è questo?

Risposta accettata:

Dall'output di ldd /bin/su , il su binary è compilato con pam librerie (libpam* ), quindi l'autenticazione, la gestione dell'account, l'avvio della sessione ecc. saranno gestiti da pam .

Quello che segue è come su di un tipico sistema Ubuntu è gestito da pam , dovresti trovare un approccio simile se stai usando un'altra distribuzione.

Il pam regole per su sono definiti nel file /etc/pam.d/su . Questo file include anche common-auth , common-passwd , common-session file dalla stessa directory dei modelli comuni per coprire le attività suggerite dal loro nome (e utilizzati in altri pam servizi abilitati).

Sul mio sistema, in fondo a /etc/pam.d/su ho:

@include common-auth
@include common-account
@include common-session

Le righe precedenti non riguardano il controllo della password nulla, è principalmente il lavoro di pam_unix modulo.

Ora /etc/pam.d/common-auth ha:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

Da man pam_unix :

nullo

L'azione predefinita di questo modulo è di non consentire all'utente l'accesso a un servizio se la sua password ufficiale è vuota. L'argomento nullok sovrascrive questo valore predefinito e consente a qualsiasi utente con una
password vuota di accedere al servizio.

nullok_secure

L'azione predefinita di questo modulo è di non consentire all'utente l'accesso a un servizio se la sua password ufficiale è vuota. L'argomento nullok_secure sovrascrive questa impostazione predefinita e consente a qualsiasi utente
con una password vuota di accedere al servizio purché il valore di PAM_TTY sia impostato su uno dei valori trovati in /etc/securetty.

come puoi vedere se il nullok_secure l'opzione è impostata, a meno che la variabile di ambiente PAM_TTY è impostato nel modo indicato, l'utente con password nulla non potrà accedere utilizzando su .

Quindi per consentire a qualsiasi utente con password nulla di fare su , devi avere il nullok argomento al pam_unix modulo:

auth    [success=1 default=ignore]      pam_unix.so nullok

questo non è sicuro in quanto common-auth file è utilizzato da molti altri servizi, anche solo per su questo non dovrebbe essere fatto. (Per motivi di test puoi impostarlo una volta e poi tornare all'originale. Anche se se vuoi fare il test, è meglio incorporare tutte le logiche in /etc/pam.d/su file, e modificare le modifiche in seguito piuttosto che scherzare con qualsiasi common-* file)

Correlati:come concatenare i comandi "date -d @xxxxxx" e "find ./"?
Linux
  1. Hashing delle password e perché ne abbiamo bisogno

  2. Automazione password SSH in Linux con sshpass

  3. Perché Xargs non può funzionare con Tail -f?

  4. Perché posso accedere con password parziali??

  5. CentOS / RHEL:gestione dell'invecchiamento delle password per gli utenti che utilizzano chage (con esempi pratici)

Controlla lo spazio su disco utilizzato su Linux con du

Come reimpostare una password di Windows con Linux

11 motivi per cui dovresti passare a Linux

Trova account utente con password vuota in Linux

Come proteggere GRUB con password in Linux?

ssh - perché posso accedere con password parziali?