[[Vorlage(Getestet, noble ) ]] {{{#!vorlage Wissen [:PolicyKit-1:] {Übersicht} [:Terminal: Ein Terminal öffnen] [:Programme_starten: Starten von Programmen] [:mit Root-Rechten arbeiten:] }}} Dieser Artikel behandelt den [:Dienste:DAEMON] polkitd aus der Werkzeugsammlung PolicyKit bzw. polkit in der Fassung, wie er bei Ubuntu ab Version [:24.04:] verwendet wird. Für [:22.04:frühere Versionen] siehe Artikel [:PolicyKit:]. [[Inhaltsverzeichnis()]] Dieser Artikel setzt die Kenntnis des Übersichtsartikels[1] voraus, siehe dort für eine Beschreibung der Funktionsweise des Systems polkit und Erklärungen für spezifische Fachbegriffe wie "Client", "Subject", „privilegiertes Programm“ und „Authentifizierungsagent“. Der Befehl `pkcheck` für die Kommandozeile[2] ist quasi eine Simulation von `polkitd`[1]. Er ermöglicht einen Test, ob in der im Aufruf beschriebenen Situation die Beauftragung einer Aktion im System polkit gelingen oder abgewiesen wird. = Installation = Das Programm ist enthalten im Paket '''polkitd''', welches zur Standardinstallation gehört. Für weitere Details lese den Übersichtsartikel[1]. = Bedienung = Man startet[3] `pkcheck` aus einer Root-Shell[4], weil nur [:root:] oder ein Administrator (im Sinne von polkit) zu solchen Abfragen berechtigt ist. Die Root-Shell kann man so erreichen: [[Vorlage(Befehl, "pkexec" ) ]] (Bei Versionen [:22.04:vor 24.04] muss man zusätzlich eine [:Shell:] angeben.) Aufrufschema: [[Vorlage(Befehl, "pkcheck AKTION SUBJEKT OPTIONALE-OPTIONen" ) ]] AKTION, SUBJEKT und OPTIONALE-OPTIONen sind sämtlich Angaben lt. Tabelle 1, konkret entspricht AKTION der Option `-a` und SUBJEKT ist entweder `-p` oder `-s`. Das Ergebnis eines Tests wird wesentlich durch die Beschreibung der Aktion und den im System existierenden und konkret aufgerufenen Regeln bestimmt. Näheres zu Aktionen und Regeln siehe Artikel [#Links polkitd]. == Optionen == {{{#!vorlage Tabelle <rowclass="titel" -3:>Tabelle 1: Optionen für pkcheck +++ <rowclass="kopf" cellstyle="width: 25%">Option Abk. Beschreibung +++ `--version` Kann nur als alleinstehende Option verwendet werden.[[BR]] Es wird die verwendete Version des Systems polkit ausgegeben. +++ `--help` `-h` Kann nur als alleinstehende Option verwendet werden.[[BR]] Es wird eine kurze Erklärung des Aufrufs angezeigt. +++ `--action-id AKTION-ID` `-a` Verpflichtende Angabe. AKTION-ID identifiziert die Aktion, welche man testen will. Beispiele siehe Übersicht[1]. +++ `--process PID` `-p` Optionen `-p` und `-s` schließen sich gegenseitig aus, und eine muss benutzt werden.[[BR]] Bei dieser Option wird SUBJEKT über die PID des Prozesses (= subject[1]) identifiziert. +++ `--system-bus-name BUSNAME` `-s` Optionen `-p` und `-s` schließen sich gegenseitig aus, und eine muss benutzt werden.[[BR]] Bei dieser Option wird SUBJEKT über die Adresse des Prozesses (= subject[1]) am System-D-Bus identifiziert. +++ `--allow-user-interaction` `-u` Optionale Angabe.[[BR]] +++ `--enable-internal-agent` Optionale Angabe.[[BR]] +++ `--detail KEY VALUE` `-d` Optionale Angabe.[[BR]] KEY bzw. VALUE stehen für den Namen bzw. den Wert einer Variablen, die an den Authentifizierungsagenten übergeben wird und die auch in den prüfenden Regeln verfügbar ist. }}} == Beispiele == Ein Aufruf wie z.B. [[Vorlage(Befehl, "pkcheck -p $$ -a org.freedesktop.policykit.exec -u ; echo $?" ) ]] zur Abfrage der eigenen (`$$` liefert die PID der laufenden Shell) Berechtigungen für eine bestimmte Aktion (die hier beispielhaft genannte AKTION-ID `org.freedesktop.policykit.exec` ist natürlich anzupassen) ist ziemlich sinnlos, denn entweder macht man das bereits in einer Root-Shell oder man wird für die Nutzung von `pkcheck` zur Authentifizierung aufgefordert. Da man somit immer root ist und root ja alles darf, liefert der Befehl immer Erfolg bzw. in Shell-Sprache `0`. Sinn macht nur die Abfrage für einen anderen Prozess. Man muss also zwei Terminals[2] öffnen und * im ersten mit [[Vorlage(Befehl, "echo $$" ) ]] dessen PID (hier z.B. `10491`) ermitteln und * im zweiten Terminal den Prüfbefehl mit der PID des anderen Terminals eingeben: [[Vorlage(Befehl, "pkcheck -p 10491 -a org.freedesktop.policykit.exec -u ; echo $?" ) ]] = Links = [[Seitenliste( *PolicyKit-1/pk* , shorten_title=1 ) ]] #tag: System, Sicherheit