Vielleicht sollte man erstmal hiermit arbeiten
root@grom-deb:~# cat /etc/sudoers.d/grommunio-sudo
# Allow grommunio user to execute specific commands as root
grommunio ALL = NOPASSWD: /usr/sbin/postconf, /usr/sbin/postsuper
# Allow Systemctl-Calls
Cmnd_Alias SVC_POSTFIX = /usr/bin/systemctl stop postfix.service, /usr/bin/systemctl start postfix.service, /usr/bin/systemctl restart postfix.service
grommunio ALL = NOPASSWD:SVC_POSTFIX
und dementsprechend die dbconf mit sudo erweitern....
grommunio-admin dbconf set grommunio-dbconf postfix commit_service "$(grommunio-admin dbconf get grommunio-dbconf postfix commit_service |sed 's/.*=systemctl/sudo systemctl/')"
Das ist nun ungetestet weil ich eh noch nie wirklich was via Webgui/API an postfix geändert habe.
Das kann man natürlich erweitern wie man möchte..
Und wie ich das so schreibe fällt mir ja auf das dies nur für Postfix-Krempel gilt und ich glaube nirgends den Befehl den die grommunio-admin-api auslöst um Dienste neu zu starten/stoppen/wasauchimmer via Konfiguration anpassen kann und hier wieder in den gelieferten Dateien rumschreiben müsste was einfach nicht viel bringt da es eh wieder überschrieben wird beim nächsten Update...
Das ganze läuft über services/systemd.py und wie man sieht ist hier der Aufruf fest geschrieben. Wenn man jetzt ganz gewieft wäre könnten wir uns ein Skript in bspw. Benutzer root wird sich nicht großartig dafür interessieren und da wir eigtl. keine anderen Benutzer haben die womöglich /usr/local/bin
ablegen mit dem namen systemctl in dem einfach nur drin steht sudo systemctl
und dann sollte er das theoretisch auch machen...systemctl --user
ausführen wollen kann es uns also schnurz sein.
Das ist jetzt nur Theorie da ich es nicht ausprobiert habe ob der $PATH auch genauso im Dienst ankommt wie in der Konsole. Andernfalls hieße es nun systemctl edit grommunio-admin-api.service
und man passe die temp. Datei im $EDITOR beispielhaft so an...
### Editing /etc/systemd/system/grommunio-admin-api.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Service]
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
### Lines below this comment will be discarded
......
Du siehst, ich würde eher den Umweg wählen als das die Freischein-Policy "Standard" zu implementieren
Also oben die /etc/sudoers.de/grommunio
erweitern um alle geforderten "Befehle" dann einen sudo-systemctl-wrapper hineinfuddeln und evtl. die .service mittels override den Suchpfad erweitern.
Und nun nachdem ich noch mal ne Stunde was anderes gemacht habe fällt mir nun ein das die Idee mit dem "Wrapper" so Blödsinn ist da wir damit das selbe erreichen wie mit der Policy.
Also müsste man hier ein Skript schreiben welches alle systemctl-aufrufe schon deklariert hat und diese mittels getopts oder halt if $1.. $2 .. $3 prüfen ob das was man da machen will auch definitiv erlaubt ist...
Ich sage jetzt einfach mal ich lass es erstmal so stehen. Vielleicht erweitern wir einfach die README mit der möglichen Lösung wenn es für jemanden annehmbar ist soll diese Person es selbst so konfigurieren mittels deinem Vorschlag:
weini /etc/polkit-1/localauthority/50-local.d/manage-units.pkla
Und das schicke ich nun so ab damit man auch den kompletten Gedankenfurz versteht warum wieso weshalb..