Was ' ist der Unterschied zwischen / sbin / nologin und / bin / false

Technisch, es sei denn pam ist so eingerichtet, dass Ihre Shell mit pam_shells überprüft wird. Keine dieser Optionen kann Ihre Anmeldung tatsächlich verhindern, wenn Sie sich nicht in der Shell befinden. Auf meinem System Sie sind sogar unterschiedlich groß, also vermute ich, dass sie tatsächlich etwas tun. Was ist also der Unterschied? Warum existieren beide? Warum sollte ich eins über das andere 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 

Kommentare

Antwort

Wenn /sbin/nologin als Shell festgelegt ist, falls Benutzer Wenn sich diese Shell anmeldet, erhalten sie eine höfliche Nachricht mit der Aufschrift „Dieses Konto ist derzeit nicht verfügbar“. Diese Nachricht kann mit der Datei /etc/nologin.txt geändert werden.

/bin/false ist nur eine Binärdatei, die sofort beendet wird und false zurückgibt, wenn sie aufgerufen wird. Wenn also jemand false als Shell-Protokolle hat In werden sie sofort abgemeldet, wenn false beendet wird. Das Setzen der Shell auf /bin/true hat den gleichen Effekt, dass sich niemand anmelden kann aber false wird wahrscheinlich als Konvention über true verwendet, da es viel besser ist a Um das Konzept zu vermitteln, dass eine Person keine Shell hat.

Auf der Manpage von nologin heißt es, dass sie in 4.4 BSD (Anfang der 90er Jahre) erstellt wurde ) so kam es lange nachdem false erstellt wurde. Die Verwendung von false als Shell ist wahrscheinlich nur eine Konvention, die aus den frühen Tagen von UNIX übernommen wurde.

nologin ist die benutzerfreundlichere Option, bei der eine anpassbare Meldung an den Benutzer gesendet wird, der versucht, sich anzumelden. Daher möchten Sie diese theoretisch verwenden. Aber sowohl nologin als auch false haben das gleiche Endergebnis, wenn jemand keine Shell hat und nicht in der Lage ist, zu ssh.

Kommentare

  • /usr/sbin/nologin für Debian-basierte Distributionen.
  • Zumindest die BSD-Implementierung protokolliert auch Die Anmeldung versucht, ein Syslog zu erstellen, wie in opensource.apple.com/source/system_cmds/system_cmds-735/… angezeigt , während / bin / false nicht ‚ nichts protokollieren würde
  • DIESES – Ist eine erstaunliche Antwort, mit einer großartigen Geschichte, die hier vorgestellt wird. Gut gemacht, Mark!
  • Die benutzerdefinierte Nachrichtenfunktion /etc/nologin.txt ist in Ubuntu nicht verfügbar.

Antwort

Einige FTP-Server erlauben Ihnen nur dann einen FTP-Zugriff, wenn Sie über eine gültige Shell verfügen. /sbin/nologin wird als gültige Shell angesehen, während /bin/false dies nicht ist.

(Ich denke, „valid“ bedeutet seine Der Exit-Status ist 0, aber möglicherweise wird auch /etc/shells eingegeben. Dies hängt wahrscheinlich vom System, der FTP-Software und Ihrer Konfiguration ab.)

Kommentare

  • Ja, das ‚ ist wahrscheinlich Teil des FTP-Programms mit pam und pam mit pam_shells, das, wie Sie sagten, /etc/shells. Nur eine Vermutung … Ich könnte mich irren.
  • Ich habe gerade Ubuntu 8.04 und 14.04 überprüft. Der Befehl nologin wird mit dem Status 1 beendet, der false ähnelt, und in / etc / shells ist weder true noch false oder nologin enthalten. Wenn dies der Fall wäre, könnte ein Benutzer chsh verwenden, um eine solche Shell auszuwählen und sich von seinem Konto auszuschließen.

Antwort

/bin/false ist ein Systembefehl, der immer dann verwendet wird, wenn Sie einen Befehl an ein Programm übergeben müssen, das nur mit einem Fehler beenden soll. Es ist der Begleiter von /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 unbegrenzte Schleife ausführen soll, z. B.:

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

