Erstellen eines Benutzers, der keine interaktive Shell erhalten kann

17

Was ist eine interaktive und eine nicht interaktive Shell?

Fragen: Erstellen Sie einen Benutzer john, der keine interaktive Shell erhalten soll.

Wie können wir das machen?

user2914
quelle

Antworten:

9

Die /etc/passwdDatei 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/shoder 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/falsewie in

syslog:x:101:102::/home/syslog:/bin/false

Das Pseudo-User-Syslog besitzt /var/log/syslogund 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.

msw
quelle
9

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, johnder 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 useradddie Anmeldeshell festlegen -soder --shell. Sie können einen Benutzer auch /etc/passwdwie gewohnt erstellen, wie Sie möchten (was Sie vermutlich bereits wissen?) Und dann wie in der Antwort von msw bearbeiten .

phunehehe
quelle
3

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.

David Harris
quelle
-1
adduser username -s /sbin/nologin
H2 Mac
quelle
2
Beachten Sie, dass der Benutzername in der Frage als "john" angegeben ist. Es würde nicht schaden, ein wenig Prosa zu verwenden, um zu erklären, was Ihr Befehl tut und warum er die Anforderungen erfüllt.
Jeff Schaller