detener systemctl usando el indicador gráfico sudo

detener systemctl usando el indicador gráfico sudo

Mi pregunta es ¿cómo podría configurar systemd(?) para que deje de abrir esta molesta ventana emergente cada vez que me olvido de escribir sudo. Simplemente dame un mensaje sudo basado en texto o muestra un error, para que pueda corregir el error rápidamente.

Este es Arch Linux, la última versión (systemd 238.133).

ingrese la descripción de la imagen aquí

Respuesta1

Este no es un mensaje 'sudo', es un mensaje 'polkit'. Una forma de evitarlo – global atodosoftware, no solo systemctl, es escribir una regla polkit que inmediatamente niegue la acción (o la permita inmediatamente).

polkit.addRule(function(action, subject) {
    if (subject.user !== "root") {
        if (/^org\.freedesktop\.systemd1\./.test(action.id)) {
            return polkit.Result.NO;
        }
    }
});

(La subject.userprueba podría omitirse, ya que las acciones invocadas por root omiten las comprobaciones de polkit por completo).

Las reglas de polkit se almacenan en /etc/polkit/rules.d/*.rules, generalmente con nombres similares 80-custom.rules(procesadas en orden ascendente). Para más información, verlunares(8).


(Dicho esto, si su configuración de sudo no tiene contraseña, entonces no existe una diferencia de seguridad práctica entre usar 'sudo' y hacer que polkit permita la acción inmediatamente. Y viceversa, si su configuración de sudorequiereuna contraseña... entonces ¿por qué no simplemente ingresarla en el cuadro de diálogo de polkit? Es la misma contraseña.)

Respuesta2

Hay una opción --no-ask-password. Haz un alias:

alias systemctl='systemctl --no-ask-password'

(probado en Bash, Kubuntu).

Respuesta3

No utilice sudo para systemctl,alguna vez; si ustedsonpermitido hacer el mantenimiento, configurar polkit correctamente.

Razón fundamental: sudohace que el programa que ejecuta sea efectivo para el usuario solicitado (generalmente root:). Incluyendo todos los kits de herramientas vinculados. Cualquier error en el programa, bibliotecas o configuración de sudo te hace vulnerable. En el caso de systemd, el systemctlbinario es sólo uncontrolador(en general). Élno esrequiere privilegios de root (para la mayoría de los casos de uso), ya que no realiza operaciones con privilegios por sí solo, sino que solicita init. Usar la cuenta real root(ya sea directamente o a través de sudo) es una solución atómica (bomba) de todo o nada, mientras que lasoloLo que se requiere esautorizar(no: autenticar)contrasystemd. ya que systemdentiende polkitporautorización, usandoautenticadorootSon demasiados permisos concedidos.

Considere un error en systemctl, que permite invocar comandos arbitrarios directamente (no a través de systemd). Cuando rootlos permisos los otorga sudo, se puede ejecutar cualquier comando con EUID = 0. Al systemctlejecutar como usuario sin privilegios, uno solo puede ejecutar dicho comando con la cuenta a la que obtuvo acceso anteriormente. Esta es una simple consecuencia de algunas reglas básicas de seguridad:

  • use solo el conjunto de permisos necesarios (no el conjunto completo == root),
  • otorgue estos permisos solo al código que lo requiere (autorice systemdsin otorgar permisos a systemctl).

En cuanto a ser el único usuario de una máquina, si trabaja con una cuenta sin privilegios, no esa root, supongo que desea restringir los programas que ejecuta para que no obtengan permisos superfluos. Dárselos systemctlsólo porque la rootcuenta es authorizedpara mandar systemdes un permiso superfluo.

Además, polkitpuedes tener diferentes criterios de acceso para diferentes acciones (iniciar/detener/recargar/lo que sea) y diferentes servicios. Puede poner comandos exactos en sudoers, pero la solución polkit conoce las partes específicas de dichos comandos.

Concluyendo: no lo use sudosi hay disponible algún método con menos privilegios. sudoes una solución de último recurso de todo o nada.

Si desea que la solicitud de contraseña se muestre en texto, no en forma gráfica, simplementePANTALLA desarmada, por ejemplo:desvincule su terminal de la sesión gráfica, que ejecuta el agente de autenticación.

información relacionada