如何通过 sudo 运行 .desktop 图标

如何通过 sudo 运行 .desktop 图标

我已经为 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 命令从终端运行图标时,它运行良好,但它在启动器中不起作用:(

Exec=echo mypasswd | sudo -S gddccontrol

答案1

永远不能使用存储在文件中的密码.desktop。这非常不安全。

此外,您不能.desktop就这样在文件中运行复杂的命令,但这是另一个话题。

该怎么办

您有以下几种选择:

  1. 添加gddccontrol到文件中sudoers,如下所述这里。如果您确定该应用程序不能被用来做恶意的事情,那么可以这样做。

    然后使用

    Exec=sudo gddccontrol
    

    Exec=-line中

  2. 另一个选择是用以下方式替换该Exec=行:

    Exec=gksu gddccontrol
    

    在这种情况下,一旦您单击图标,系统将提示您通过 GUI 输入密码。
    您可能需要安装gksu

    sudo apt-get install gksu
    

答案2

使用sudo将根据定义提示密码请求。您需要做的是向您的用户授予执行权限。我不确定该程序位于何处,但为了回答这个问题,我们假设它位于/usr/bin/

在终端运行以下命令:

sudo chmod o+x /usr/bin/gddccontrol

该命令正在授予o其他用户(如您)有权X无需许可即可执行该程序。

然后,在 .desktop 文件中,只需使用:

Exec=gddccontrol

答案3

打开终端并运行此命令

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

保存文件并检查您的应用程序是否在那里。

希望这可以帮助。

答案4

我反对在纯文本文件中硬编码密码,因此我能想到两种可能的解决方案:

  1. 进行系统范围的编辑,以使用户使用 sudo 发出的每个命令都以超级用户身份运行,而无需输入密码。您可以在这个答案

  2. 如果您不希望sudo命令总是在执行时提示密码,最佳做法是gksu在命令之前在图形窗口中提示输入密码,而不是将原始密码写入文件中。

相关内容