Как запустить значок.desktop из sudo
Я создал значок на рабочем столе для 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
3 ответа
НИКОГДА не используйте свой пароль, хранящийся в .desktop
файл. Это ужасно небезопасно.
Кроме того, вы не можете запускать сложные команды в .desktop
файл просто так, но это уже другая тема.
Что делать
У вас есть несколько вариантов:
добавлять
gddccontrol
кsudoers
файл, как объяснено, например, здесь. Это можно сделать, если вы уверены, что приложение не может быть использовано для совершения злонамеренных действий.Тогда используйте
Exec=sudo gddccontrol
в
Exec=
-линияДругим вариантом является замена
Exec=
строка:Exec=gksu gddccontrol
В этом случае после нажатия на значок вам будет предложено ввести пароль через графический интерфейс.
Возможно, вам нужно установитьgksu
:sudo apt-get install gksu
С помощью sudo
по определению подскажет запрос пароля. Что вам нужно сделать, это предоставить разрешения на выполнение для вашего пользователя. Я не уверен, где находится эта программа, но ради этого ответа, давайте предположим, что это /usr/bin/
,
В терминале запустите это:
sudo chmod o+x /usr/bin/gddccontrol
Эта команда предоставляет другим пользователям (таким как вы) право на запуск программы без разрешения.
Затем в файле.desktop просто используйте:
Exec=gddccontrol
Откройте свой терминал и запустите эту команду
cd /usr/share/applications
После этого запустите эту команду
sudo gedit application.desktop
и скопируйте и вставьте следующее для x64-битных машин
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/opt/lampp/htdocs/favicon.ico
Exec=sudo /opt/lampp/manager-linux-x64.run
Comment[en_US]=start xampp manager
Name[en_US]=xampp
Name=xampp
Comment= start xampp application
Заменить
Exec=sudo /opt/lampp/manager-linux-x64.run
с путем к приложению, которое вы хотите запустить, в моем случае это менеджер xampp
Заменить
Icon[en_US]=/opt/lampp/htdocs/favicon.ico
с путем к значку вашего приложения.
Сохраните файл и запустите эту команду ниже
sudo visudo
Добавьте следующую строку в конец вашего файла
<your-username> ALL = NOPASSWD: <path of application>
Введите свое имя пользователя и вставьте путь к своему приложению без угловых скобок, подобных этой
nelson ALL = NOPASSWD: /opt/lampp/manager-linux-x64.run
Сохраните файл и проверьте, что он там есть.
Надеюсь это поможет.
Я против жесткого кодирования пароля в текстовом файле, поэтому я могу придумать два возможных решения:
сделайте общесистемное редактирование, чтобы каждая команда, выданная вашим пользователем с помощью sudo, запускалась как суперпользователь без запроса пароля. Вы можете узнать, как в этом ответе
Если ты не хочешь
sudo
команды должны всегда выполняться с подсказкой пароля, рекомендуется использоватьgksu
перед вашей командой, чтобы запросить пароль в графическом окне, а не записывать ваш необработанный пароль в файл.