Cómo crear un acceso directo en el escritorio que inicie un programa de línea de comandos como root sin requerir contraseña

Cómo crear un acceso directo en el escritorio que inicie un programa de línea de comandos como root sin requerir contraseña

Estoy intentando crear un acceso directo en el escritorio que cambie la entrada de mi monitor ejecutándolo sudo /usr/bin/ddcutil -d 1 setvcp 60 0xFsin requerir una contraseña. He hecho una entrada en elsudoers.ddirectorio y si el comando se ejecuta desde la terminal no se requiere contraseña como se esperaba, pero cuando hago clic en el acceso directo me solicita una contraseña. ¿Qué se debe hacer para que este acceso directo se ejecute sin contraseña?

Archivo .desktop:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Windows 10
Comment=Switch Display to Windows Virtual Machine
Icon=/usr/share/icons/windows-icon.png
Terminal=true
Exec=sudo /usr/bin/ddcutil -d 1 setvcp 60 0xF

archivo sudoers:

myusername ALL = NOPASSWD: /usr/bin/ddcutil

La soluciónaquíno funciona porque gksu está en desuso y usapkexecen cambio, como se sugiere en una de las respuestas, todavía solicita una contraseña.

Respuesta1

La solución parece ser usarpkexeccon unKit de políticasconfiguración.esta respuestacubre más detalles sobre la configuración de PolicyKit. Está orientado a ejecutar aplicaciones GUI sin necesidad de contraseña, pero también se aplica principalmente a aplicaciones no gráficas.

Para mi caso, el archivo .desktop se actualizó para reemplazarsudoconpkexec.Terminal=se puede configurar en cualquiera de los dosverdaderooFALSO:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Windows 10
Comment=Switch Display to Windows Virtual Machine
Icon=/usr/share/icons/windows-icon.png
Terminal=false
Exec=pkexec /usr/bin/ddcutil -d 1 setvcp 60 0xF

Luego, se debía realizar una entrada en PolicyKit en/usr/share/polkit-1/actions/com.ubuntu.pkexec.ddcutil.policy:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
  "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
  "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <action id="com.ubuntu.pkexec.ddcutil">
    <defaults>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/ddcutil</annotate>
  </action>

</policyconfig>

/var/log/auth.logparece ser donde se registran los mensajes de PolicyKit si es necesario para la depuración.

información relacionada