web-dev-qa-db-fra.com

Comment exécuter l'icône .desktop à partir de sudo

J'ai créé une icône de bureau pour gddccontrol, mais pour l'exécuter, je dois l'exécuter à partir de Sudo. Est-il possible d’exécuter une commande à partir de l’icône du bureau telle que,

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 depuis le terminal avec la commande Exec suivante, cela fonctionne bien, mais cela ne fonctionne pas dans Launcher :(

Exec=echo mypasswd | Sudo -S gddccontrol
9
Eugene

JAMAIS n'utilisez JAMAIS votre mot de passe, stocké dans un fichier .desktop. C'est terriblement dangereux.

De plus, vous ne pouvez pas exécuter des commandes compliquées dans un fichier .desktop, mais c'est un autre sujet.

Que faire

Vous avez quelques options:

  1. Ajoutez gddccontrol au fichier sudoers, 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.

    Puis utiliser

    Exec=Sudo gddccontrol
    

    dans la Exec=- line

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

    Exec=gksu gddccontrol
    

    Dans ce cas, une fois que vous avez cliqué sur l’icône, vous serez invité à saisir votre mot de passe via gui.
    Vous devrez éventuellement installer gksu:

    Sudo apt-get install gksu
    
15
Jacob Vlijm

Utiliser Sudo provoquera par définition une demande de mot de passe. Ce que vous devez faire est d’accorder des autorisations d’exécution à votre utilisateur. Je ne suis pas sûr de l'endroit où se trouve ce programme, mais dans l'intérêt de cette réponse, supposons qu'il s'agisse de /usr/bin/.

Dans un terminal, exécutez ceci:

Sudo chmod o+x /usr/bin/gddccontrol

Cette commande accorde à o autres utilisateurs (comme vous) le droit de e x exécuter le programme sans nécessiter d’autorisation.

Ensuite, dans le fichier .desktop, utilisez simplement:

Exec=gddccontrol
4
user308164

Je suis contre le mot de passe codé en dur dans un fichier texte brut afin que je puisse penser à deux solutions possibles:

  1. indiquez à l’ensemble du système que chaque commande émise par votre utilisateur avec Sudo est exécutée en tant que superutilisateur sans demander de mot de passe. Vous pouvez trouver comment dans cette réponse

  2. Si vous ne souhaitez pas que les commandes Sudo soient toujours exécutées avec invite de mot de passe, nous vous recommandons d'utiliser gksu avant votre commande Inviter à entrer le mot de passe dans une fenêtre graphique plutôt que d'écrire votre mot de passe brut dans un fichier.

0
S.Mohsen sh