Wie kann ich mit su einen Benutzer ohne Login-Shell anmelden?

Wie kann ich mit su einen Benutzer ohne Login-Shell anmelden?

Problem

In Debian 10 möchte ich einen Benutzer erstellen, der sich nicht direkt anmelden kann. Man sollte nur mithilfe der suBinä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 usergelingt 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 sudodie 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 lockedoder 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:

  1. 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.

  2. 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 sudoBerechtigungen oder müssen zumindest die suEingabeaufforderung 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

verwandte Informationen