[geloest]polkit systemd systemctl restart

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

[geloest]polkit systemd systemctl restart

Beitrag von wanne » 06.08.2020 19:23:02

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?
rot: Moderator wanne spricht, default: User wanne spricht.

TomL

Re: polkit systemd systemctl restart

Beitrag von TomL » 06.08.2020 19:39:18

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.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: polkit systemd systemctl restart

Beitrag von JTH » 06.08.2020 21:07:06

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.
Manchmal bekannt als Just (another) Terminal Hacker.

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: polkit systemd systemctl restart

Beitrag von wanne » 07.08.2020 11:11:14

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.
rot: Moderator wanne spricht, default: User wanne spricht.

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: polkit systemd systemctl restart

Beitrag von wanne » 07.08.2020 11:25:23

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.
rot: Moderator wanne spricht, default: User wanne spricht.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: polkit systemd systemctl restart

Beitrag von JTH » 07.08.2020 15:41:29

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.
Manchmal bekannt als Just (another) Terminal Hacker.

wanne
Moderator
Beiträge: 7465
Registriert: 24.05.2010 12:39:42

Re: polkit systemd systemctl restart

Beitrag von wanne » 07.08.2020 16:11:53

Falls nicht nur Tippfehler im Beitrag: Fehlt ein S am Ende der Dateiendung? .rules
So einfach kann es sein....
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten