GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer Pkexec pour ne pas demander de mot de passe ?

J'ai une application graphique qui doit appeler un démon (écrit en Python) avec des privilèges de superutilisateur. Je voudrais le faire sans demander à l'utilisateur de saisir un mot de passe.

Étant donné que le démon est un script, je ne peux pas définir directement le bit SUID. Je pourrais écrire un wrapper C pour cela, mais je préfère ne pas réinventer la roue, surtout lorsqu'une erreur de ma part pourrait gravement compromettre la sécurité du système.

Ce que je ferais normalement dans cette situation est d'ajouter une ligne dans /etc/sudoers qui permet aux utilisateurs d'exécuter le démon en tant que root sans mot de passe, en utilisant la directive NOPASSWD. Cela fonctionne bien depuis la ligne de commande. Cependant, lorsque je fais cela à partir de l'interface graphique, un pkexec Une boîte de dialogue apparaît demandant le mot de passe de l'utilisateur. Il semble que sur Ubuntu, les appels à sudo de l'interface graphique sont en quelque sorte interceptés par pkexec .

Existe-t-il un moyen propre de contourner cela? Je préférerais vraiment ne pas avoir à m'occuper des tracas d'un script setuid.

Meilleure réponse

Il est inapproprié de dire que :"Il semble que sur Ubuntu, les appels à sudo de l'interface graphique sont en quelque sorte interceptés par pkexec " . pkexec n'a pas grand chose en commun avec sudo . Contrairement à sudo , pkexec n'accorde pas l'autorisation racine à un processus entier, mais permet plutôt un niveau de contrôle plus fin de la stratégie système centralisée.

Maintenant, si vous souhaitez exécuter une application graphique sans être invité par un mot de passe par pkexec , ce n'est pas difficile à faire. Prenons par exemple GParted . Lorsque vous l'ouvrirez, vous verrez la fenêtre de dialogue suivante vous demandant un mot de passe :

Cliquez sur Détails et la fenêtre de dialogue ressemblera maintenant à :

À partir de là, tout ce que vous avez à faire est d'ouvrir /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy fichier en utilisant par exemple la commande suivante :

gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy

et modifiez les lignes suivantes :

      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>

avec les éléments suivants :

      <allow_any>yes</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>

Enregistrez le fichier et fermez-le. Ensuite, quand vous ouvrirez GParted on ne vous demandera plus de mot de passe.

Connexe :Est-il possible avec Gedit ou la ligne de commande de modifier toutes les quatre lignes d'un fichier texte ?
Ubuntu
  1. Comment saisir un mot de passe pour plusieurs fenêtres ?

  2. Comment dois-je configurer la prise en charge de Trim pour les volumes logiques Lvm ?

  3. Comment faire en sorte qu'Apache 2 arrête de demander un mot de passe pour un certificat SSL ?

  4. Comment éviter la demande de mot de passe pour Sudo pour les scripts Crontab ?

  5. Comment configurer plusieurs environnements de déploiement pour Juju ? ?

Comment configurer Openbox pour votre bureau Linux

Comment configurer le proxy inverse Nginx pour Kibana

Comment configurer Kubernetes pour la mise à jour progressive

Comment configurer la mise en réseau pontée pour KVM sur Ubuntu 16.04 / 14.04 / Debian 9

Comment configurer la période d'inactivité pour l'écran de verrouillage automatique ?

Comment configurer les "touches de souris" ?