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)