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)
Vous pouvez modifier les autorisations PolicyKit pour autoriser les utilisateurs à accéder au backend aptdaemon utilisé par le Centre logiciel.
dpkg --listfiles aptdaemon
indique que /usr/share/polkit-1/actions/org.debian.apt.policy
est le fichier spécifiant les actions possibles sur le backend d'aptdaemon.
En recherchant dans ce fichier, les balises < action id="">
spécifient les actions possibles. Vous voudriez probablement que org.debian.apt.install-packages
permette aux utilisateurs d'installer de nouveaux packages à partir de l'archive et org.debian.apt.update-cache
pour permettre aux utilisateurs de mettre à jour les listes de packages.
Voir man pklocalauthority
qui explique comment définir des autorisations locales sur les actions PolicyKit. Le fait d'inscrire le code suivant dans /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla
permettra à tout utilisateur connecté à la machine locale d'installer des packages après avoir saisi son propre mot de passe (même s'ils ne font pas partie du groupe admin) et de mettre à jour le cache de package sans saisir aucun 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
Je ne pense pas qu’il soit actuellement possible de le faire via l’interface graphique, mais ce qui suit devrait fonctionner, bien qu’il faille un peu kludgy. YMMV.
Ajoutez la ligne suivante à/etc/sudoers (utilisez Sudo visudo
pour é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 groupe packageinstallers
:
$ Sudo addgroup packageinstallers
$ Sudo adduser jdoe packageinstallers
jdoe
peut maintenant effectuer les opérations suivantes:
$ Sudo apt-get install <some-package>
et vous pouvez éditer l’élément de menu du bureau du Centre logiciel pour qu’il appelle software-center
en ajoutant la commande __ avant à la commande avec gksudo
.
PolicyKit peut vous permettre de le faire sans Sudo, mais je ne le comprends pas pour le moment.
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 Sudo
et 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 communs (non administrateurs) d’installer des packages à partir de catalogues restreints.
Il 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.
La réponse de RAOF ne s'applique qu'à 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.pkla
contenant:
[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 recevoir une autorisation, utilisez unix-group
au lieu de unix-user
.