# Kuidas see töötab

## Ülevaade

PolicyKiti töö on õige lihtne, kuid see nõuab rakendustelt, mis soovivad seda parooli nõudmiseks kasutada, teatavaid muudatusi.

## Probleem

Graafiliste rakenduste korral on administraatori õiguste saamiseks tavaline viis käivitada rakendus administraatorina, kuid sellega kaasnevad mitmed turberiskid ning see ei võimalda ka kuigi head toimingut seondamist. Ei saa kuidagi lahutada näiteks tarkvarapaketi paigaldamise ja süsteemi uuendamise toimingut. Kõik kasutajad, kes seda soovivad, peavad teadma administraatori parooli. Teine levinud võimalus on sudo kasutamine, aga kui oled juba kord rakenduse sudo abil käivitanud, on sul kõik õigused, mis administraatoril ikka. Kui näiteks graafiline rakendus võimaldab kasutada failivalimise dialoogi, siis selle dialoogi kasutamine administraatori õigustes tähendab, et kasutaja võib kustutada mis tahes masinas asuva faili või isegi kopeerida teiste kasutajate faile.

## Lahendus

Selle probleemi aitab lahendada PolicyKit. Kõnealune rakendus peab lihtsalt eraldama privilegeeritud koodi teise rakendusse, mida sageli nimetatakse abiprogrammiks (inglise keeles helper; sel pole graafilist väljundit) ning seejärel seostama soovitud toimingud .policy-failis. PolicyKit laadib siis selle faili ning võib autentida rakendusi mainitud toiminguid kasutama. &DBus;i vahendusel aktiveeritud rakenduste kasutamine on parim, ehkki mitte ainus viis panna abiprogramm tööle administraatori õigustes.

Sellise teostuse korral kutsub graafiline rakendus abiprogrammi toimingu välja &DBus;i vahendusel, mis käivitab abiprogrammi administraatori õigustes, ning annab sellele teada, millist toimingut sooviti ja milline rakendus seda soovis. Abiprogramm omakorda kutsub välja PolicyKiti agendi, et teada saada, kas antud rakendus võib seda toimingut sooritada, ning annab sellest teada. Kui abiprogramm näeb, et rakendusel pole selliseks toiminguks õigusi, küsib ta neid PolicyKiti käest.

Kui PolicyKit saab loataotluse, käivitab ta saadaoleva agendi, milleks võib olla näiteks &policykit-kde;. Eduka autentimise järel peab graafiline rakendus kutsuma välja abiprogrammi, korrates taas eespool kirjeldatud protseduuri.