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

47

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

snostorm
fuente
55
Es importante tener en cuenta que Fedora también se retiró después de que el cielo cayera sobre ellos.
Nicholas Knight
Sí, lo recuerdo. Realmente solo tiene sentido en computadoras de escritorio con solo uno o dos usuarios.
snostorm
Tenga en cuenta que algunos softwares del mercado de aplicaciones, como Software Center, permiten cambiar los repositorios del sistema. Un autoservicio de paquetes es arriesgado, pero los usuarios que agregan fuentes de paquetes no confiables es realmente peligroso.
Alfonso EM

Respuestas:

36

Puede modificar los permisos de PolicyKit para permitir que los usuarios accedan al backend de aptdaemon que utiliza Software Center.

dpkg --listfiles aptdaemonmuestra que /usr/share/polkit-1/actions/org.debian.apt.policyes el archivo que especifica las acciones posibles en el backend de aptdaemon.

Mirando en ese archivo, las < action id="">etiquetas especifican las posibles acciones. Probablemente desee org.debian.apt.install-packagespermitir que los usuarios instalen nuevos paquetes desde el archivo y org.debian.apt.update-cachepermitir que los usuarios actualicen las listas de paquetes.

Vea man pklocalauthorityqué documentos 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.pklapermitirá 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 el 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
RAOF
fuente
Las políticas de Kubuntu (al menos en Natty y onírico) están en/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn
Las instrucciones para Kubuntu se pueden encontrar en mi respuesta
Lekensteyn
Salvavidas - saludos compañero! Tuve que agregar Identity=*para que esto funcione, adaptado de askubuntu.com/a/123260 . Además, ¿hay alguna forma de obtener más resultados de registro del kit de políticas, por ejemplo /var/log/auth.log(o cualquier otro archivo de registro)? Solo me dan authentication failsmensajes, pero no hay razón por qué ha fallado ...
SSC
10

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 visudopara editar el archivo):

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

Entonces solo necesita crear y agregar los usuarios específicos al packageinstallersgrupo:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Ahora jdoepuede 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 al software-centeranteponer el comando gksudo.

PolicyKit puede permitirle hacerlo sin sudo, pero está más allá de mi comprensión en este momento.

lfaraone
fuente
¿Esto les permite instalar desde Synaptic o aptitude, o simplemente apt-get?
snostorm
Si tuviera que agregar "/ usr / bin / synaptic" a la lista, lo haría. De hecho, probablemente podría agregar "/ usr / bin / software-center" a la lista y funcionaría. Sin embargo, no lo he probado, avíseme si funciona y actualizaré la respuesta.
lfaraone
Lo intentaré :)
snostorm
Eso requeriría que los usuarios sepan ejecutar software-center con sudo, o que usted modifique el archivo .desktop. Vea mi respuesta sobre cómo ajustar PolicyKit para hacer lo que quiera.
RAOF
De acuerdo, esa sería una solución superior.
lfaraone
5

La respuesta de RAOF se aplica solo a Ubuntu. Kubuntu usa QAptWorker como backend (observado para Natty y Oneiric). Para permitir instalaciones no root, cree que /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pklacontenga:

[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 en unix-grouplugar de unix-user.

Lekensteyn
fuente
Para volver a aplicar las reglas, reinicié. (un reinicio de sesión probablemente también funcionaría)
Lekensteyn
¿Cómo se supone que debes hacer esto? Incluso después de sudo -ique ni siquiera tengo acceso a /etc/polkit-1/localauthority(Ubuntu 17.10): "No intentará procesar el directorio / etc / polkit-1 / localauthority"
JHBonarius
5

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 otorgar a sus usuarios permiso para instalar solo un conjunto restringido de aplicaciones, debe usar sudoe 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.

Alfonso EM
fuente