it-swarm.it

Qual è la differenza tra / sbin / nologin e / bin / false

Tecnicamente, a meno che pam sia impostato per controllare Shell con pam_shells nessuno di questi può effettivamente impedire l'accesso, se non sei su Shell. Sul mio sistema hanno anche dimensioni diverse, quindi sospetto che effettivamente facciano qualcosa. Quindi qual è la differenza? perché esistono entrambi? Perché dovrei usarne uno sopra l'altro?

-rwxr-xr-x 1 root root  21K Feb  4 17:01 /bin/false
-rwxr-xr-x 1 root root 4.7K Mar  2 14:59 /sbin/nologin
185
xenoterracide

Quando /sbin/nologin è impostato come Shell, se l'utente con quella Shell accede, riceverà un messaggio educato che dice "Questo account non è attualmente disponibile." Questo messaggio può essere modificato con il file /etc/nologin.txt.

/bin/false è solo un binario che esce immediatamente, restituendo false, quando viene chiamato, quindi quando qualcuno che ha false come Shell accede, vengono immediatamente disconnessi quando false esce. Impostazione di Shell su /bin/true ha lo stesso effetto di non consentire a qualcuno di accedere ma false è probabilmente usato come una convenzione su true poiché è molto meglio comunicare il concetto che una persona non ha una Shell.

Guardando la pagina man di nologin, dice che è stata creata in 4.4 BSD (primi anni '90), quindi è passata molto tempo dopo la creazione di false. L'uso di false come Shell è probabilmente solo una convenzione riportata dai primi giorni di UNIX.

nologin è l'opzione più intuitiva, con un messaggio personalizzabile dato all'utente che tenta di accedere, quindi teoricamente vorresti usarlo; ma entrambi nologin e false avranno lo stesso risultato finale di qualcuno che non ha una Shell e non è in grado di accedere.

212
Mark McKinstry

Alcuni server FTP ti consentiranno l'accesso FTP solo se hai una Shell valida. /sbin/nologin è considerato come una shell valida, mentre /bin/false non è.

(Penso che "valido" significhi che il suo stato di uscita è 0, ma /etc/shells può anche entrarci, probabilmente dipende dal sistema, dal software FTP e dalla tua configurazione.)

29
Mikel

/bin/false è un comando di sistema che viene utilizzato ogni volta che è necessario passare un comando a un programma che non dovrebbe fare altro che uscire con un errore. È il compagno di /bin/true. Entrambe sono utility POSIX molto vecchie e standard e non producono alcun output per definizione. true viene talvolta utilizzato per uno script Shell che dovrebbe eseguire un ciclo indefinito, come:

while true; do
    ...
    # Waste time
    if [ $wasted_time -gt 100000 ]; then
        exit 0
    fi
    ...
done

/usr/sbin/nologin è progettato specificamente per sostituire una Shell e produce output lamentando che non è possibile accedere. Prima che esistesse, era comune usare /bin/false per utenti fittizi, ma potrebbe essere fonte di confusione poiché l'utente non sa perché sono stati lanciati.

14
penguin359

Sulla mia macchina, nologin visualizza sempre lo stesso messaggio, in inglese, ignorando gli argomenti. /bin/false rispondere a --version e --help nella lingua indicata da $LC_CTYPE. Oltre a queste differenze cosmetiche, hanno lo stesso effetto.

Per quanto riguarda l'usabilità, nologin è migliore se utilizzato per conto di una persona reale che parla inglese. Per quanto riguarda la sicurezza, non c'è differenza.

Il processo/bin/false è solo quello di uscire con un codice di uscita diverso da zero.

Provalo dalla riga di comando:

$:> /bin/false
$:> echo $?
1
$:>

Alcune istituzioni usano/bin/false nel campo Shell del file delle password. Se l'utente tenta di accedere, Shell è/bin/false, quindi vengono immediatamente chiusi

3
shellter

Su Linux, /sbin/nologin proviene dal progetto til-linux , mentre /bin/false fa parte di GNU Coreutils . Servono ruoli diversi, e nologin ha la possibilità di stampare un messaggio per le persone che lo hanno come Shell che accedono. I comandi di Linux provengono da BSD, dove sembrano avere una lunga storia di differenze. FreeBSD false restituisce semplicemente 1 , mentre nologin verifica per assicurarsi che sia in esecuzione su un TTY e invia un messaggio a syslog durante i tentativi di accesso. Le versioni di Linux sono un po 'più complicate (false fanno ogni sorta di cose divertenti con l'internazionalizzazione per l'output di --help, presumo) ma essenzialmente funzionano allo stesso modo.

3
jsbillings

Potrebbero essere lo stesso programma, ma hanno significati diversi. Il nome del programma dice tutto.

  • / bin/false ha lo scopo di restituire un valore falso. Viene eseguito come programma.
  • / bin/nologin intende indicare all'utente che non è consentito l'accesso per un account. (Viene utilizzata una shell di accesso.)
1
BillThor