ubuntu 是否编辑.desktop文件以root身份运行可执行文件?

xvw2m8pv  于 2022-11-22  发布在  其他
关注(0)|答案(5)|浏览(555)

我已经将一个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命令。我非常感谢你的帮助。

x6h2sr28

x6h2sr281#

我最终使用(安装gksu后)

Exec = gksu myprogram

这将启动一个图形sudo提示符,它足以满足我的需要。

mnemlml8

mnemlml82#

这就是权限中的setuid位的作用。它使可执行文件以文件所有者的权限运行。这只对实际的可执行文件有效,对shell脚本无效!

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
uyto3xhc

uyto3xhc3#

此方法不需要额外安装软件包。
Terminal=true打开一个新的终端窗口,运行sudo -i询问密码。然后,使用sh运行程序,终端关闭,myprogram在后台运行,因为它的末尾有一个&

[Desktop Entry]
Type=Application
Name=...
Exec=sudo -i sh -c "myprogram &"
Terminal=true

请求:请报告它是否能在您的操作系统下工作。测试条件:

  • 徐奔图
inb24sb2

inb24sb24#

askubuntu的pkexec解决方案:

Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY APP_COMMAND
bvpmtnay

bvpmtnay5#

尝试将此添加到.desktop
Path=/path/to/myprogram

相关问题