# Polkit

polkit (früher PolicyKit) ist ein Berechtigungsdienst auf Betriebssystemen der Unix-Familie, der Benutzersoftware und Systemkomponenten erlaubt, miteinander zu kommunizieren, wenn die Benutzersoftware dazu berechtigt ist. Es ist vergleichbar mit den „Authorization Services“ in Mac OS X und der „Benutzerkontensteuerung“ in Windows-Systemen seit Windows Vista.

## Prinzip

Die Systemsoftware erhält eine Anweisung einer Benutzersoftware. Um zu überprüfen, ob die Benutzersoftware für diese Anweisung berechtigt ist, fragt sie PolicyKit. Entsprechend der Antwort trifft die Systemsoftware die Entscheidung, ob die Anweisung ausgeführt wird. PolicyKit erteilt also die Autorisierung für Systemfunktionen. Es ist in der Lage, dafür eine Authentifizierung des Benutzers zu verlangen.

### Berechtigungen

Es kann eingestellt werden, wie Berechtigungen standardmäßig bei jedem Benutzer und jeder Anwendung erteilt werden (engl. Implicit Authorization). Für jeden Benutzer, lokale Benutzer oder aktive lokale Benutzer kann eingestellt werden, ob der Vorgang generell erlaubt bzw. verboten werden soll, oder eine Autorisierung als ein Administrator bzw. als eigener Benutzer mit einer einmaligen, prozessbeschränkten, sitzungsbeschränkten oder unbeschränkten Gültigkeit nötig sein soll. Für einzelne Benutzer und Gruppen können die Berechtigungen einzeln vergeben werden (engl. Explicit Authorization). Die Berechtigungen können auf bestimmte Anwendungen beschränkt werden.

### Änderungen in Polkit-1

Mit dem Polkit-1-Design können dauerhafte explizite Berechtigungen über das LocalAuthority festgelegt werden, während kurzzeitige explizite Berechtigungen von dem InteractiveAuthority gewährt werden. LocalAuthority liest die Berechtigungen dabei aus .pkla-Dateien aus und unterstützt keine Beschränkung auf bestimmte ausführende Programme, sodass diese Funktion in PolicyKit nicht mehr zur Verfügung steht. Neu ist aber, dass nun auch Unix-Gruppen statt nur Unix-Benutzer, als Identität verwenden werden können.
Mit Polkit-1 wurde dem Framework auch das pkexec-Werkzeug hinzugefügt, welches es ermöglicht Befehle als ein anderer Benutzer auszuführen. Berechtigungen können dabei nach auszuführenden Systemprogrammen getrennt vergeben werden, indem für jedes spezielle Programm eine PolicyKit-Methode mit Angabe des Programmdateinamens angelegt wird.
Außerdem wurde die Lockdown-Methode eingeführt, welche eine gewählte Policykit-Aktion nur noch nach Angabe des Administrator-Passwortes und innerhalb einer lokalen, aktiven Sitzung zulässt. Diese ermöglicht dem Administrator sich notfalls schnell über fehlerhafte Konfigurationen hinwegzusetzen und die Aktion zu sperren.

## Kritik

Es gibt die Auffassung, dass sich die Systemsicherheit durch Polkit nicht erhöht. Auf traditionellen Unix/Linux Systemen wird X11 für die grafische Benutzeroberfläche verwendet. Das Dienstprogramm xinput dient zur Demonstration, wie jedes Programm mit normalen Benutzerrechten alle Eingaben zum Beispiel auf der Tastatur belauschen kann. Werden Benutzer durch Polkit wiederholt dazu aufgefordert, ihr Passwort einzugeben, um eine Aktion zu autorisieren, steigt nur die Wahrscheinlichkeit, dass Angreifer mit Schad-Software in den Besitz des Passwortes gelangen können.