如何从sudo运行.desktop图标


11

我已经为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命令从终端运行图标时,它工作正常,但在Launcher中不起作用:(

Exec=echo mypasswd | sudo -S gddccontrol

Answers:


17

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

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

该怎么办

您有几种选择:

  1. 添加gddccontrolsudoers文件,如此处此处所述。如果您确定该应用程序不能用于执行恶意操作,则可以执行此操作。

    然后使用

    Exec=sudo gddccontrol
    

    Exec=直插式

  2. 另一种选择是将Exec=行替换为:

    Exec=gksu gddccontrol
    

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

    sudo apt-get install gksu
    

没有其他方法,不用编辑sudoers和gksu吗?因为gksu可以通过任何方式询问密码,但是当我晚上晚上躺在沙发上时,我只想用鼠标运行gddccontrol即可降低亮度/对比度并继续观看电影而不会碰到我的键盘。我最好让我的用户访问$ gddccontrol dev:/ dev / i2c-4:权限被拒绝,我只是想要一种简便的方法,在晚上的时间改变亮度和对比度:(
Eugene

1
我能想象@Eugene。在这种情况下,我将使用sudoers文件。
雅各布·弗利姆

1
身高pkexec超过gksu; 我相信有一个关于这个的文章。

@cat pkexec并不是在gui应用程序上运行的。设置起来比较复杂,但是gksu效果很好。
雅各布·弗利姆

但是我不需要额外安装pkexec16.04。
Valentas

4

根据sudo定义,使用will会提示输入密码。您需要做的是向您的用户授予执行权限。我不确定该程序位于何处,但是为了得到这个答案,让我们假设它是/usr/bin/

在终端中运行以下命令:

sudo chmod o+x /usr/bin/gddccontrol

这个命令授予Ø疗法的用户(如你)正确到E X ecute无需许可的程序。

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

Exec=gddccontrol

0

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

  1. 进行系统范围内的编辑,以使您的用户使用sudo发出的每个命令都以超级用户身份运行,而不会提示输入密码。您可以在此答案中找到答案

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.