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

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

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. In zsh true e false sono incorporati, dove bash 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 e nologin è 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *