Polkit (vroeger PolicyKit) biedt een algemene architectuur aan om niet-geprivilegieerde processen onder Linux met geprivilegieerde processen te laten spreken. Moderne Linux-distributies specificeren op deze manier wie de pc mag herstarten, wie updates mag uitvoeren, wie de systeeminstellingen mag aanpassen, enzovoort. Een lijst van alle ondersteunde acties krijg je te zien met de volgende opdracht:

$ pkaction

com.hp.hplip.installplugin

com.ubuntu.devicedriver.check

com.ubuntu.devicedriver.info

com.ubuntu.devicedriver.install

com.ubuntu.devicedriver.update

com.ubuntu.screenresolution.mechanism.configure

...

Die lijst met acties hangt uiteraard af van je distributie en ook van de geïnstalleerde toepassingen. Uit de namen van de acties kun je meestal wel afleiden wat ze inhouden, maar wil je meer informatie over een specifieke actie, dan kan dat ook. Een voorbeeld:

$ pkaction --verbose --action-id org.freedesktop.consolekit.system.restart

org.freedesktop.consolekit.system.restart:

description: Restart the system

message: System policy prevents restarting the system

vendor:

vendor_url:

icon:

implicit any: no

implicit inactive: no

implicit active: yes

We zien hier dat gebruikers met een actieve sessie het systeem kunnen herstarten. Stel dat je een specifieke gebruiker wil verbieden om de computer te herstarten, dan maak je een policy-bestand aan met de volgende inhoud:

[Gebruiker mag computer niet herstarten]

Identity=unix-user:gebruiker

Action=org.freedesktop.consolekit.system.restart

ResultActive=no

Sla dit op in de locatie /etc/polkit-1/localauthority/50-local.d/51-org.freedesktop.consolekit.system.restart.pkla

Heel wat toepassingen gebruiken polkit om privileges in te stellen. In libvirt bijvoorbeeld wordt polkit gebruikt om in te stellen welke gebruikers virtualisatieservers via ssh kunnen beheren. Je voegt die gebruikers dan aan een groep libvirt toe, en specificeert in een pkla-bestand dat ze de actie org.libvirt.unix.manage mogen uitvoeren. Meer documentatie over de werking van polkit vind je in de online documentatie en in de man-pagina van pklocalauthority.