Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
policykit [Le 03/06/2019, 16:55] 78.250.62.207 [PolKit : Gestion des droits des utilisateurs] |
policykit [Le 05/08/2023, 15:08] (Version actuelle) Coeur Noir [Exemples] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Xenial système sécurité sudo}} | + | {{tag>Xenial Bionic système sécurité sudo}} |
---- | ---- | ||
- | [[:tutoriel:comment_installer_un_paquet|installez le paquet]]====== PolKit : Gestion des droits des utilisateurs ====== | + | ====== PolKit : Gestion des droits des utilisateurs ====== |
**PolKit** //(anciennement PolicyKit)// est une couche de gestion d'authentification et de permissions pour gérer finement les différentes opérations permises à un utilisateur ou un groupe d'utilisateurs, avec ou sans mot de passe. | **PolKit** //(anciennement PolicyKit)// est une couche de gestion d'authentification et de permissions pour gérer finement les différentes opérations permises à un utilisateur ou un groupe d'utilisateurs, avec ou sans mot de passe. | ||
Ligne 17: | Ligne 17: | ||
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. | ||
Ligne 29: | Ligne 30: | ||
=== 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. | ||
Ligne 35: | Ligne 36: | ||
===== 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 ===== | ||
Ligne 70: | Ligne 108: | ||
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 ===== | ||
Ligne 82: | Ligne 119: | ||
---- | ---- | ||
- | //Contributeurs : [[utilisateurs:Tshirtman]], [[utilisateurs:l_africain|L'Africain]], [[utilisateurs/roschan]], | + | //Contributeurs : [[utilisateurs:Tshirtman]], [[utilisateurs:l_africain|L'Africain]], [[utilisateurs/roschan]], |
, ...// | , ...// |