Tecnicamente, a meno che pam
è impostato per controllare la shell con pam_shells
nessuno di questi può effettivamente impedire il tuo login, se non sei nella shell. Sul mio sistema sono anche di dimensioni diverse, quindi sospetto che effettivamente facciano qualcosa. Allora qual è la differenza? perché esistono entrambi? Perché dovrei usarne uno sullaltro?
-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
Commenti
- Vedi anche / usr / sbin / nologin come shell di accesso ha uno scopo di sicurezza?
- I ‘ m curioso perché / bin / false richiede 21k di codice per restituire un codice di ritorno ” 1 “! (e / sbin / nologin richiede solo 4.7k)
- utile da leggere. Qual è la differenza tra / sbin / nologin e / bin / false
- @MarkStewart Un po troppo tardi, ma potresti voler leggere Perché vero e falso sono così grandi? e Unesercitazione vorticosa sulla creazione di eseguibili ELF davvero adolescenti per Linux .
- @nxnev Sì, ‘ non ha pensato al sovraccarico di ELF. E dai miei vecchi tempi IBM cera un programma IEFBR14 che era una semplice istruzione di assemblaggio di un codice operativo: BR 14 – Branch to register 14, che avrebbe terminato il programma con il codice di ritorno impostato su qualunque cosa fosse nel registro 14!
Risposta
Quando /sbin/nologin
è impostato come shell, se lutente con il login della shell, riceveranno 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 file binario che esce immediatamente, restituendo false, quando viene “chiamato, quindi quando qualcuno che ha false
come log della shell in, vengono immediatamente disconnessi quando false
esce. Limpostazione della shell su /bin/true
ha lo stesso effetto di non consentire a qualcuno di accedere ma false
è probabilmente usato come convenzione su true
poiché è molto meglio per trasmettere il concetto che la persona non ha una shell.
Guardando la pagina man di nologin
“, si dice che è stata creata in 4.4 BSD (primi anni 90 ) quindi è avvenuto molto tempo dopo la creazione di false
. Luso di false
come shell è probabilmente solo una convenzione riportata dai primi giorni di UNIX.
nologin
è lopzione più user-friendly, con un messaggio personalizzabile dato allutente che cerca di accedere, quindi in teoria vorresti usarlo; ma sia nologin
e false
avranno lo stesso risultato finale di qualcuno che non ha una shell e non è in grado di ssh in.
Commenti
-
/usr/sbin/nologin
per distribuzioni basate su Debian. - Almeno anche limplementazione di BSD registra laccesso tenta di syslog come mostrato in opensource.apple.com/source/system_cmds/system_cmds-735/… , mentre / bin / false non ‘ registra nulla
- QUESTO – È una risposta straordinaria, con una grande storia presentata qui. Ben fatto Mark!
- La
/etc/nologin.txt
funzione di messaggio personalizzato non è disponibile in Ubuntu.
Risposta
Alcuni server FTP ti permetteranno laccesso FTP solo se hai una shell valida. /sbin/nologin
è considerata una shell valida, mentre /bin/false
non lo è.
(Penso che “valido” significhi il suo lo stato di uscita è 0, ma /etc/shells
può anche entrare in esso, probabilmente dipende dal sistema, dal software FTP e dalla configurazione.)
Commenti
- sì, questo ‘ fa probabilmente parte del programma ftp che usa pam e pam usa pam_shells che, come hai detto, controlla
/etc/shells
. Solo una supposizione … potrei sbagliarmi. - Ho appena controllato sia Ubuntu 8.04 che 14.04. Il comando nologin esce con lo stato 1 simile a false e nessuna delle opzioni true, false o nologin è inclusa in / etc / shells. Se lo fossero, un utente potrebbe utilizzare chsh per selezionare una shell di questo tipo e chiudersi fuori dal proprio account.
Risposta
/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 utilità POSIX molto vecchie e standard e nessuna delle due produce output per definizione.true a volte viene utilizzato per uno script di shell che dovrebbe essere ripetuto allinfinito, ad esempio:
while true; do ... # Waste time if [ $wasted_time -gt 100000 ]; then exit 0 fi ... done
/usr/sbin/nologin
è specificamente progettato per sostituisce una shell e produce un output che si lamenta del fatto che non si può accedere. Prima che esistesse, era comune usare /bin/false
per utenti fittizi, ma poteva creare confusione poiché lutente non “t sapere perché sono stati “rilanciati”.
Commenti
- degno di nota che
/bin/true
e/bin/false
non sono sempre ciò che otterrai in uno script di shell. Inzsh
true
efalse
sono incorporati, dovebash
utilizza le/bin/*
versioni
Risposta
Sulla mia macchina, nologin
visualizza sempre lo stesso messaggio, in inglese, ignorando gli argomenti . /bin/false
risponde a --version
e --help
nella lingua indicata da $LC_CTYPE
. Oltre a queste differenze estetiche, hanno lo stesso effetto.
Dal punto di vista dellusabilità, nologin
è meglio se utilizzato per laccount di una persona reale che parla inglese. Dal punto di vista della sicurezza, non cè differenza.
Commenti
- forse sembra
false
è più per gli account di sistema che non hanno un utente reale enologin
è per gli account disabilitati. - Qual è il tuo sistema operativo? Centos
nologin
la versione non accetta argomenti, ma può leggere il messaggio da/etc/nologin.txt
.
Risposta
Su Linux, /sbin/nologin
proviene dal progetto util-linux , mentre /bin/false
fa parte di GNU Coreutils . Hanno ruoli diversi e nologin ha la possibilità di stampare un messaggio per le persone che hanno come la loro shell che effettua il login. I comandi di linux provengono da BS D, dove sembrano avere una lunga storia di diversità. FreeBSD false
restituisce semplicemente 1 , mentre nologin
controlla assicurati che “s sia in esecuzione su TTY e invii un messaggio a syslog durante i tentativi di accesso. Le versioni di Linux sono un po più complicate (false
fare ogni sorta di cose divertenti con linternazionalizzazione per loutput di –help, presumo) ma essenzialmente si comporta allo stesso modo.
Risposta
/ bin / false lunico compito è 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 della shell del file della password. Se lutente prova ad accedere, la shell è / bin / false, quindi vengono chiuse immediatamente
Risposta
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 ha lo scopo di indicare allutente che non è consentito laccesso per un account. (Viene utilizzata una shell di login.)
Answer
Entrambi fanno più o meno lo stesso lavoro ma /bin/false
è utile per gli utenti non privilegiati. Daltra parte, /sbin/nologin
è per utenti privilegiati.
Commenti
- Oh, come hai fatto a questa conclusione?
- Probabilmente ha esaminato
/etc/passwd
. Ho appena dato unocchiata a/etc/passwd
di una versione Debian appena installata. In questa casella, quasi tutti gli account di sistema (ID utente < 1000) hanno/usr/sbin/nologin
come shell, con poche eccezioni. Tieni presente che non sono daccordo con la risposta di @pythondetective ‘. Sto solo speculando su cosa potrebbe averlo portato a questa conclusione. Il mio commento è un po in ritardo, però. - no! la shell di login predefinita non è la stessa cosa dei privilegi.