/usr/sbin/nologin wurde speziell für entwickelt Ersetzen Sie eine Shell und erzeugen Sie eine Ausgabe, in der Sie sich nicht anmelden können. Bevor sie existierte, war es üblich, /bin/false für Dummy-Benutzer zu verwenden, dies könnte jedoch verwirrend sein, da der Benutzer dies nicht tut wissen, warum sie „angepfiffen“ werden.

Kommentare

  • Erwähnenswert ist, dass /bin/true und /bin/false sind nicht immer das, was Sie in einem Shell-Skript erhalten. In zsh true und false sind integrierte Funktionen, wobei bash die Versionen /bin/*

verwendet

Antwort

Auf meinem Computer zeigt nologin immer dieselbe Meldung auf Englisch an und ignoriert Argumente /bin/false antwortet auf --version und --help in der durch $LC_CTYPE angegebenen Sprache. Abgesehen von diesen kosmetischen Unterschieden haben sie den gleichen Effekt.

In Bezug auf die Benutzerfreundlichkeit ist nologin besser, wenn es für eine reale Person verwendet wird, die spricht Englisch. In Bezug auf die Sicherheit gibt es keinen Unterschied.

Kommentare

  • scheint vielleicht false zu sein ist mehr für Systemkonten, die keinen echten Benutzer haben, und nologin ist für deaktivierte Konten.
  • Was ist Ihr Betriebssystem? Centos nologin -Version akzeptiert keine Argumente, kann jedoch Nachrichten aus /etc/nologin.txt lesen.

Antwort

Unter Linux stammt /sbin/nologin aus dem Projekt util-linux , während /bin/false ist Teil von GNU Coreutils . Sie haben unterschiedliche Rollen, und Nologin hat die Möglichkeit, eine Nachricht für Personen zu drucken, die dies getan haben Es ist ihre Shell, die sich anmeldet. Die Linux-Befehle stammen von BS D, wo sie eine lange Geschichte des Andersseins zu haben scheinen. Die FreeBSD false gibt einfach 1 zurück, während die nologin dies überprüft Stellen Sie sicher, dass „s auf einem TTY ausgeführt wird und bei Anmeldeversuchen eine Nachricht an syslog sendet. Die Linux-Versionen sind etwas komplizierter ( mache alle möglichen lustigen Sachen mit Internationalisierung für die Ausgabe von –help, nehme ich an), aber im Wesentlichen auf die gleiche Weise.

Antwort

/ bin / false Nur der Job besteht darin, mit einem Exit-Code ungleich Null zu beenden.

Versuchen Sie es in der Befehlszeile:

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

Einige Institutionen verwenden / bin / false im Shell-Feld der Kennwortdatei. Wenn der Benutzer versucht, sich anzumelden, lautet die Shell / bin / false, sodass sie sofort beendet werden.

Antwort

Sie könnten dasselbe Programm sein, haben aber unterschiedliche Bedeutungen. Der Programmname sagt alles.

  • / bin / false soll einen falschen Wert zurückgeben wird als Programm ausgeführt.
  • / bin / nologin soll dem Benutzer anzeigen, dass für ein Konto keine Anmeldung zulässig ist. (Es wird eine Anmeldeshell verwendet.)

Antwort

Beide erledigen mehr oder weniger den gleichen Job, aber /bin/false ist nützlich für nicht privilegierte Benutzer. Auf der anderen Seite ist /sbin/nologin für privilegierte Benutzer.

Kommentare

  • Oh, wie haben Sie das gemacht? zu diesem Schluss kommen?
  • Wahrscheinlich hat er /etc/passwd untersucht. Ich habe mir gerade /etc/passwd einer frisch installierten Debian-Strecke angesehen. In diesem Feld haben fast alle Systemkonten (Benutzer-IDs < 1000) mit wenigen Ausnahmen /usr/sbin/nologin als Shell. Bitte beachten Sie, dass ich der Antwort von @pythondetective ‚ nicht zustimme. Ich spekuliere nur, was ihn zu dieser Schlussfolgerung geführt haben könnte. Mein Kommentar ist allerdings etwas spät.
  • nein! Die Standard-Anmeldeshell entspricht nicht den Berechtigungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.