我正在嘗試創建一個桌面快捷方式,透過執行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 設定的更多詳細資訊。它適用於無需密碼即可執行 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 訊息的地方。