| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| policykit [Le 26/09/2021, 09:34] – [Exemple de policy] Suppression contenu lié à software-center plus dans les dépôts. 86.215.34.61 | policykit [Le 17/09/2026, 19:24] (Version actuelle) – nautilus -> GNOME Fichiers | mise en forme krodelabestiole |
|---|
| {{tag>Xenial Bionic système sécurité sudo}} | {{tag>Noble Resolute système sécurité sudo}} |
| ---- | |
| ====== PolKit : Gestion des droits des utilisateurs ====== | ====== PolKit : Gestion des droits des utilisateurs ====== |
| |
| ===== Fonctionnement de base ===== | ===== Fonctionnement de base ===== |
| |
| Certains logiciels, comme [[:flatpak|la commande flatpak]], la [[:gnome-software|logithèque]] ou les [[:gnome-control-center|paramètres système]] vous demanderont parfois automatiquement votre mot de passe pour certaines actions. Il s'agit de logiciels intégrant une élévation de privilèges par **PolKit**. | Certaines applications, comme [[:flatpak|la commande flatpak]], la [[:gnome-software|logithèque]] ou les [[:gnome-control-center|paramètres système]] vous demanderont parfois automatiquement votre mot de passe pour certaines actions. Il s'agit de logiciels intégrant une élévation de privilèges par **PolKit**. |
| |
| **PolKit** est un logiciel moderne actuellement privilégié par les développeurs d'environnements graphiques grâce à la sécurité qu'il fournit, en effet il fonctionne selon le principe suivant : un programme (démon) s'exécute en arrière-plan (sans fenêtre), et dispose des droits root. \\ Les applications sont invitées à lui demander les droits nécessaires pour effectuer des opérations spécifiques. \\ PolKit saura quoi répondre en fonction des "policy" paramétrées (des configurations qui définissent qui peut faire quoi, et quel logiciel a besoin de quels privilèges). | **PolKit** est un logiciel moderne actuellement privilégié par les développeurs d'environnements graphiques grâce à la sécurité qu'il fournit, en effet il fonctionne selon le principe suivant : un programme (démon) s'exécute en arrière-plan (sans fenêtre), et dispose des droits root. \\ Les applications sont invitées à lui demander les droits nécessaires pour effectuer des opérations spécifiques. \\ PolKit saura quoi répondre en fonction des "policy" paramétrées (des configurations qui définissent qui peut faire quoi, et quel logiciel a besoin de quels privilèges). |
| 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]] : éditeur de partitions |
| | * [[:flatpak]] |
| * [[:plasma-discover|Plasma Discover]] | * [[:plasma-discover|Plasma Discover]] |
| * [[:Nautilus]] | * [[:nautilus|GNOME Fichiers]] |
| * 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. |
| |
| Si votre compte est paramétré correctement, l'action demandée pourra alors s'effectuer sans problème (sinon, référez-vous à [[:sudo#ajouter_les_privileges_a_des_utilisateurs|ceci]] ou **[[#utilisation|ceci]]**). | Si votre compte est paramétré correctement, l'action demandée pourra alors s'effectuer sans problème (sinon, référez-vous à //[[:Permissions administrateur]]// ou **[[#utilisation|ceci]]**). |
| |
| === L'exemple de Nautilus === | === L'exemple de GNOME Fichiers === |
| |
| À 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|GNOME Fichiers]], on peut faire précéder l'adresse (accessible avec ''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]]. |
| |
| 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|GNOME Fichiers]] conserve la configuration de l'utilisateur courant ([[:nautilus#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]] |
| |
| |
| | 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é ! |
| | |
| | |
| | ==== Exemple simple ==== |
| | |
| | === /etc/polkit-1/rules.d/MaRegle.rules === |
| | <code> |
| | [Allow monApplication] |
| | Identity=unix-group:sudo |
| | 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>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> |
| </note> | pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nom-du-programme |
| |
| ===== Voir aussi ===== | ===== Voir aussi ===== |
| |
| * **(en)** [[https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html|Polkit]] | * **(//en//)** [[https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html|Polkit]] |
| * [[:securite|Le portail "Sécurité" du wiki]] | * Le portail //[[:Sécurité]]// |
| |
| ---- | ---- |
| | //[[:Contributeurs]] : [[:utilisateurs:Tshirtman]], [[:utilisateurs:L'Africain]], [[:utilisateurs:roschan]], ...// |
| //Contributeurs : [[utilisateurs:Tshirtman]], [[utilisateurs:l_africain|L'Africain]], [[utilisateurs/roschan]], | |
| , ...// | |