Erlauben Sie einem bestimmten Benutzer, einen bestimmten Sudo-Befehl auszuführen, ohne das Kennwort einzugeben

Erlauben Sie einem bestimmten Benutzer, einen bestimmten Sudo-Befehl auszuführen, ohne das Kennwort einzugeben

Für die Entwicklung eines Gameservers möchte ich git pushmeinen aktuellen Stall zu einem privaten VPS machen. Innerhalb des Git-Hooks receivesoll folgendes passieren

sudo systemctl stop myserver
dotnet publish --configuration release
sudo systemctl start myserver

Innerhalb von myserver.service wird die kompilierte Binärdatei als Benutzer ausgeführt, der Zugriff auf das Git-Repository hat.

Meine Idee war nun, die erste und letzte Zeile durch Skripte zu ersetzen, die root gehören und von jedem gelesen werden können, so dass der Git-Hook receivezu

sudo stop-server.sh 
dotnet publish --configuration release
sudo start-server.sh

Als letzten Schritt möchte ich dem Benutzer die Berechtigung erteilen, beide Skripte per Sudo aufzurufen, aber sonst nichts. Außerdem werden die Skripte ausgeführt, ohne dass Sudo nach dem Benutzerkennwort fragt, da keine Interaktion möglich ist.

Antwort1

Sie können Folgendes anhängen /etc/sudoers(oder eine neue Datei darin erstellen /etc/sudoers.d/):

<username> ALL=(ALL) NOPASSWD: /path/to/script

Das würde die Ausführung sudo /path/to/scriptals <username>Benutzer ohne Passwort ermöglichen. Beachten Sie, dass dies unsicher ist, wenn der Inhalt des Skripts von einem böswilligen Benutzer geändert werden kann. Sie sollten besser versuchen, Root-Rechte ganz zu vermeiden.

verwandte Informationen