Für die Entwicklung eines Gameservers möchte ich git push
meinen aktuellen Stall zu einem privaten VPS machen. Innerhalb des Git-Hooks receive
soll 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 receive
zu
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/script
als <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.