Как запустить значок .desktop из sudo

11

Я создал значок на рабочем столе для gddccontrol, но чтобы запустить его, мне нужно запустить его из sudo. Есть ли способ запустить команду с иконки на рабочем столе, как,

sudo -pPASSWORD gddccontrol

так он не спросит у меня пароль в терминале?

Я просто хочу нажать и запустить его с разрешениями sudo.

[Desktop Entry]
Type=Application
Name=GDDCControl
Terminal=false
Comment=gddccontrol ddccontrol
Exec=sudo -pPASSWORD gddccontrol
Icon=~/Pictures/10429.png

Когда я запускаю иконку из терминала с помощью следующей команды Exec, она работает хорошо, но не работает в Launcher :(

Exec=echo mypasswd | sudo -S gddccontrol
Евгений
источник

Ответы:

17

НИКОГДА не используйте свой пароль, хранящийся в .desktopфайле. Это ужасно небезопасно.

Кроме того, вы не можете запускать сложные команды в .desktopфайле просто так, но это другая тема.

Что делать

У вас есть несколько вариантов:

  1. Добавьте gddccontrolв sudoersфайл, как описано, например, здесь . Это можно сделать, если вы уверены, что приложение не может быть использовано для совершения злонамеренных действий.

    Тогда используйте

    Exec=sudo gddccontrol
    

    в Exec=линии

  2. Другой вариант - заменить Exec=строку на:

    Exec=gksu gddccontrol
    

    В этом случае после нажатия на значок вам будет предложено ввести пароль через графический интерфейс.
    Возможно, вам нужно установить gksu:

    sudo apt-get install gksu
    
Якоб Влейм
источник
нет других способов без редактирования sudoers и gksu? потому что gksu спрашивает пароль любым способом, но когда я лежу на диване в вечернее время, я хотел бы просто запустить gddccontrol с помощью мыши, уменьшив яркость / контрастность и продолжая смотреть фильм, не доходя до клавиатуры. я бы лучше дал своему пользователю доступ к $ gddccontrol dev: / dev / i2c-4: разрешение запрещено, я просто хочу простой способ без головной боли изменить яркость и контрастность в вечернее время :(
Евгений
1
@ Евгений, я могу представить. Я бы пошел в файл sudoers в этом случае.
Джейкоб Влейм
1
Предпочитаю pkexecболее gksu; Я полагаю, что на эту тему был метапост.
кот
@cat pkexecне работает на графических приложениях просто так. Это сложнее настроить, но gksuработает отлично.
Джейкоб Влейм
Но мне не нужно дополнительно устанавливать pkexec16.04.
Валентина
4

Использование sudoпо определению будет запрашивать пароль. Что вам нужно сделать, это предоставить разрешения на выполнение для вашего пользователя. Я не уверен, где находится эта программа, но ради этого ответа, давайте предположим, что это так /usr/bin/.

В терминале запустите это:

sudo chmod o+x /usr/bin/gddccontrol

Эта команда является предоставление о þér пользователей (как вы) право х х ecute программы без необходимости разрешения.

Затем в файле .desktop просто используйте:

Exec=gddccontrol

источник
0

Я против жесткого кодирования пароля в текстовом файле, поэтому я могу придумать два возможных решения:

  1. сделайте общесистемное редактирование, чтобы каждая команда, выданная вашим пользователем с помощью sudo, запускалась как суперпользователь без запроса пароля. Вы можете узнать, как в этом ответе

  2. Если вы не хотите, чтобы sudoкоманды всегда выполнялись с запросом пароля, gksuперед запуском вашей команды рекомендуется использовать для запроса пароля в графическом окне, а не записывать необработанный пароль в файл.

С.Мохсен ш
источник