wohin mit eigener polkit Regel

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
Taomon
Beiträge: 627
Registriert: 08.03.2011 16:34:38
Lizenz eigener Beiträge: GNU Free Documentation License

wohin mit eigener polkit Regel

Beitrag von Taomon » 12.04.2018 11:05:37

Aufgrund meiner Frageviewtopic.php?f=27&t=167794& habe ich mich näher mit policykit beschäftigt.

Aber ich habe immer noch nicht verstanden wo eigene Regeln hinghören. Ich habe mir eine Regel für meinen Editor (pluma) erstellt, und diese unter /usr/share/polkit-1/actions/
rein gelegt.

Code: Alles auswählen

alex@Taomon:~$ pkaction --action-id org.mate.pluma --verbose
org.mate.pluma:
  description:       
  message:           Authentication is required to run pluma as root
  vendor:            
  vendor_url:        
  icon:              accessories-text-editor
  implicit any:      auth_admin
  implicit inactive: auth_admin
  implicit active:   auth_admin
  annotation:        org.freedesktop.policykit.exec.path -> /usr/bin/pluma
  annotation:        org.freedesktop.policykit.exec.allow_gui -> true

alex@Taomon:~$ 
und einen Starter im Application menu erstellt. Alles funktioniert, habe aber die Befürchtung das die Regel bei einem Update überschrieben werden könnte. Zur Auswahl habe ich in Stretch /etc/polkit-1/ mit verschiedenen Unterordner, sowie /var/lib/polkit-1/ . Bis jetzt fand ich nix, was explicit schrub Deine eigenen xml Dateien für policiykit müßen in folgenden Ordner.

Gruß Taomon
Bitte gelegentliche Schreibfehler übersehen. Ich habe ADHS. Danke.

TomL

Re: wohin mit eigener polkit Regel

Beitrag von TomL » 12.04.2018 14:41:09

Ich nutze das Polkit schon seit Jahren, als vollständigen Ersatz für sudo und die sudoers... und es funktioniert richtig gut. Meine Regeln sind alle in einer Policy namens "Local extended permissions" hinterlegt (eigene Erfindung), hier als Beispiel ein kurzer Auszug aus meiner Regeldatei:

Code: Alles auswählen

nano /usr/share/polkit-1/actions/LocalExtPermissions.policy

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">

<!-- =================================================================================================

Lokal erweiterte User-Rechte fuer Programmstarts als root oder anderer User

Policy-Name    : /usr/share/polkit-1/actions/LocalExtPermissions.policy
Version        : 1.0 
Date           : 16.12.2015

======================================================================================================-->
  
<policyconfig>
  <action id="LocalExtPerms.geany">
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/geany</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

  <action id="LocalExtPerms.htop">
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/htop</annotate>
  </action>

  <action id="LocalExtPerms.autoupdate">
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/autoupdate</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>
  
  <action id="LocalExtPerms.selnic">
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/selnic</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>
</policyconfig>
Es sind hier auszugsweise nur 4 Regeln genannt. Für geany und htop ("auth_admin") habe ich mit PKLA-Files explizite Berechtigungen für mich selber angelegt. Bei geany und htop ist in der Regel mit "allow_gui" auch der Unterschied zwischen GUI und Terminal erkennbar. Das heisst, so'n Quatsch wie gksudo oder ksudo (hab vergessen wie die heissen) braucht man beim Polkit nicht mehr. Die beiden Programme autoupdate und selnic werden für alle User ohne Passwd-Abfrage ("yes") mit root-Rechten ausgeführt... was auch so erwünscht und notwendig ist.

Die PKLA-Files für geany und htop liegen in

Code: Alles auswählen

/etc/polkit-1/localauthority/50-local.d/30_LocalExtPerms.UY_thomas_geany.pkla
/etc/polkit-1/localauthority/50-local.d/60_LocalExtPerms.UY_thomas_htop.pkla
"UY" im Dateinamen bedeutet "User yes". Ich habe auch "UN", für einen User, der etwas bestimmtes nictht darf, oder auch "GY" für "Group yes", oder "GN" für "Group no". Diese Kennzeichnung ist aber auch nur meine Erfindung, die die Reproduzierbarkeit verbessert oder das altersbedingte Vergessen verhindert *fg*

