Comment exécuter l'icône .desktop depuis sudo

11

J'ai créé une icône de bureau pour le gddccontrol, mais pour l'exécuter, je dois l'exécuter à partir de sudo. Existe-t-il un moyen d'exécuter une commande à partir de l'icône du bureau comme,

sudo -pPASSWORD gddccontrol

donc il ne me demandera pas le mot de passe dans le terminal?

Je veux juste cliquer et l'exécuter avec les autorisations sudo.

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

Lorsque j'exécute l'icône à partir du terminal avec la commande Exec suivante, cela fonctionne bien, mais cela ne fonctionne pas dans Launcher :(

Exec=echo mypasswd | sudo -S gddccontrol
Eugène
la source

Réponses:

17

N'utilisez JAMAIS votre mot de passe, stocké dans un .desktopfichier. C'est terriblement dangereux.

De plus, vous ne pouvez pas exécuter des commandes compliquées dans un .desktopfichier comme ça, mais c'est un autre sujet.

Que faire

Vous avez quelques options:

  1. Ajoutez gddccontrolau sudoersfichier, comme expliqué par exemple ici . Cela peut être fait si vous êtes sûr que l'application ne peut pas être utilisée pour faire des choses malveillantes.

    Ensuite, utilisez

    Exec=sudo gddccontrol
    

    dans la Exec=ligne

  2. Une autre option consiste à remplacer la Exec=ligne par:

    Exec=gksu gddccontrol
    

    Dans ce cas, une fois que vous aurez cliqué sur l'icône, vous serez invité à saisir votre mot de passe via gui.
    Vous devrez peut-être installer gksu:

    sudo apt-get install gksu
    
Jacob Vlijm
la source
pas d'autres moyens sans éditer sudoers et gksu? parce que gksu demande un mot de passe mais quand je suis allongé sur le canapé le soir, je voudrais juste exécuter gddccontrol avec la souris diminuer la luminosité / contraste et continuer à regarder le film sans venir sur mon clavier. je ferais mieux de donner à mon utilisateur l'accès à $ gddccontrol dev: / dev / i2c-4: Autorisation refusée je veux juste un moyen simple sans maux de tête pour changer la luminosité et le contraste le soir :(
Eugene
1
@Eugene je peux imaginer. J'irais pour le fichier sudoers dans ce cas.
Jacob Vlijm
1
Préférez pkexecsur gksu; Je pense qu'il y avait un meta post à ce sujet.
cat
@cat pkexecne fonctionne pas sur les applications gui comme ça. Il est plus compliqué à mettre en place, tout gksufonctionne parfaitement.
Jacob Vlijm
Mais je n'ai pas besoin d'installer en plus pkexecle 16.04.
Valentas
4

L' utilisation , sudopar définition invite une demande de mot de passe. Ce que vous devez faire est d'accorder des autorisations d'exécution à votre utilisateur. Je ne sais pas où se trouve ce programme, mais pour le bien de cette réponse, supposons qu'il l'est /usr/bin/.

Dans un terminal, exécutez ceci:

sudo chmod o+x /usr/bin/gddccontrol

Cette commande accorde o utres utilisateurs (comme vous) le droit à l' e x ecute le programme sans avoir besoin d'autorisation.

Ensuite, dans le fichier .desktop, utilisez simplement:

Exec=gddccontrol

la source
0

Je suis contre le mot de passe codé en dur dans un fichier texte, je peux donc penser à deux solutions possibles:

  1. effectuez une modification à l'échelle du système pour que chaque commande émise par votre utilisateur avec sudo soit exécutée en tant que superutilisateur sans demander de mot de passe. Vous pouvez découvrir comment dans cette réponse

  2. Si vous ne souhaitez pas que les sudocommandes soient toujours exécutées avec une invite de mot de passe, utilisez les meilleures pratiques gksuavant votre commande pour demander le mot de passe dans une fenêtre graphique plutôt que d'écrire votre mot de passe brut dans un fichier.

S.Mohsen sh
la source