J'ai donc un logiciel qui demande toujours un mot de passe lors du démarrage. Et je veux exécuter ce logiciel sans cette gksu
mot de passe Invite à apparaître à chaque fois.
La première chose que j'ai essayée a été d'ajouter son chemin aux sudoers. Cependant, cela n'a pas fonctionné. Plus tard, j'ai découvert qu'il existait un élément appelé policykit, et si un programme souhaite utiliser certaines actions de policykit, il demandera toujours à l'utilisateur de saisir un mot de passe (les utilisateurs sudoers n'ont aucun effet sur celui-ci).
J'ai suivi un guide dans Comment puis-je empêcher PolicyKit de demander un mot de passe? , mais cela ne fonctionne toujours pas, alors je pense que j'ai peut-être ajouté une action incorrecte.
Question: Comment puis-je voir ce que pkaction
mon programme utilise-t-il pour que je puisse le saisir dans mon fichier .pkla?
Ask Ubuntu a cette réponse ( Comment configurer pkexec pour ne pas demander de mot de passe? ), ce qui est plus proche de ce dont vous avez besoin que le lien que vous avez trouvé précédemment.
Comme exemple rapide pour trouver l'application, je vais illustrer l'utilisation de mon propre script. Je voulais remplacer gksu
qui est obsolète par pkexec
et j’ai donc écrit un script de wrapper appelé gsu .
J'appelle gsu à partir de la ligne de commande avec:
Notez la flèche déroulante Détails . Cliquez dessus et ceci est révélé:
Dans mon exemple, le pkla est contrôlé par org.gnome.gedit . Je vais utiliser cela dans l'exemple suivant, que vous remplacerez par le vôtre:
Si vous souhaitez exécuter l'invite sans mot de passe, vous devez définir les éléments suivants:
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
Sur une note personnelle, je n'aime pas trop entrer le mot de passe moi-même à plusieurs reprises, mais je ne changerai pas gedit
de ne jamais demander de mot de passe lors de la modification de fichiers racine à l'aide de pkexec
. Cependant, j'aimerais qu'il ne demande pas à plusieurs reprises un mot de passe lors de son exécution répétée dans une session donnée. Vous pouvez le faire avec Sudo
et vous pouvez prolonger la période de 10 à 120 minutes comme je l’ai fait sur mon système. Je voudrais une fonctionnalité similaire pour les kits de politique.
Il semblerait contre-intuitif de contourner la sécurité d'une autorisation policykit . En l'absence de plus de détails, mon meilleur conseil est ne le faites pas.
Quoi qu'il en soit,
Un mécanisme doit déclarer un ensemble d’actions pour pouvoir utiliser polkit. Les actions correspondent aux opérations que les clients peuvent demander au mécanisme à exécuter et sont définies dans des fichiers qu'il installe dans le répertoire/usr/share/polkit-1/actions.
pkaction --verbose
produira des résultats détaillés concernant toutes les actions du kit de stratégie. Cela sera utile lors de l'examen des fichiers de configuration locaux. Vous pouvez rediriger cette sortie vers un fichier texte pour une révision ultérieure de la manière habituelle >later.review.txt
Ces fichiers de configuration se trouvent dans les répertoires répertoriés lorsque vous exécutez la commande Sudo ls /var/lib/polkit-1/localauthority/
10-vendor.d 20-org.d 30-site.d 50-local.d 90-mandatory.d
Explorez et trouvez le fichier .pkla qui correspond à votre logiciel non identifié . En l'absence de toute information utile, je vais prétendre que c'est le Unity Greeter, par exemple. Nous pouvons revoir les lignes qui commencent par Action=
avec la commande Sudo grep "Action=" /var/lib/polkit-1/localauthority/10-vendor.d/unity-greeter.pkla
, ce qui entraîne
Action=org.freedesktop.NetworkManager.enable-disable-network;org.freedesktop.NetworkManager.enable-disable-wifi;org.freedesktop.NetworkManager.enable-disable-wwan;org.freedesktop.NetworkManager.enable-disable-wimax;
Action=org.freedesktop.NetworkManager.sleep-wake
Action=org.freedesktop.NetworkManager.wifi.share.protected;org.freedesktop.NetworkManager.wifi.share.open
Action=org.freedesktop.NetworkManager.settings.modify.own;org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.settings.modify.hostname
Action=org.freedesktop.NetworkManager.use-user-connections
Action=org.freedesktop.NetworkManager.network-control
Pour plus d'informations, vous pouvez trouver le dernier manuel de référence de polkit ici , ainsi que des informations connexes sur systemd ici
Comme @muru le fait remarquer, il existe également une question-réponse connexe ici
Sources:
https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html