Я пытаюсь создать ярлык на рабочем столе, который изменяет вход моего монитора, выполняя его sudo /usr/bin/ddcutil -d 1 setvcp 60 0xF
без запроса пароля. Я сделал запись вsudoers.dкаталог и если команда запускается из терминала, пароль не требуется, как и ожидалось, но когда я нажимаю на ярлык, он запрашивает пароль. Как что нужно сделать, чтобы этот ярлык запускался без пароля?
Файл .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
Файл sudoers:
myusername ALL = NOPASSWD: /usr/bin/ddcutil
Решениездесьне работает, так как gksu устарел и используетpkexecвместо этого, как предложено в одном из ответов, по-прежнему запрашивается пароль.
решение1
Решение, похоже, заключается в использованииpkexecсПолитикаKitконфигурация.Этот ответсодержит более подробную информацию о настройках PolicyKit. Он ориентирован на выполнение приложений с графическим интерфейсом без запроса пароля, но в основном применим и к неграфическим приложениям.
В моем случае файл .desktop был обновлен для заменысудосpkexec.Терминал=может быть установлен на любойистинныйилиЛОЖЬ:
[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, если это необходимо для отладки.