<chapter id="howitworks">
<title
>Come funziona</title>

<sect1 id="howitworks-overview">
<title
>Panoramica</title>

<para
>PolicyKit funziona in modo semplice, ma richiede alcune modifiche strutturali da parte delle applicazioni che vogliono usarlo per richiedere delle password.</para>
</sect1>

<sect1 id="howitworks-problem">
<title
>Il problema</title>

<para
>Nelle applicazioni grafiche, il modo più comune per ottenere privilegi amministrativi è avviare il programma come root, ma in questo modo si incorre in diversi rischi di sicurezza. Inoltre, manca una buona mappatura delle azioni: vale a dire, non c'è modo di separare azioni come l'installazione di nuovi pacchetti o l'aggiornamento del sistema; tutti gli utenti devono avere la password di root. Un altro approccio comune è usare <command
>sudo</command
>, ma, una volta che un'applicazione viene avviata con <command
>sudo</command
>, l'utente avrà gli stessi diritti di root. Se per esempio un'applicazione grafica ha una finestra di selezione dei file, e quella finestra è in esecuzione come root, l'utente potrebbe eliminare qualsiasi file sulla sua macchina, o copiare i file di altri utenti. </para>
</sect1>

<sect1 id="howitworks-solution">
<title
>La soluzione</title>

<para
>Il problema viene risolto da PolicyKit. L'applicazione deve solo separare il codice privilegiato in un'altra applicazione, spesso chiamata <emphasis
>aiutante</emphasis
> (che non ha un'interfaccia grafica), quindi mappa le azioni desiderate in un file <literal role="extension"
>.policy</literal
>. Quindi PolicyKit carica questo file, e può quindi autenticare le applicazioni per eseguire queste azioni. L'uso di applicazioni attivate attraverso &DBus; è il modo migliore se non l'unico di far girare un'applicazione aiutante con privilegi amministrativi.</para>

<para
>Con questa struttura l'applicazione grafica chiama un'azione dell'applicazione aiutante attraverso &DBus;, che avvierà l'aiutante con privilegi amministrativi, e informandola di quale azione è stata richiesta da quale applicazione. L'applicazione aiutante chiama l'agente PolicyKit per vedere se l'applicazione può fare quel compito, e segnala se è riuscita ad effettuare l'azione richiesta. Nel caso che l'aiutante si sia resa conto di non avere abbastanza diritti, l'interfaccia dovrà quindi chiedere a PolicyKit di ottenere un'autorizzazione.</para>

<para
>Quando PolicyKit riceve la richiesta di ottenere un'autorizzazione, incarica un agente disponibile, che potrebbe essere &policykit-kde; se disponibile. Dopo un'autenticazione riuscita, l'applicazione grafica deve chiamare l'aiutante per farle ripetere l'operazione.</para>
</sect1>

</chapter>
