¿Cómo evito que PolicyKit solicite una contraseña?

24

Durante años, he tenido lo siguiente en mi sudoersarchivo:

scott   ALL=NOPASSWD: ALL

Para aquellos que no lo saben, esto evita que sudoamigos ( gksudo, etc.) soliciten una contraseña. Sin embargo, a lo largo de los años, más y más cosas que una vez utilizadas sudose han cambiado a PolicyKit.

Estoy buscando una configuración equivalente para PolicyKit, de modo que nunca me pida mi contraseña.

Para aquellos a quienes no les gusta mi solicitud, permítanme decir esto: entiendo los motivos de la configuración predeterminada y son correctos. También entiendo los riesgos inherentes a la configuración que quiero hacer. Sin embargo, es la forma en que quiero configurar mi sistema. Aquellos que no entienden completamente lo anterior no deberían intentar lo que estoy intentando.

Scott Cesantía
fuente

Respuestas:

15

Puede engañar a PolicyKit y suprimir TODAS las solicitudes de contraseña sustituyendo la acción con un comodín.

DESCARGO DE RESPONSABILIDAD: Lo siguiente suprimirá TODAS las solicitudes de contraseña a nivel mundial para todos los que pertenecen al grupo de administradores, con la excepción de la pantalla de inicio de sesión. ¡Es EXTREMADAMENTE peligroso y NUNCA debe implementarse porque es probable que USTED TERMINE ROMPIENDO SU SISTEMA!

¡No digas que no te avisaron!

NOTA: ¡Si está ejecutando 12.04 o posterior, sustituya "admin" por "sudo"!

Reemplace "nombre de usuario" con su nombre de usuario real:

usermod -aG admin username

Cambiar a root:

sudo -i

Crea una nueva política:

gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla

Agregue lo siguiente:

[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes

Guardar y Salir. Luego ve a probar algo que generalmente requiere una contraseña. :)

NOTA: No importa lo que use como nombre de archivo .pkla. Puedes nombrarlo como quieras.

Y por último, esta es la ÚNICA política que necesitará cuando se trata de suprimir las solicitudes de contraseña porque, de nuevo, lo hace a nivel mundial.

usuario55572
fuente
Esto también funciona en Fedora cuando sustituye el admingrupo con wheel. ¡Gracias!
Kenny Rasschaert
3
¿Podría alguien describir cómo exactamente esto "romperá" el sistema?
Mehrdad
3
Sí por favor. ¿Cómo va a romper esto el sistema? ¡No esta! Algo estúpido que hagas después de esto romperá el sistema, ¡pero no esto! Esto le permitirá hacer cualquier cosa en el host sin contraseña. Si haces algo estúpido, romperás el sistema. Si tiene que poner la contraseña y hace algo estúpido, romperá el sistema. Esto, per se, solo hace que sea un poco más fácil hacer algo estúpido.
dangonfast
1
@ jeckyll2hide Lea la NOTA: explica por qué eligió el OP [Install package file]. O no está de acuerdo con esto y la NOTA requiere una edición similar, o su edición no es válida y debe revertirse.
bcbc
1
@prusswan puede usar Identity=unix-user:scottpara permitir que el usuario "scott" realice la acción. Además, si desea permitir ciertas acciones, puede grep /var/log/auth.log y polkitd mostrará el nombre completo del polkit que estaba intentando cuando se le solicitó su contraseña. cat /var/log/auth.log | grep polkitdte dará una lista bastante rápida de ellos
Scott
8

Puede crear un .pkla, ya sea todo en uno o un par basado en grupos de acción, realmente no importa.

Para ver la referencia en / usr / share / polkit-1 / actions, abra los interesados ​​en un editor de texto para obtener identificadores de acción.

En cuanto a un .pkla o 2, encuentro que el mejor lugar para colocarlos es aquí, estará protegido de cualquier actualización

/var/lib/polkit-1/localauthority/50-local.d

Entonces, por ejemplo, aquí está mi principal, llamado package-manager.pkla, aunque se extiende un poco más allá de la política de administración de paquetes

[Install package file]
Identity=unix-group:admin
Action=org.debian.apt.install-file;org.debian.apt.update-cache;org.debian.apt.install-or-remove-packages;org.debian.apt.upgrade-packages
ResultActive=yes

[Install package synaptic]
Identity=unix-group:admin
Action=com.ubuntu.pkexec.synaptic
ResultActive=yes

[Change add repo]
Identity=unix-group:admin
Action=com.ubuntu.softwareproperties.applychanges;org.debian.apt.change-repository
ResultActive=yes

[usbcreator format]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.format
ResultActive=yes

[Install bootloader]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.bootloader
ResultActive=yes

[Add users]
Identity=unix-group:admin
Action=org.freedesktop.accounts.user-administration
ResultActive=yes

Tenga en cuenta que a partir de 12.04, el grupo utilizado para el usuario "admin" debe cambiarse a sudo, es decir.

Identity=unix-group:sudo

También tenga en cuenta que las acciones se pueden unir por sección, sin espacios, use a; entre id's

Doug
fuente
Parece que está haciendo ajustes para cada programa individualmente. Eso parece bastante tedioso, especialmente si luego instalo algún otro programa que quiera usar PolicyKit. Estoy buscando una manera de hacer un cambio de configuración global que afecte todo.
Scott Severance
1
Nunca han visto ninguna manera de afectar 'a nivel mundial', no creemos que es la forma en que funciona PolicyKit, hay un conjunto de directivas por ID de acción
Doug
0

Una opción, si sabe lo que está haciendo, es deshabilitar completamente el kit de políticas.

sudo apt-get remove libpolkit-agent-1-0

viksit
fuente
1
Elimina demasiados paquetes esenciales, como network-manager, gnome-control-centery muchos más. ¿Hay alguna manera más fina?
Suncatcher