我已经为 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
就这样在文件中运行复杂的命令,但这是另一个话题。
该怎么办
您有以下几种选择:
添加
gddccontrol
到文件中sudoers
,如下所述这里。如果您确定该应用程序不能被用来做恶意的事情,那么可以这样做。然后使用
Exec=sudo gddccontrol
在
Exec=
-line中另一个选择是用以下方式替换该
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
我反对在纯文本文件中硬编码密码,因此我能想到两种可能的解决方案:
进行系统范围的编辑,以使用户使用 sudo 发出的每个命令都以超级用户身份运行,而无需输入密码。您可以在这个答案
如果您不希望
sudo
命令总是在执行时提示密码,最佳做法是gksu
在命令之前在图形窗口中提示输入密码,而不是将原始密码写入文件中。