| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| policykit [Le 22/10/2017, 14:34] – [Fonctionnement de base] définition policy Roschan | policykit [Le 05/08/2023, 15:08] (Version actuelle) – [Exemples] Coeur Noir |
|---|
| {{tag>Xenial système sécurité}} | {{tag>Xenial Bionic système sécurité sudo}} |
| ---- | ---- |
| ====== PolKit : Gestion des droits des utilisateurs ====== | ====== PolKit : Gestion des droits des utilisateurs ====== |
| Parmi les programmes capables d'utiliser PolKit, on peut citer : | Parmi les programmes capables d'utiliser PolKit, on peut citer : |
| * [[:gnome-packagekit|GNOME Paquets]] | * [[:gnome-packagekit|GNOME Paquets]] |
| * [[:flatpak]] | |
| * [[:gnome-software|GNOME Logiciels]] | * [[:gnome-software|GNOME Logiciels]] |
| | * [[:gnome-disk-utility|GNOME Disques]] |
| | * [[gparted|GParted : éditeur de partitions]] |
| | * [[:flatpak]] |
| * [[:plasma-discover|Plasma Discover]] | * [[:plasma-discover|Plasma Discover]] |
| * [[:Nautilus]] | * [[:Nautilus]] |
| * Les paramètres système (concernant l'ajout d'utilisateur par exemple) | * Les paramètres système (concernant l'ajout d'utilisateur par exemple) |
| * [[:gnome-disk-utility|GNOME Disques]] | |
| * etc. | * etc. |
| |
| === L'exemple de Nautilus === | === L'exemple de Nautilus === |
| |
| À partir d'Ubuntu [[:17.10]], dans l'explorateur de fichiers [[:Nautilus]], on peut faire précéder l'adresse (accessible en faisant "''Ctrl L''") par le préfixe ''admin:/''''/''''/'' (exemple : ''admin:/''''/''''/''''/usr/share/applications/''), le mot de passe sera alors demandé, et l'emplacement en question sera ouvert avec les droits d'administration. Vous pourrez notamment y modifier des fichiers avec [[:gedit]]. | À partir d'Ubuntu [[:17.10]], dans le gestionnaire de fichiers [[:Nautilus]], on peut faire précéder l'adresse (accessible en faisant "''Ctrl L''") par le préfixe <code>admin://</code> exemple : <code>admin:///usr/share/applications/</code> le mot de passe sera alors demandé, et l'emplacement en question sera ouvert avec les droits d'administration. Vous pourrez notamment y modifier des fichiers avec [[:gedit]]. |
| |
| Pourtant, remarquez que Nautilus conserve la configuration de l'utilisateur courant (signets, thèmes, ...) : **PolKit** agit comme un filtre très précis, qui ne prend à //root// que ses privilèges de lecture et d'écriture dans les dossiers, sans prendre sa configuration. | Pourtant, remarquez que Nautilus conserve la configuration de l'utilisateur courant (signets, thèmes, ...) : **PolKit** agit comme un filtre très précis, qui ne prend à //root// que ses privilèges de lecture et d'écriture dans les dossiers, sans prendre sa configuration. |
| ===== Installation ===== | ===== Installation ===== |
| |
| Le paquet qui installe PolKit est [[apt>policykit-1]], **il est déjà installé** par défaut sur le système. | Le paquet qui installe PolKit est [[apt>policykit-1]], **il est déjà installé** par défaut sur Ubuntu Gnome, Mate, Xfce et Cinnamon |
| |
| | Pour voir la configuration à partir d'une interface graphique, installer [[https://github.com/scarygliders/Polkit-Explorer|polkit-explorer]] |
| ===== Utilisation ===== | ===== Utilisation ===== |
| |
| ==== Créer ou modifier des "policy" ==== | ==== Créer ou modifier des "policy" ==== |
| |
| Pour gérer les règles il faut donc [[:tutoriel:comment_modifier_un_fichier|éditer les fichiers]] de configuration à la main avec [[:sudo|les droits d'administration]] présent dans le dossier **/var/lib/polkit-1/**. | Pour gérer les règles il faut donc [[:tutoriel:comment_modifier_un_fichier|éditer les fichiers]] de configuration à la main avec [[:sudo|les droits d'administration]]. La configuration se fait avec des règles et des actions : |
| | * Les Actions sont définies dans des fichiers XML .policy situés dans **/usr/share/polkit-1/actions** |
| | * Les règles d'autorisation sont définies dans les fichiers .rules JavaScript. On les trouve à deux endroits : |
| | * **/usr/share/polkit-1/rules.d** pour les paquets tiers peuvent utiliser (bien que peu, voire aucun, ne le fasse) |
| | * **/etc/polkit-1/rules.d** pour la configuration locale. |
| |
| La documentation vous aidant à écrire les jolies règles personnalisées pour donner "juste ce qu'il faut" de droits à vos utilisateurs, tapez dans un [[:terminal]] : | La documentation vous aidant à écrire les jolies règles personnalisées pour donner "juste ce qu'il faut" de droits à vos utilisateurs, tapez dans un [[:terminal]] : |
| man pklocalauthority | man pklocalauthority |
| |
| Ou consultez la [[http://hal.freedesktop.org/docs/polkit/manpages.html|documentation en ligne]] | Ou consultez la [[https://www.freedesktop.org/software/polkit/docs/latest/manpages.html|documentation en ligne]] |
| |
| ==== Exemple de policy ==== | |
| |
| Exemple de fichier de configuration pour autoriser un utilisateur non admin à utiliser la [[software-center|logithèque ou apt]] : **/var/lib/polkit-1/localauthority/50-local.d/permission-software-center.pkla** | La page [[https://askubuntu.com/questions/383747/how-to-configure-pkexec-to-not-ask-for-password|How to configure pkexec to not ask for password ?]] donne également un exemple intéressant de comment demander à pkexec d'arreter de demander un mot de passe. A configurer avec prudence pour des raisons de sécurité ! |
| <file> | |
| [Grant for software-center] | |
| Identity=unix-user:nom_de_l_utilisateur | ==== Exemple simple ==== |
| Action=org.debian.apt.install-packages | |
| ResultAny=no | === /etc/polkit-1/rules.d/MaRegle.rules === |
| ResultInactive=no | <code> |
| ResultActive=auth_self_keep</file> | [Allow monApplication] |
| | Identity=unix-group:sudo |
| Pour connaître le contenu de la ligne Action, reportez-vous au dossier **/usr/share/polkit-1/actions/** qui contient toutes les actions nécessitant les droits d'utilisateurs. | Action=org.freedesktop.policykit.exec |
| | ResultActive=yes |
| | </code> |
| | |
| | |
| | === /usr/share/polkit-1/actions === |
| | <code> |
| | |
| | <?xml version="1.0" encoding="UTF-8"?> |
| | <!DOCTYPE policyconfig PUBLIC |
| | "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" |
| | "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> |
| | <policyconfig> |
| | |
| | <action id="com.ubuntu.pkexec.monApplication"> |
| | <message gettext-domain="monApplication">Authentication is required to execute actions</message> |
| | <icon_name>configurator</icon_name> |
| | <defaults> |
| | <allow_any>yes</allow_any> |
| | <allow_inactive>yes</allow_inactive> |
| | <allow_active>yes</allow_active> |
| | </defaults> |
| | <annotate key="org.freedesktop.policykit.exec.path">maCommandeALaquelleJeVeuxDesAutorisationsSpeciales</annotate> |
| | <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> |
| | </action> |
| | |
| | </policyconfig> |
| | </code> |
| | |
| | Ici, vous remplacerez monApplication et maCommandeALaquelleJeVeuxDesAutorisationsSpeciales |
| | Ex : |
| | * monApplication = gparted |
| | * maCommandeALaquelleJeVeuxDesAutorisationsSpeciales = /usr/sbin/gparted |
| |
| ===== La commande pkexec ===== | ===== La commande pkexec ===== |
| Une boîte de dialogue apparaît alors pour demander votre mot de passe ; après validation, la commande s'exécute. | Une boîte de dialogue apparaît alors pour demander votre mot de passe ; après validation, la commande s'exécute. |
| |
| <note>Pour qu'un programme "sache" nativement s'exécuter via polkit, il est préférable qu'il ait été "conçu pour ça" par les développeurs (voir ci-dessus les "[[#exemple de policy|actions]]"), et il est souhaitable que des [[#utilisation|policy]] adaptées existent. | <note>Pour qu'un programme "sache" nativement s'exécuter via polkit, il est préférable qu'il ait été "conçu pour ça" par les développeurs (voir ci-dessus les "[[#exemple de policy|actions]]"), et il est souhaitable que des [[#utilisation|policy]] adaptées existent.</note> |
| | |
| Tous les programmes ne fonctionneront pas aussi facilement, et notamment les programmes graphiques. | |
| </note> | |
| |
| | <note>Tous les programmes ne fonctionneront pas aussi facilement, et notamment les programmes graphiques. En effet il faut utiliser les variables d'environnement ''$DISPLAY'' et ''$XAUTHORITY'' : </note> |
| | pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nom-du-programme |
| ===== Voir aussi ===== | ===== Voir aussi ===== |
| |
| ---- | ---- |
| |
| //Contributeurs : [[utilisateurs:Tshirtman]], [[utilisateurs:l_africain|L'Africain]], [[utilisateurs/roschan]], | //Contributeurs : [[utilisateurs:Tshirtman]], [[utilisateurs:l_africain|L'Africain]], [[utilisateurs/roschan]], |
| , ...// | , ...// |