# Hur det fungerar

## Översikt

Policykit fungerar på ett enkelt sätt, men kräver vissa konstruktionsändringar av programmen som vill använda det för att begära lösenord.

## Problemet

I program med grafiska användargränssnitt är det vanliga sättet att få behörighet som systemadministratör att starta det som systemadministratör, med det finns flera säkerhetsrisker med att använda denna metod och den tillåter inte en bra urskiljning av åtgärder. Det finns inget sätt att separera åtgärder som paketinstallation vid systemuppgradering. Alla användare som vill använda det måste ha systemadministratörens lösenord. Ett annat vanligt sätt är att använda sudo, men när man väl har startat ett program med sudo har det alla rättigheter som systemadministratören skulle ha. Om programmet med grafiskt användargränssnitt exempelvis har en dialogruta för att välja filer, kör den dialogrutan som systemadministratör, vilket betyder att användaren skulle kunna ta bort vilken fil som helst på datorn, eller till och med kopiera andra användares filer.

## Lösningen

Med Policykit är problemet löst. Programmet i fråga behöver bara skilja ut den priviligierade koden till ett annat program, som oftast kallas ett hjälpprogram (och som inte har ett grafiskt gränssnitt), och därefter ange önskade åtgärder i en .policy-fil. Policykit laddar då filen och kan nu ge program behörighet att använda åtgärderna. Användning av program med stöd för &DBus; är det bästa, om inte det enda, sättet att få ett hjälpprogram att köra med behörighet som systemadministratör.

Med denna konstruktion anropar programmet med grafiskt gränssnitt en åtgärd i hjälpprogrammet via &DBus;, som startar hjälpprogrammet med behörighet som systemadministratör, och informerar det om vilken åtgärd som begärdes och vilket program som begärde den. Hjälpprogrammet anropar nu Policykit-tjänsten för att se om programmet kan utföra angiven uppgift, hjälpprogrammet ska rapportera om det kunde utföra den begärda åtgärden. I fallet då hjälpprogrammet märkte att programmet inte har tillräckliga rättigheter, måste det grafiska gränssnittet be Policykit om att erhålla behörighet.

När Policykit tar emot en begäran att erhålla behörighet, utfärdar den en tillgänglig tjänst, vilket kan råka vara &policykit-kde; om tillgängligt. Efter en lyckad behörighetskontroll måste programmet med grafiskt gränssnitt anropa hjälpprogrammet och upprepa samma åtgärd igen.