So erstellen Sie eine Desktopverknüpfung, die ein Befehlszeilenprogramm als Root startet, ohne dass ein Kennwort erforderlich ist

So erstellen Sie eine Desktopverknüpfung, die ein Befehlszeilenprogramm als Root startet, ohne dass ein Kennwort erforderlich ist

Ich versuche, eine Desktopverknüpfung zu erstellen, die meine Monitoreingabe ändert, indem sie ausgeführt wird, sudo /usr/bin/ddcutil -d 1 setvcp 60 0xFohne dass ein Kennwort erforderlich ist. Ich habe einen Eintrag in dersudoers.dVerzeichnis und wenn der Befehl vom Terminal aus ausgeführt wird, ist erwartungsgemäß kein Kennwort erforderlich, aber wenn ich auf die Verknüpfung klicke, wird ein Kennwort abgefragt. Was muss getan werden, damit diese Verknüpfung ohne Kennwort ausgeführt wird?

.desktop-Datei:

[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

sudoers-Datei:

myusername ALL = NOPASSWD: /usr/bin/ddcutil

Die LösungHierfunktioniert nicht, da gksu veraltet ist und verwendetpkexecstattdessen wird, wie in einer der Antworten vorgeschlagen, weiterhin nach einem Kennwort gefragt.

Antwort1

Die Lösung scheint zu seinpkexecmit einemRichtlinienKitAufbau.Diese Antwortenthält weitere Details zu den PolicyKit-Einstellungen. Es ist auf die Ausführung von GUI-Anwendungen ohne Kennwort ausgerichtet, gilt aber größtenteils auch für nicht-grafische Anwendungen.

In meinem Fall wurde die .desktop-Datei aktualisiert, um sie zu ersetzensudomitpkexec.Terminal=kann eingestellt werden auf entwederWAHRoderFALSCH:

[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

Dann musste ein PolicyKit-Eintrag vorgenommen werden bei/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.loghier werden offenbar PolicyKit-Meldungen protokolliert, wenn sie für die Fehlerbehebung benötigt werden.

verwandte Informationen