Hallo!
Ich habe seit einiger Zeit einen VPS angemietet. Ich nutze das Ding primär für eine Website. Nun wollte ein bekannter gern nen Minecraft Server haben, also hab ich ihm angeboten, er kann meinen VPS dafür nutzen. Gesagt getan, hab soweit alles eingerichtet, ging ja fix. Nun wollte ich ihm noch ermöglichen, dass er sich als der User "minecraft" einloggen kann, um den Serverdienst selbst zu starten/stoppen falls es mal Probleme gibt. Allerdings habe ich Probleme, das hinzubekommen. Der Server kann ja per systemd gesteuert werden, also z.B. mit sudo systemctl start minecraft.service zum starten, aber natürlich benötigt er ja keine vollumfänglichen root Rechte. Nun war mein erster Versuch, das ganze per Policykit zu lösen, leider nichte erfolgreich. Ich habe eine Regel angelegt:
1 2 3 4 5 6 7 8 | polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.systemd1.manage-units" && action.lookup("unit") == "minecraft.service") && subject.user("minecraft")) { return polkit.Result.YES; } }) |
Da bekommte ich aber immer die Meldung:
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to stop 'minecraft.service'. Authenticating as: ,,, (thor) Password:
Der möchte also immer mein Passwort um den Service steuern zu können.
Also habe ich nun alternativ den Weg über das sudoers File versucht:
%minecraft ALL= NOPASSWD: /usr/bin/systemctl restart minecraft.service %minecraft ALL= NOPASSWD: /usr/bin/systemctl stop minecraft.service %minecraft ALL= NOPASSWD: /usr/bin/systemctl start minecraft.service %minecraft ALL= NOPASSWD: /usr/bin/systemctl status minecraft.service
Leider war auch das erfolglos, ich bekomme immernoch obige Meldung. Woran liegt das? Eigentlich sollte die zweite Methode doch funktionieren, der User minecraft bekommt sudo Rechte für die spezifischen Befehle.