Antworten:
Die /etc/passwd
Datei enthält als letztes Element in der Benutzerzeile das Programm, das beim Anmelden ausgeführt werden soll. Für normale Benutzer wird dies normalerweise auf /bin/sh
oder eine andere Shell gesetzt (z. B. bash, zsh).
Traditionell Identitäten, die eigenen Prozesse oder Dateien oder andere Ressourcen verwendet werden , haben ihre „Schale“ Set /bin/false
wie in
syslog:x:101:102::/home/syslog:/bin/false
Das Pseudo-User-Syslog besitzt /var/log/syslog
und ist die einzige UID, die über Schreibrechte für diese Datei verfügt. Sie können sich jedoch nicht als User-Syslog anmelden, da kein Befehlsinterpreter ausgeführt werden muss.
Zu der Frage, die Sie beantworten möchten:
Erstellen Sie einen Benutzer john, der keine interaktive Shell erhalten soll.
Die Frage bedeutet "Erstellen Sie einen Benutzer mit dem Namen, john
der sich nicht anmelden und keine Befehle über eine Shell ausführen kann". Interaktiv beschreiben Sie die Funktionsweise der Shell: Der Benutzer gibt etwas ein und die Shell tut etwas entsprechend (es besteht eine Art Kommunikation zwischen dem Benutzer und der Shell). Das Wort "interaktiv" fügt der Frage keine Informationen hinzu, da die Shell-Sitzung interaktiv ist, solange ein Benutzer Befehle eingibt.
Es gibt auch den nicht interaktiven Modus, in dem der Benutzer eine Reihe von Befehlen, die er ausführen möchte, in einer Datei (ein sogenanntes Shell-Skript) speichert und die Datei anschließend ausführt. Einige Befehle verhalten sich unterschiedlich, je nachdem, ob die Shell interaktiv oder nicht interaktiv ausgeführt wird. Sie können hier mehr lesen (dieses Dokument ist für bash
, aber das gleiche Konzept gilt für andere Shells).
Zum Erstellen eines solchen Benutzers können Sie beim Durchblättern man useradd
die Anmeldeshell festlegen -s
oder --shell
. Sie können einen Benutzer auch /etc/passwd
wie gewohnt erstellen, wie Sie möchten (was Sie vermutlich bereits wissen?) Und dann wie in der Antwort von msw bearbeiten .
Ja, ändern Sie die Shell in der Kennwortdatei (/ etc / passwd) in ein Programm, das kein Shell-Escape zulässt.
wenn du ein bofh / bin / false sein willst, machst du genau das, was du willst.