<chapter id="howitworks">
<title
>Funktionsweise</title>

<sect1 id="howitworks-overview">
<title
>Übersicht</title>

<para
>PolicyKit hat eine einfache Arbeitsweise, benötigt aber ein paar Veränderungen der Anwendung zur Nutzung der Passwortabfrage.</para>
</sect1>

<sect1 id="howitworks-problem">
<title
>Das Problem</title>

<para
>Bei grafischen Anwendungen ist der einfachste Weg zum Erlangen der <emphasis
>root</emphasis
>-Rechte, diese als <emphasis
>root</emphasis
>-Benutzer aufzurufen. Jedoch entstehen durch diese Methode einige Sicherheitsrisiken und erlaubt zudem keine gute Zuordnung der Aktionen. Es gibt keine Möglichkeit, um die Aktionen zu unterteilen (z. B. Paketinstallation bei der Systemaktualisierung). Alle Benutzer, die diese verwenden möchten, müssen das <emphasis
>root</emphasis
>-Passwort eingeben. Eine weitere geläufige Möglichkeit ist die Verwendung von <command
>sudo</command
>. Jedoch werden auch hier alle Rechte des <emphasis
>root</emphasis
>-Benutzers gewährt. Wenn beispielsweise eine grafische Anwendung einen Dialog zur Auswahl von Dateien besitzt und dieser als <emphasis
>root</emphasis
>-Benutzer ausgeführt wird, kann der Benutzer möglicherweise alle Dateien auf diesem System löschen oder auch Zugriff auf die Dateien anderer Benutzer erlangen. </para>
</sect1>

<sect1 id="howitworks-solution">
<title
>Die Lösung</title>

<para
>Mit PolicyKit ist dieses Problem gelöst. Die betreffende Anwendung muss lediglich so aufgeteilt werden, damit der Programmkode für die Berechtigung in einer eigenen Anwendung (sog. Hilfsprogramm ohne grafische Oberfläche) ausgeführt wird und die gewünschten Aktionen in einer <filename
>.policy</filename
>-Datei aufgeführt werden. PolicyKit lädt diese Datei und kann nun diese Anwendungen für die Nutzung dieser Aktionen berechtigen. Die Verwendung von &DBus;-Anwendungen ist der beste aber nicht der einzigste Weg für die Ausführung von Hilfsprogrammen mit <emphasis
>root</emphasis
>-Rechten.</para>

<para
>Auf diese Weise ruft die grafische Oberfläche eine Aktion des Hilfsprogramms mittels &DBus; auf, welche dann das Hilfsprogramm mit <emphasis
>root</emphasis
>-Rechten aufruft und dieses darüber informiert, welche Aktion von welcher Anwendung aufgerufen wurde. Das Hilfsprogramm ruft nun den PolicyKit-Agenten auf, um zu sehen, ob die Anwendung die Aufgabe ausführen kann (das Hilfsprogramm sollte nun berichten, ob die angefragte Aktion ausgeführt werden kann). In diesem Fall <emphasis
>sah</emphasis
> das Hilfsprogramm, dass die Anwendung nicht die benötigten Rechte besaß und die grafische Oberfläche muss bei PolicyKit für eine Berechtigung anfragen.</para>

<para
>Sobald PolicyKit eine Anfrage für eine Berechtigung erhält, ruft es einen verfügbaren Agenten auf, der möglicherweise &policykit-kde; ist (falls verfügbar). Nach einer erfolgreichen Genehmigung muss die grafische Oberfläche das Hilfsprogramm nochmals mit der gleichen Aktion aufrufen.</para>
</sect1>

</chapter>
