10

I have created a desktop icon for the gddccontrol, but to run it I need to execute it from sudo. Is there a way to run a command from the desktop icon like,

sudo -pPASSWORD gddccontrol

so it won't ask me for the password in the terminal?

I just want click and run it with sudo permissions.

[Desktop Entry]
Type=Application
Name=GDDCControl
Terminal=false
Comment=gddccontrol ddccontrol
Exec=sudo -pPASSWORD gddccontrol
Icon=~/Pictures/10429.png

When I run the icon from the terminal with the following Exec command it works good, but it doesn't work in Launcher :(

Exec=echo mypasswd | sudo -S gddccontrol
17

NEVER EVER use your password, stored in a .desktop file. It is terribly unsafe.

Furthermore, you cannot run complicated commands in a .desktop file just like that, but that is another subject.

What to do

You have a few options:

  1. Add gddccontrol to the sudoers file, as explained e.g. here. This can be done if you are sure the application cannot be used to do maliceous things.

    Then use

    Exec=sudo gddccontrol
    

    in the Exec=-line

  2. Another option is to replace the Exec= line by:

    Exec=gksu gddccontrol
    

    In this case, once you click the icon, you will be prompted to enter your password via gui.
    You possibly need to install gksu:

    sudo apt-get install gksu
    
  • no other ways without editing sudoers and gksu ? because gksu any ways asking password but when im laying on the sofa in the evening time i would like just to run gddccontrol with the mouse decrease brightness/contrast and keep watching movie without coming to my keyboard. i would better give my user access to the $ gddccontrol dev:/dev/i2c-4: Permission denied i just want an easy way without headache to change brightness and contrast in the evening time :( – Eugene Aug 20 '16 at 8:32
  • 1
    @Eugene I can imagine. I would go for the sudoers file in that case. – Jacob Vlijm Aug 20 '16 at 8:37
  • 1
    Prefer pkexec over gksu; I believe there was a meta post on this. – cat Aug 20 '16 at 14:31
  • @cat pkexec isn't running on gui applications just like that. It is more complicated to set up, while gksu works perfectly. – Jacob Vlijm Aug 20 '16 at 18:36
  • But I don't need to aditionally install pkexec on 16.04. – Valentas Feb 5 '17 at 18:04
4

Using sudo will by definition prompt a password request. What you need to do is to grant execute permissions to your user. I'm not sure where that program is located, but for the sake of this answer, let's assume it is /usr/bin/.

In a terminal run this:

sudo chmod o+x /usr/bin/gddccontrol

That command is granting other users (like you) the right to execute the program without need for permission.

Then, in the .desktop file, just use:

Exec=gddccontrol
0

I am against hard-coding password in a plain text file so I can think of two possible solutions:

  1. make a system-wide edit that every command issued by your user with sudo is ran as superuser without prompting for password. You can find out how in this answer

  2. If you dont want sudo commands to always be executed with password prompt, best practice use gksu before your command to prompt for password in a graphic window rather than writing your raw password in a file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.