Natürlich sind diese Regelwerke immer auch Bestandteil innerhalb meines Backup-Konzeptes. Insofern würde mich der Verlust nicht sonderlich treffen. Aber ich habe das in mehrere Jahren auf etlichen Maschinen noch nie erlebt. Und das jetzt jemand anderes auch den Dateinamen "LocalExtPermissions.policy" wählt oder mit meiner Namenskonvention bei den PKLA-Files kollidiert, das glaub ich eher nicht. Insofern mach ich mir da keine Gedanken.

HTH

Benutzeravatar
Taomon
Beiträge: 627
Registriert: 08.03.2011 16:34:38
Lizenz eigener Beiträge: GNU Free Documentation License

Re: wohin mit eigener polkit Regel

Beitrag von Taomon » 12.04.2018 15:05:31

In Debian hatte ich immer eine root account und bin mit gksu verheiratet. Ich sicher mal meine Datei und laß Sie erstmal wo sie ist. Wenn es nicht mehr geht werde ich das schon mitkriegen.

Danke erstmal Taomon
Bitte gelegentliche Schreibfehler übersehen. Ich habe ADHS. Danke.

geier22

Re: wohin mit eigener polkit Regel

Beitrag von geier22 » 12.04.2018 15:37:32

Ich habe in meinem Produktivsystem seit mehreren Monaten Sudo auch komplett entfernt.
Im Verzeichnis /usr/share/polkit-1/actions/ sind - zumindest in Xfce / Buster - an sich sämtliche Programme mit policies versehen die ich brauche.
Da einzige was fehlte, war eine Policy für einen Text - Editor (mousepad), die ich mir halt selbst zurecht gezimmert habe.
Wie bei Taomon wurde die in /usr/share/polkit-1/actions/ gespeichert.
Aber warum sollte die überschrieben werden ?
Und wenn sie überschrieben würde, hieße das, das der Entwickler aus seinem Dornröschen Schlaf aufgewacht ist und für sein Programm auch eine Policy kreiert hat. Deine wäre dann überflüssig oder doppelt.
Wundert mich, dass es das für Pluma nicht gibt. Ich habe in Xfce zwei Datei - Manager installiert: Thunar und Nemo. Und für beide ist eine Policy
vorhanden.
Die "Benutzerdefinierten Aktionen" in Thunar sind eine tolle Sache. Es gibt inzwischen (fast) nichts, was ich aus Thunar heraus nicht per Klick erledigen kann.

TomL

Re: wohin mit eigener polkit Regel

Beitrag von TomL » 12.04.2018 18:23:20

geier22 hat geschrieben: ↑ zum Beitrag ↑
12.04.2018 15:37:32
Die "Benutzerdefinierten Aktionen" in Thunar sind eine tolle Sache. Es gibt inzwischen (fast) nichts, was ich aus Thunar heraus nicht per Klick erledigen kann.
Ich finde das ganze Polkit klasse.... nur eine Sache krieg ich nicht hin.... und zwar, dass ein User (z.B. als Urlaubsvertretung) ein Programm für einen anderen User starten darf, aber er darf es nicht mit root-Rechten.

pkexec --user Klaus Programm muss funktionieren (hier gemäß meiner Regel ohne Password-Abfrage)
pkexec Programm darf nicht ohne Admin-Auth funktionieren

Das Problem ist, wenn man den User-Parameter nicht angibt, verwendet pkexec automatisch "root" und das würde jetzt gemäß meiner Regel (s.o.) ohne root-PWD ablaufen.... was natürlich nicht sein darf. Für das Problem suche ich schon tagelang eine Lösung... es scheint wirklich so zu sein, das das Polkit das nicht direkt unterstützt, sondern man muss es etwas umständlich über einen Wrapper lösen,

Antworten