Редактирование файла .desktop для запуска исполняемого файла с правами root?

Я скомпилировал программу c в исполняемый файл, который теперь хотел бы интегрировать в меню приложений в Debian 7.4 XFCE. Чтобы запустить приложение в обычных условиях, мне нужно ввести

sudo myprogram

Теперь я создал свой файл .desktop и поместил его в /usr/share/applications.

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=myprogram
Comment=configuration loader
Exec=sudo loader
Icon=/usr/share/icons/hicolor/48x48/apps/myprogram.png
Terminal=false
Categories=Development;IDE

Элемент добавляется в меню моих приложений, как и ожидалось, и значок отображается правильно. Проблема, однако, в том, что двойной щелчок по пункту меню для запуска приложения ничего не дает.

Если я перейду к /usr/bin (куда я поместил свой исполняемый файл) и наберу «sudo myprogram», программа запустится, как и ожидалось.

Что я могу сделать, чтобы решить эту проблему и заставить программу запускаться из меню? Возможно, /usr/bin это не то место, или у меня неправильная команда Exec. Я очень ценю помощь.


person user1764386    schedule 06.05.2014    source источник


Ответы (3)


В итоге я использовал (после установки gksu)

Exec = gksu myprogram

это запускает графическую подсказку sudo, которой достаточно для моих нужд.

person user1764386    schedule 06.05.2014

Это то, для чего нужен бит setuid в разрешениях. Он запускает исполняемые файлы с разрешениями владельца файла. Это работает только с реальными исполняемыми файлами, а не с сценариями оболочки!

sudo chmod u+s myprogram
sudo chown root myprogram
./myprogram # now runs as root

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

chgrp "${USER}" myprogram # provided you have individual groups set up
chmod a-x myprogram       # deny all execute
person Sergey L.    schedule 06.05.2014

Попробуйте добавить это в .desktop

Path=/path/to/myprogram

person guest271314    schedule 06.05.2014