如何创建桌面快捷方式以 root 身份启动命令行程序而无需密码

如何创建桌面快捷方式以 root 身份启动命令行程序而无需密码

我正在尝试创建一个桌面快捷方式,通过执行sudo /usr/bin/ddcutil -d 1 setvcp 60 0xF而无需密码即可更改我的显示器输入。我在sudoers.d目录,如果从终端运行命令,则不需要密码,这是预期,但当我单击快捷方式时,它会提示输入密码。如何才能使此快捷方式无需密码运行?

.桌面文件:

[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文件:

myusername ALL = NOPASSWD: /usr/bin/ddcutil

解决方案这里不起作用,因为 gksu 已被弃用,并且使用执行命令相反,正如其中一个答案所建议的那样,仍然提示输入密码。

答案1

解决方案似乎是使用执行命令PolicyKit配置。这个答案涵盖了有关 PolicyKit 设置的更多细节。它适用于无需密码即可执行 GUI 应用程序,但也主要适用于非图形应用程序。

就我的情况而言,.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=false
Exec=pkexec /usr/bin/ddcutil -d 1 setvcp 60 0xF

然后,必须在以下位置创建一个 PolicyKit 条目:/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.log如果需要进行调试,似乎就是记录 PolicyKit 消息的地方。

相关内容