¿Cómo puedo configurar el Centro de software para permitir que los usuarios no root instalen cosas desde los repositorios de Ubuntu sin tener que escribir su contraseña?
Soy plenamente consciente de las implicaciones de seguridad y estoy dispuesto a correr el riesgo. Fedora 12 viene con algo como esto. (Al modificar la configuración de PolicyKit, creo)
Puede modificar los permisos de PolicyKit para permitir a los usuarios acceder al backend de aptdaemon que utiliza Software Center.
dpkg --listfiles aptdaemon
muestra que /usr/share/polkit-1/actions/org.debian.apt.policy
es el archivo que especifica las acciones posibles en el backend de aptdaemon.
Mirando en ese archivo, las etiquetas < action id="">
especifican las acciones posibles. Probablemente quiera org.debian.apt.install-packages
para permitir que los usuarios instalen nuevos paquetes desde el archivo, y org.debian.apt.update-cache
para permitir que los usuarios actualicen las listas de paquetes.
Consulte man pklocalauthority
que documenta cómo establecer permisos locales en las acciones de PolicyKit. Poner lo siguiente en /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla
permitirá a cualquier usuario que haya iniciado sesión en la máquina local instalar paquetes después de escribir su propia contraseña (incluso cuando no estén en el grupo de administración) y actualizar la memoria caché del paquete sin escribir ninguna contraseña.
[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
No creo que actualmente sea posible hacerlo a través de la GUI, pero lo siguiente debería funcionar, aunque sea un poco torpe. YMMV.
Agregue la siguiente línea a/etc/sudoers (use Sudo visudo
para editar el archivo):
%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get
Luego solo necesita crear y agregar los usuarios específicos al grupo packageinstallers
:
$ Sudo addgroup packageinstallers
$ Sudo adduser jdoe packageinstallers
Ahora jdoe
puede hacer lo siguiente:
$ Sudo apt-get install <some-package>
y puede editar el elemento del menú del escritorio para el Centro de software para que llame a software-center
antes del comando con gksudo
.
PolicyKit puede permitirle hacerlo sin Sudo, pero está más allá de mi comprensión en este momento.
Si solo necesita un permiso genérico para permitir/no permitir la instalación del paquete, vaya a PolicyKit.
Lamentablemente, PolicyKit no tiene un control preciso sobre el paquete para instalar. Si desea dar a sus usuarios permiso para instalar solo un conjunto restringido de aplicaciones, debe usar Sudo
e instalar algo como canales de software ...
También busqué algo así, pero como no encontré nada, codifiqué esta solución fácil "softwarechannels", disponible aquí en GitHub
Es un sistema muy simple que permite a los usuarios comunes (no administradores) instalar paquetes de catálogos restringidos.
Simplemente defina 'canales' (grupos de paquetes) en un archivo de texto simple y otorgue a sus usuarios permisos para iniciar canales de software.
Solo verán paquetes en canales que coincidan con sus grupos unix.
Respuesta de RAOF se aplica solo a Ubuntu. Kubuntu usa QAptWorker como backend (observado para Natty y Oneiric). Para permitir instalaciones no root, cree /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla
que contenga:
[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
Quería permitir que algunos usuarios que no son administradores instalen software sin otorgar acceso a Sudo directamente. Eso se logró insertando las siguientes líneas en ambos grupos de configuración:
Identity=unix-user:some-non-admin-user
Si hay un grupo al que se le debe otorgar permiso, use unix-group
en lugar de unix-user
.