PolicyKit è un toolkit a livello applicazione per definire e manipolare le politiche che permettono a processi non privilegiati di comunicare con quelli privilegiati, allo scopo di concedere ad alcuni utenti il diritto di eseguire alcune attività in certe situazioni. A volta ci si riferisce a questo come a "il sudo di systemd".
Mentre PolicyKit è stato rimpiazzato da polkit (che ha riscritto componenti del sistema, rompendo la compatibilità all'indietro) in molte distribuzioni, Debian continua ad usare PolicyKit da wheezy fino a buster.
Esempi di utilizzo:
- Permettere all'utente di ibernare e spegnere il computer.
- Permettere all'utente di gestire connessioni (Wireless).
- Permettere all'utente di montare/espellere un supporto rimovibile (CD/DVD, chiavi USB...)
- Permettere all'utente di accedere alle periferiche, come audio, scanner, ecc.
A differenza dei precedenti meccanismi utilizzati nelle GUI, PolicyKit è un posto centralizzato per definire ed attuare tale politica.
Per un'introduzione generale, leggere http://lwn.net/Articles/258592/ o la pagina di manuale polkit(8).
ToDo: spiegare come funziona.
Configurazione
Le politiche installate localmente dovrebbero essere installate in /etc/polkit-1/localauthority/.
Mentre gli esempi moderni di polkit tipicamente dimostrano l'uso di regole ?JavaScript, PolicyKit non supporta tale metodo e invece fa affidamento sull'uso di file *.conf e *.pkla. Vedere la pagina di manuale pklocalauthority(8) per i dettagli.
Esempi
Per permettere agli utenti del gruppo ungruppo di gestire i servizi systemd, creare /etc/polkit-1/localauthority/50-local.d/manage-units.pkla con i contenuti seguenti:
[Allow users to manage services] Identity=unix-group:somegroup Action=org.freedesktop.systemd1.manage-units ResultActive=yes
Questo è l'equivalente per PolicyKit della seguente regola polkit che si potrebbe trovare in /etc/polkit-1/rules.d/50-manage-units.rules:
polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.systemd1.manage-units" && subject.isInGroup("somegroup") ) { return polkit.Result.YES; } });
Vedere anche
Pagina del progetto freedesktop.org per PolicyKit
https://freedesktop.org/wiki/Software/PolicyKitManuale di riferimento per la libreria PolicyKit
https://www.freedesktop.org/software/polkit/docs/0.105/Specifica di PolicyKit
https://www.freedesktop.org/software/polkit/docs/0.105/polkit.8.html * PolicyKit(8), PolicyKit.conf(8)