Technisch gesehen kann, sofern nicht so konfiguriert pam
ist , dass Ihre Shell mit pam_shells
keiner dieser Optionen überprüft wird , die Anmeldung verhindert werden, wenn Sie nicht in der Shell sind. Auf meinem System sind sie sogar unterschiedlich groß, daher vermute ich, dass sie tatsächlich etwas tun. Was ist der Unterschied? Warum existieren beide? Warum sollte ich eins übereinander verwenden?
-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
/bin/false
sollte überall existieren, aber nicht/sbin/nologin
: '/ sbin / nologin': Keine solche Datei oder kein solches Verzeichnis. Irgendeine Idee, warum es/usr/sbin/nologin
statt/sbin/nologin
Debian und Ubuntu ist?Antworten:
Wenn
/sbin/nologin
als Shell festgelegt ist, erhalten Benutzer, die sich mit dieser Shell anmelden, die höfliche Nachricht "Dieses Konto ist derzeit nicht verfügbar". Diese Nachricht kann mit der Datei geändert werden/etc/nologin.txt
./bin/false
ist nur eine Binärdatei, die sofort beendet wird und beim Aufruf false zurückgibt. Wenn sich also jemand mit einerfalse
Shell anmeldet, wird er beimfalse
Beenden sofort abgemeldet . Das Festlegen der Shell/bin/true
hat den gleichen Effekt, dass niemand sich anmelden kann,false
wird jedoch wahrscheinlich als Konvention verwendet,true
da es viel besser ist, das Konzept zu vermitteln, dass eine Person keine Shell hat.In der
nologin
Manpage heißt es, dass es in 4.4 BSD (Anfang der 1990er Jahre) erstellt wurde, also kam es lange nachdemfalse
es erstellt wurde. Die Verwendungfalse
als Shell ist wahrscheinlich nur eine Konvention, die aus den Anfängen von UNIX übernommen wurde.nologin
ist die benutzerfreundlichere Option, bei der dem Benutzer eine anpassbare Meldung angezeigt wird, die versucht, sich anzumelden, sodass Sie diese Option theoretisch verwenden möchten. aber beidenologin
undfalse
werden das gleiche Ergebnis haben, wenn jemand keine Shell hat und nicht in der Lage ist, sich einzuschalten.quelle
/usr/sbin/nologin
für Debian-basierte Distributionen.Bei einigen FTP-Servern können Sie nur dann auf FTP zugreifen, wenn Sie über eine gültige Shell verfügen.
/sbin/nologin
wird als gültige Shell angesehen,/bin/false
ist es aber nicht.(Ich denke, "gültig" bedeutet, dass der Beendigungsstatus 0 ist, er
/etc/shells
kann aber auch eingegeben werden. Dies hängt wahrscheinlich vom System, der FTP-Software und Ihrer Konfiguration ab.)quelle
/etc/shells
. Nur eine Vermutung ... Ich könnte mich irren./bin/false
ist ein Systembefehl, der immer dann verwendet wird, wenn Sie einen Befehl an ein Programm übergeben müssen, das nichts weiter tun soll, als mit einem Fehler zu beenden. Es ist der Begleiter zu/bin/true
. Beide sind sehr alte und standardmäßige POSIX-Dienstprogramme und erzeugen per Definition keine Ausgabe. true wird manchmal für ein Shell-Skript verwendet, das eine Endlosschleife ausführen soll, z./usr/sbin/nologin
wurde speziell entwickelt, um eine Shell zu ersetzen und erzeugt eine Ausgabe, bei der Sie sich nicht anmelden können. Früher war die Verwendung/bin/false
für Dummy-Benutzer üblich, kann jedoch verwirrend sein, da der Benutzer nicht weiß, warum sie gestartet wurden.quelle
/bin/true
und/bin/false
sind nicht immer das, was Sie in einem Shell-Skript erhalten. Inzsh
true
undfalse
sindbash
/bin/*
Auf meinem Computer wird
nologin
immer dieselbe Meldung in Englisch angezeigt, wobei die Argumente ignoriert werden./bin/false
antwortet auf--version
und--help
in der von angegebenen Sprache$LC_CTYPE
. Abgesehen von diesen kosmetischen Unterschieden haben sie den gleichen Effekt.In puncto
nologin
Benutzerfreundlichkeit ist es besser, wenn es für eine reale Person verwendet wird, die Englisch spricht. In Bezug auf die Sicherheit gibt es keinen Unterschied.quelle
false
eher für Systemkonten gilt, die keinen echten Benutzer haben, undnologin
für deaktivierte Konten.nologin
Version akzeptiert keine Argumente, kann jedoch Nachrichten von lesen/etc/nologin.txt
./ bin / false Nur Job ist das Beenden mit einem Exit-Code ungleich Null.
Probieren Sie es an der Kommandozeile aus:
Einige Institutionen verwenden / bin / false im Shell-Feld der Passwortdatei. Wenn der Benutzer versucht, sich anzumelden, lautet die Shell / bin / false und wird sofort beendet
quelle
Unter Linux
/sbin/nologin
stammt es aus dem Projekt util-linux , während/bin/false
es Teil von GNU Coreutils ist . Sie haben unterschiedliche Rollen, und nologin hat die Möglichkeit, eine Nachricht für Benutzer auszudrucken, die sich als Shell anmelden. Die Linux-Befehle stammen von BSD, wo sie eine lange Geschichte des Andersseins zu haben scheinen. Das FreeBSD gibtfalse
einfach 1 zurück , während esnologin
prüft, ob es auf einem TTY läuft, und bei Anmeldeversuchen eine Nachricht an syslog sendet. Die Linux-Versionen sind etwas komplizierter (false
ich nehme an, sie erledigen alle möglichen unterhaltsamen Dinge mit Internationalisierung für die Ausgabe von --help), verhalten sich aber im Wesentlichen genauso.quelle
Sie könnten dasselbe Programm sein, aber sie haben unterschiedliche Bedeutungen. Der Programmname sagt alles.
quelle
Beide erledigen mehr oder weniger den gleichen Job, sind jedoch
/bin/false
für nicht privilegierte Benutzer nützlich. Auf der anderen Seite/sbin/nologin
ist für privilegierte Benutzer.quelle
/etc/passwd
. Ich habe mir gerade/etc/passwd
eine frisch installierte Debian-Strecke angesehen. In diesem Feld haben fast alle Systemkonten (Benutzer-IDs <1000)/usr/sbin/nologin
als Shell, mit wenigen Ausnahmen. Bitte beachten Sie, dass ich mit der Antwort von @ pythondetective nicht einverstanden bin. Ich spekuliere nur, was ihn zu dieser Schlussfolgerung hätte führen können. Mein Kommentar ist allerdings etwas spät.