
Problem
In Debian 10 möchte ich einen Benutzer erstellen, der sich nicht direkt anmelden kann. Man sollte nur mithilfe der su
Binärdatei auf den Benutzer zugreifen können. In meinem Ubuntu 18.04-Setup habe ich genau dies getan und es hat wunderbar funktioniert, aber in Debian 10 kann ich dies nicht tun.
Hinweis
Der Benutzer, der sich anmelden kann, verfügt nicht über die Berechtigung zur Verwendung sudo
.
Was ich getan habe
Ich habe einen Benutzer mit der Standard-Shell eingerichtet /usr/sbin/nologin
. Aber wenn ich versuche, auf diesen Benutzer zuzugreifen, su --shell=/bin/bash user
gelingt mir dies nicht.
Minimalbeispiel
# useradd --shell /usr/sbin/nologin locked
# passwd locked
Enter new UNIX password: *secret*
Retype new UNIX password: *secret*
passwd: password updated successfully
$ su --shell /bin/bash locked
Password: *secret*
This account is currently not available.
Warum funktioniert das in Debian nicht mehr?
Bearbeitung 1:
Ausgabe von /etc/shells
:
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/zsh
/usr/bin/zsh
Bearbeitung 2:
Eine etwas ausführlichere Antwort auf das, was ich erreichen möchte:
Ich versuche, einen Benutzer zu erstellen (Benutzer1), der sich entweder per SSH oder über einen Monitor und eine Tastatur am Computer anmelden kann. DiesBenutzer1Benutzer sollten eingeschränkte Rechte haben. Eine dieser Einschränkungen besteht darin, dass er sudo
die Anwendung nicht verwenden kann, es ihm schlicht nicht gestattet ist.
Dann habe ich einen zweiten Benutzer (Benutzer2), die die sudo-Anwendung verwenden können, um einige Konfigurationsaufgaben auszuführen, wie das Ändern von Netzwerkeinstellungen oder andere Dinge. DiesBenutzer2sollte standardmäßig für die Anmeldung gesperrt sein. Also keine Anmeldung per SSH und (was eher zu meinem Problem gehört) keine Anmeldung per Monitor und Tastatur.
--> Wenn jemand eine Aufgabe ausführen möchte, muss er sich als eingeschränkter Benutzer anmeldenBenutzer1, ändern Sie den Benutzer inBenutzer2und dann darf er irgendwelche Konfigurationen oder ähnliches ändern.
Dies ist im Großen und Ganzen die Situation, die ich erreichen möchte. Es gibt einige feinere Details dazu, was die Benutzer tun dürfen und was nicht. Aber um es so einfach wie möglich zu beschreiben, habe ich es einfach mit `sudo erklärt.
Antwort1
Wenn Ihr Benutzer eine Login-Shell hatte, müssen Sie Ihren Befehl folgendermaßen eingeben: su --shell=/bin/bash locked
oder sudo -u locked /bin/bash
,vorausgesetzt, die für den Zielbenutzer angegebene Standardshell ist aufgeführt in/etc/shell
.
(Beachten Sie, dass nach der langen Option ein Gleichheitszeichen steht --shell
.)
Jedoch:
Der Sinn eines Benutzers ohne Login-Shell besteht genau darin, dass sich dieser Benutzer auf keine Weise anmelden kann, weder direkt beim Sitzungsstart noch über ein anderes Benutzerkonto. Seltsamerweise ist das genau das, was Sie erreichen möchten.
um auf diesen Benutzer zugreifen zu können (vorausgesetzt, er verfügt über eine Anmelde-Shell, indem Sie wie oben gezeigt zu seinem Profil wechseln), benötigen Sie im Allgemeinen
sudo
Berechtigungen oder müssen zumindest diesu
Eingabeaufforderung verwenden können …
Antwort2
Ich fand dieses vonAbonnierenbei Serverfehler und ID hat bei mir funktioniert:
Sie können den Schalter -s für su verwenden, um eine bestimmte Shell auszuführen
su -s /bin/bash -c '/path/to/your/script' testuser