Comment empêcher PolicyKit de demander un mot de passe?

24

Pendant des années, j'ai eu ce qui suit dans mon sudoersdossier:

scott   ALL=NOPASSWD: ALL

Pour ceux qui ne le savent pas, cela empêche les sudoamis ( gksudo, etc.) de demander un mot de passe. Cependant, au fil des ans, de plus en plus de choses qui, une fois utilisées, sudosont passées à PolicyKit.

Je recherche une configuration équivalente pour PolicyKit, de sorte qu'il ne me demandera jamais mon mot de passe.

Pour ceux qui n'aiment pas ma demande, permettez-moi de dire ceci: je comprends les raisons de la configuration par défaut, et elles sont solides. Je comprends également les risques inhérents à la configuration que je souhaite réaliser. Néanmoins, c'est la façon dont je veux configurer mon système. Ceux qui ne comprennent pas complètement ce qui précède ne devraient pas tenter ce que j'essaie.

Scott Severance
la source

Réponses:

15

Vous pouvez tromper PolicyKit et supprimer TOUTES les invites de mot de passe en remplaçant l'action par un caractère générique.

AVERTISSEMENT: ce qui suit supprimera TOUTES les invites de mot de passe à l'échelle mondiale pour toutes les personnes appartenant au groupe administrateur, à l'exception de l'écran de connexion. Il est EXTRÊMEMENT dangereux et ne devrait JAMAIS être mis en œuvre car il y a de fortes chances que VOUS FINIEZ PAR CASSER VOTRE SYSTÈME !!

Ne dites pas que vous n'étiez pas prévenu!

REMARQUE: si vous utilisez 12.04 ou une version ultérieure, remplacez "admin" par "sudo"!

Remplacez "nom d'utilisateur" par votre nom d'utilisateur réel:

usermod -aG admin username

Basculez vers root:

sudo -i

Créez une nouvelle stratégie:

gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla

Ajoutez ce qui suit:

[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes

Sauvegarder et quitter. Ensuite, essayez quelque chose qui nécessite généralement un mot de passe. :)

REMARQUE: peu importe ce que vous utilisez comme nom de fichier .pkla. Vous pouvez le nommer comme vous voulez.

Et enfin, il s'agit de la SEULE politique dont vous aurez besoin pour supprimer les invites de mot de passe car, encore une fois, il le fait globalement.

user55572
la source
Cela fonctionne également sur Fedora lorsque vous remplacez le admingroupe par wheel. Merci!
Kenny Rasschaert
3
Quelqu'un pourrait-il décrire exactement comment cela "brisera" le système?
Mehrdad du
3
Oui s'il vous plaît. Comment cela va-t-il briser le système? Pas ça! Quelque chose de stupide que vous faites après cela va casser le système, mais pas ça! Cela vous permettra de faire quoi que ce soit sur l'hôte sans mot de passe. Si vous faites quelque chose de stupide, vous casserez le système. Si vous devez mettre le mot de passe et que vous faites quelque chose de stupide, vous casserez le système. En soi, cela rend un peu plus facile de faire quelque chose de stupide.
dangonfast
1
@ jeckyll2hide Lisez la NOTE - cela explique pourquoi l'OP a choisi [Install package file]. Soit vous n'êtes pas d'accord avec cela et la REMARQUE nécessite une modification similaire, soit votre modification n'est pas valide et doit être annulée.
bcbc
1
@prusswan vous pouvez utiliser Identity=unix-user:scottpour autoriser uniquement l'utilisateur "scott" à effectuer l'action. De plus, si vous souhaitez simplement autoriser certaines actions, vous pouvez grep /var/log/auth.log et polkitd affichera le nom complet du polkit que vous essayiez lorsque vous avez été invité à entrer votre mot de passe. cat /var/log/auth.log | grep polkitdvous en donnera une liste assez rapide
Scott
8

Vous pouvez créer un .pkla, un tout-en-un ou un couple basé sur des groupes d'action, n'a pas vraiment d'importance.

Pour une référence dans / usr / share / polkit-1 / actions, ouvrez celles qui sont intéressées dans un éditeur de texte pour obtenir les identifiants d'action.

En ce qui concerne un .pkla ou 2, je trouve que le meilleur endroit pour les mettre est ici, il sera protégé de toute mise à jour

/var/lib/polkit-1/localauthority/50-local.d

Ainsi, par exemple, voici mon principal, nommé package-manager.pkla bien qu'il s'étende un peu plus loin que la politique de gestion des packages

[Install package file]
Identity=unix-group:admin
Action=org.debian.apt.install-file;org.debian.apt.update-cache;org.debian.apt.install-or-remove-packages;org.debian.apt.upgrade-packages
ResultActive=yes

[Install package synaptic]
Identity=unix-group:admin
Action=com.ubuntu.pkexec.synaptic
ResultActive=yes

[Change add repo]
Identity=unix-group:admin
Action=com.ubuntu.softwareproperties.applychanges;org.debian.apt.change-repository
ResultActive=yes

[usbcreator format]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.format
ResultActive=yes

[Install bootloader]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.bootloader
ResultActive=yes

[Add users]
Identity=unix-group:admin
Action=org.freedesktop.accounts.user-administration
ResultActive=yes

Notez qu'à partir de la version 12.04, le groupe utilisé pour l'utilisateur "admin" doit être remplacé par sudo, c'est-à-dire.

Identity=unix-group:sudo

Notez également que les actions peuvent être enchaînées par section, sans espace, utilisez a; entre les identifiants

doug
la source
Il semble que vous définissiez les paramètres de chaque programme individuellement. Cela semble assez fastidieux, surtout si j'installe plus tard un autre programme qui souhaite utiliser PolicyKit. Je cherche un moyen d'apporter un changement de configuration global qui affecte tout.
Scott Severance
1
Je n'ai jamais vu de moyen d'affecter `` globalement '', je ne pense pas que cela fonctionne comme policykit, il existe un ensemble de règles par identifiant d'action
doug
0

Une option, si vous savez ce que vous faites, consiste à désactiver complètement le kit de stratégie.

sudo apt-get remove libpolkit-agent-1-0

viksit
la source
1
Il supprime trop de packages essentiels, comme network-manager, gnome-control-centeret bien d'autres. Existe-t-il un moyen plus fin?
Suncatcher