Dieser Benutzer ist derzeit nicht verfügbar – aber die Ausführung des Skripts durch diesen Benutzer ist zulässig.

Dieser Benutzer ist derzeit nicht verfügbar – aber die Ausführung des Skripts durch diesen Benutzer ist zulässig.

Ich habe einen speziellen Benutzer in /etc/passwd erstellt mit:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

Ich möchte diesem Benutzer keine Anmeldung erlauben (über Konsole, SSH, FTP oder auf andere Weise).

Er dient lediglich zum Ausführen eines Skripts über:

sudo su secure -c '/home/someuser/secure.script'

Aber es gibt mir This user is currently not available.. Wie richte ich es ein, um das Skript auf diese Weise ausführen zu können, aber jegliche Anmeldung (Konsole, SSH, FTP, ...) dieses Benutzers am System zu verhindern?


Mir ist aufgefallen, dass /usr/sbin/nologinder Computer mit antwortet, wenn ich in die Befehlszeile tippe This account is currently not available..

Antwort1

Dies ist ein typischer Anwendungsfall für sudo.

Sie mischen sudo, was das Ausführen von Befehlen als ein anderer Benutzer ermöglicht und hochgradig konfigurierbar ist (Sie können selektiv angeben, welcher Benutzer welchen Befehl als welcher Benutzer ausführen kann) und suwas zu einem anderen Benutzer wechselt, wenn Sie das Kennwort kennen (oder Root sind). suführt immer die in geschriebene Shell aus /etc/passwd, selbst wenn su -cverwendet wird. Aus diesem Grund suist es nicht mit kompatibel /usr/sbin/nologin.

Du solltest benutzen

sudo -u secure /home/someuser/secure.script

Da sudoes konfigurierbar ist, können Sie steuern, wer diesen Befehl verwenden kann und ob er/sie ein Passwort eingeben muss, um ihn auszuführen. Dazu müssen Sie using bearbeiten /etc/sudoers. visudo(Seien Sie vorsichtig, wenn Sie /etc/sudoers bearbeiten, und verwenden Sie dazu immer visudo. Die Syntax ist nicht trivial und ein Fehler kann dazu führen, dass Sie von Ihrem Root-Konto ausgeschlossen werden.)

Diese Zeile in sudoers ermöglicht es jedem in der Gruppe, somegroupden Befehl wie folgt auszuführen secure:

%somegroup    ALL=(secure) /home/someuser/secure.script

Dadurch kann jeder in der Gruppe somegroupden Befehl ausführen, secureohne ein Kennwort einzugeben:

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

Dadurch kann der Befehl ohne Eingabe eines Passworts user1ausgeführt werden :secure

user1    ALL=(secure) /home/someuser/secure.script

Antwort2

Ich habe herausgefunden, dass das Hauptproblem „ /usr/sbin/nologin“ in ist /etc/passwd . Wenn ich in diesem Fall su ausführen möchte, muss es -s /bin/bashenthalten sein, also zum Beispiel:su -s /bin/bash -c '/home/someuser/secure.script' secure

Antwort3

suverwendet die in angegebene Shell /etc/passwd.

suSie müssen es nicht mit verwenden sudo.

Deshalb nicht sumit vermischen sudo: verwenden sudo -u secure '/home/someuser/secure.script'.

verwandte Informationen