【问题标题】:Editing .desktop file to run executable as root?编辑 .desktop 文件以以 root 身份运行可执行文件?
【发布时间】:2014-06-23 08:22:36
【问题描述】:

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

【问题讨论】:

    标签: c linux ubuntu debian xfce


    【解决方案1】:

    我最终使用(安装 gksu 后)

    Exec = gksu myprogram
    

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

    【讨论】:

      【解决方案2】:

      尝试将此添加到.desktop

      Path=/path/to/myprogram

      【讨论】:

        【解决方案3】:

        这就是权限中的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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-06-25
          • 1970-01-01
          • 2017-07-30
          • 2010-11-04
          • 1970-01-01
          • 1970-01-01
          • 2018-01-30
          相关资源
          最近更新 更多