Seite 1 von 1

[geloest]polkit systemd systemctl restart

Verfasst: 06.08.2020 19:23:02
von wanne
Ich versuche per polkit einen Service vom einem User restartbar zu machen.
Im Moment sieht das so aus:

Code: Alles auswählen

cat /etc/polkit-1/rules.d/10-dotnet.rule
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.systemd1.manage-units" &&
        action.lookup("unit") == "dotnet.service" &&
        subject.user == "dotnet") {
        return polkit.Result.YES;
    }
});
Das hilft aber irgend wie wenig. Weiß jemand was ich falsch mache, oder wie ich debuggen kann, was schief läuft?

Re: polkit systemd systemctl restart

Verfasst: 06.08.2020 19:39:18
von TomL
Die einfache Lösung wäre ein Wrapper für

Code: Alles auswählen

systemctl restart dotnet.service
und eine Polkit-Regel für den Wrapper.... funktioniert auf Anhieb.

Re: polkit systemd systemctl restart

Verfasst: 06.08.2020 21:07:06
von JTH
Wenn mein Wissensstand noch nicht überholt ist:

Du bist darauf hereingefallen, dass Debian immer noch PolicyKit, statt polkit benutzt:
https://wiki.debian.org/PolicyKit hat geschrieben: While PolicyKit has been replaced by polkit (which rewrote system component, breaking backwards compatibility) in many distributions, Debian continues to use PolicyKit from Debian 7 wheezy through Debian 10 buster.
Und ersteres unterstützt noch nicht diese JavaScript-Rules-Dateien, sondern solche in einem nicht so mächtigen ini-Format:
https://wiki.debian.org/PolicyKit hat geschrieben: While modern examples of polkit typically demonstrate the use of javascript rules, PolicyKit does not support this and instead relies on the use of *.conf and *.pkla files. See pklocalauthority(8)'s man page for details.
Manche Debian-Pakete installieren trotzdem diese JavaScript-basierten Rules, obwohl nicht verwendet.

Die nur unterstützten ini-Rules ermöglichen meine ich nicht, einem Benutzer gezielt das Starten & Stoppen nur eines bestimmten Services zu erlauben. Damit geht nur ganz (alle systemd-Services) oder gar nicht. Bis Debian auf polkit umsteigt, kannst du wohl nur Thomas’ Vorschlag folgen.

Nachtrag:
In Experimental hängt tatsächlich die Version (> 0.105) von PolicyKit/polkit fest, die diese JavaScript-Rules unterstützen würde – seit Januar 2013. Hängt dort anscheinend weil es u.a. keinen klaren Upgradepfad von ini-Style- zu JS-Style-Rules gibt.

Re: polkit systemd systemctl restart

Verfasst: 07.08.2020 11:11:14
von wanne
Und ersteres unterstützt noch nicht diese JavaScript-Rules-Dateien, sondern solche in einem nicht so mächtigen ini-Format:
Ja. Ein Graus. PolKit zieht jetzt einen halben Firefox als Abhängigkeit hinter sich her. Daneben haben wir jetzt eine Sprache die Berühmt dafür ist dass sie keine fehlerfrei schreiben kann im Sicherheitsbereich. Was besseres konnte eigentlich nicht passieren.
Du bist darauf hereingefallen, dass Debian immer noch PolicyKit, statt polkit benutzt:
Ne. Da steht schon mit Absicht polkit in der Überschrift. Ist kein Debian. Ich hatte gehofft, dass sich hier vielleicht doch jemand auskennt. Ich hätte das eventuell sagen sollen.

Re: polkit systemd systemctl restart

Verfasst: 07.08.2020 11:25:23
von wanne
TomL hat geschrieben: ↑ zum Beitrag ↑
06.08.2020 19:39:18
und eine Polkit-Regel für den Wrapper.... funktioniert auf Anhieb.
Dann kann ich auch sudo nehmen. Eventuell mache ich das jetzt auch.

Re: polkit systemd systemctl restart

Verfasst: 07.08.2020 15:41:29
von JTH
wanne hat geschrieben: ↑ zum Beitrag ↑
07.08.2020 11:11:14
Ich hätte das eventuell sagen sollen.
Im Kontext des Forums durchaus hilfreich ;) So konsequent werden polkit und PolicyKit nicht überall unterschieden.

wanne hat geschrieben: ↑ zum Beitrag ↑
06.08.2020 19:23:02

Code: Alles auswählen

cat /etc/polkit-1/rules.d/10-dotnet.rule
Falls nicht nur Tippfehler im Beitrag: Fehlt ein S am Ende der Dateiendung? .rules

Mit dem polkit aus experimental hat dein JS-Schnippsel aus dem ersten Beitrag zumindest ohne weiteres funktioniert.

Re: polkit systemd systemctl restart

Verfasst: 07.08.2020 16:11:53
von wanne
Falls nicht nur Tippfehler im Beitrag: Fehlt ein S am Ende der Dateiendung? .rules
So einfach kann es sein....