it-swarm-es.com

¿Cómo puedo configurar el Centro de software para instalar software para usuarios no root?

¿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)

47
snostorm

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
36
RAOF

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.

10
lfaraone

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.

5
Alfonso E.M.

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.

5
Lekensteyn