# Com funciona

## Vista general

PolicyKit té una manera senzilla de treballar, però requereix alguns canvis en el disseny de les aplicacions que voleu utilitzar per a demanar les contrasenyes.

## El problema

En les aplicacions d'interfície gràfica d'usuari la forma comuna per obtenir privilegis de root és iniciar-les com a root, però hi ha diversos riscos de seguretat en seguir aquest mètode doncs no permet una assignació de bones accions. No hi ha manera de separar les accions com a paquet d'instal·lació del sistema d'actualització. Tots els usuaris que vulguin utilitzar-lo hauran de tenir la contrasenya root. Un altre mètode comú és usar sudo però una vegada s'inicia una aplicació amb sudo aquesta tindrà tots els drets de l'usuari root. Per exemple, si l'aplicació té una interfície gràfica d'usuari disposarà d'un diàleg per a seleccionar els fitxers, si el diàleg s'està executant com a root, significa que l'usuari podria ser capaç d'eliminar qualsevol fitxer al vostre ordinador o fins i tot copiar altres fitxers d'usuari.

## La solució

Amb PolicyKit aquest problema està resolt. L'aplicació en qüestió només ha de separar el codi de privilegis en una altra aplicació, sovint anomenada d'ajuda (que no tenen una interfície gràfica d'usuari), a continuació, els mapes de les accions desitjades en un fitxer «.policy». PolicyKit càrrega aquest fitxer i ara pot autenticar les aplicacions per a utilitzar aquestes accions. L'ús d'aplicacions amb el &DBus; activat és la millor si no l'única, manera de posar una aplicació d'ajuda per a executar amb privilegis de root.

Amb aquest disseny, l'aplicació d'interfície gràfica d'usuari crida a una acció de l'aplicació d'ajuda a través de &DBus;, el qual iniciarà l'ajudant amb privilegis de root, i informarà de l'acció requerida i de quina aplicació l'ha demanat. L'aplicació d'ajuda ara crida a l'agent PolicyKit per veure si aquesta aplicació pot realitzar la tasca, l'ajudant informarà si es pot realitzar l'acció requerida. En cas que l'ajudant vegi que la sol·licitud no té suficients drets en la interfície gràfica d'usuari, haurà de cridar a PolicyKit per obtenir una autorització.

Quan PolicyKit rep la sol·licitud per obtenir una autorització que emet un agent disponible, aquest podria passar a ser &policykit-kde; si està disponible. Després d'una autenticació amb èxit l'aplicació IGU necessitarà cridar l'ajudant repetint la mateixa operació altra vegada.