Как создать ярлык на рабочем столе, который запускает программу командной строки от имени root без запроса пароля

Как создать ярлык на рабочем столе, который запускает программу командной строки от имени root без запроса пароля

Я пытаюсь создать ярлык на рабочем столе, который изменяет вход моего монитора, выполняя его 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, если это необходимо для отладки.

Связанный контент