Comment configurer le Centre de logiciel pour installer le logiciel pour les utilisateurs non-root?

47

Comment puis-je configurer le Centre de logiciel pour permettre aux utilisateurs non root d'installer des éléments à partir du référentiel Ubuntu sans avoir à saisir leur mot de passe?

Je suis pleinement conscient des implications pour la sécurité et je suis prêt à prendre le risque. Fedora 12 livré avec quelque chose comme ça. (En modifiant la configuration de PolicyKit, je crois)

tempête
la source
5
Il est important de noter que Fedora l’a également retirée après que le ciel leur soit tombé dessus.
Nicholas Knight le
Oui, je m'en souviens. Cela n'a de sens que sur les ordinateurs de bureau avec un ou deux utilisateurs.
tempête
N'oubliez pas que certains logiciels du marché des applications, tels que le centre de logiciels, permettent de modifier les référentiels système. Un libre-service de packages est risqué, mais les utilisateurs qui ajoutent des sources de packages non fiables sont vraiment dangereux.
Alfonso EM

Réponses:

36

Vous pouvez modifier les autorisations PolicyKit pour autoriser les utilisateurs à accéder au backend aptdaemon utilisé par le Centre logiciel.

dpkg --listfiles aptdaemonmontre que /usr/share/polkit-1/actions/org.debian.apt.policyc'est le fichier spécifiant les actions possibles sur le backend d'aptdaemon.

En regardant dans ce fichier, les < action id="">balises spécifient les actions possibles. Vous voudrez probablement org.debian.apt.install-packagespermettre aux utilisateurs d'installer de nouveaux packages à partir de l'archive et org.debian.apt.update-cacheaux utilisateurs de mettre à jour les listes de packages.

Voir man pklocalauthorityquels documents comment définir les autorisations locales sur les actions de PolicyKit. Si vous insérez ce qui suit /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla, tout utilisateur connecté à la machine locale pourra installer des packages après avoir saisi son propre mot de passe (même s’ils ne font pas partie du groupe admin) et mettre à jour le cache des packages sans saisir de mot de passe.

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes
RAOF
la source
Les politiques de Kubuntu (du moins dans Natty et Oneiric) sont en /usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
vigueur
Les instructions pour Kubuntu se trouvent dans ma réponse
Lekensteyn
Sauveteur de vie - Bravo mec! J'ai dû ajouter Identity=*pour que cela fonctionne, adapté de askubuntu.com/a/123260 . En outre, y a-t-il un moyen d'obtenir davantage de sorties de journal de Policy Kit dans /var/log/auth.log( par exemple, d'autres fichiers journaux)? Je ne reçois que des authentication failsmessages, mais aucune raison de l'échec ...
ssc
10

Je ne pense pas qu’il soit actuellement possible de le faire via l’interface graphique, mais ce qui suit devrait fonctionner, même s’il est un peu compliqué. YMMV.

Ajoutez la ligne suivante à / etc / sudoers (utilisez sudo visudopour éditer le fichier):

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

Ensuite, il vous suffit de créer et d’ajouter les utilisateurs spécifiques au packageinstallersgroupe:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Maintenant jdoepeut faire ce qui suit:

$ sudo apt-get install <some-package>

et vous pouvez éditer l’élément de menu du bureau pour le centre logiciel afin qu’il appelle en software-centerajoutant la commande au début de la commande gksudo.

PolicyKit peut vous permettre de le faire sans sudo, mais je ne le comprends pas pour le moment.

lfaraone
la source
Est-ce que cela leur permet d’installer à partir de Synaptic ou d’aptitude, ou juste d’apt-get?
tempête
Si vous deviez ajouter "/ usr / bin / synaptic" à la liste, ce serait le cas. En fait, vous pourriez probablement ajouter "/ usr / bin / software-center" à la liste et cela fonctionnerait. Je n'ai pas testé cela, laissez-moi savoir si cela fonctionne et je mettrai à jour la réponse.
lfaraone
Je vais essayer ça. :)
tempête
Cela nécessiterait que les utilisateurs sachent exécuter software-center avec sudo ou modifier le fichier .desktop. Voir ma réponse sur la façon de modifier PolicyKit pour faire ce que vous voulez.
RAOF
D'accord, ce serait une solution supérieure.
lfaraone
5

La réponse de RAOF s'applique uniquement à Ubuntu. Kubuntu utilise QAptWorker comme back-end (observé pour Natty et Oneiric). Pour autoriser les installations non root, créez /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pklacontenant:

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

Je voulais permettre à des utilisateurs non-administrateurs d'installer des logiciels sans autoriser directement l'accès à sudo. Cela a été accompli en insérant les lignes suivantes dans les deux groupes de configuration:

Identity=unix-user:some-non-admin-user

Si un groupe doit obtenir une autorisation, utilisez unix-groupplutôt que unix-user.

Lekensteyn
la source
Pour réappliquer les règles, j'ai redémarré. (une nouvelle connexion fonctionnerait probablement aussi)
Lekensteyn
Comment es-tu supposé faire ça? Même après que sudo -ije n’ai même pas accès à /etc/polkit-1/localauthority(Ubuntu 17.10): " Je n’essaierai pas de traiter le répertoire / etc / polkit-1 / localauthority"
JHBonarius le
5

Si vous avez seulement besoin d'une autorisation générique pour autoriser / interdire l'installation de paquet, choisissez PolicyKit.

Malheureusement, PolicyKit n’exerce aucun contrôle précis sur le paquet à installer. Si vous souhaitez autoriser vos utilisateurs à installer uniquement un ensemble restreint d'applications, vous devez utiliser sudoet installer quelque chose comme des canaux virtuels ...

J'ai aussi cherché quelque chose comme ça, mais comme je n'ai rien trouvé, j'ai codé cette solution facile "softwarechannels", disponible ici sur GitHub

C’est un système très simple qui permet aux utilisateurs courants (non-administrateurs) d’installer des packages à partir de catalogues restreints.

Il vous suffit de définir les «canaux» (groupes de packages) dans un simple fichier texte et d’autoriser vos utilisateurs à lancer des canaux logiciels.

Ils ne verront que les paquets dans les canaux correspondant à leurs groupes unix.

Alfonso EM
la source