web-dev-qa-db-fra.com

gksudo continue de demander mon mot de passe lors de l'utilisation d'un lanceur Unity personnalisé

J'ai écrit un fichier .desktop personnalisé qui contient une ligne Exec

#!/usr/bin/env xdg-open
[Desktop Entry]
(...)
Exec=gksudo /my/path/to/bash_script.sh
(...)

Ce script lance certains appels zenity.

Ensuite, j'ai fait apparaître ce fichier de bureau dans la barre latérale du lanceur de l'unité-2d.

Mon problème est que chaque fois que j'utilise ce raccourci du lanceur, il continue de demander mon mot de passe ... Bien que le comportement attendu soit de le demander une fois, souvenez-vous-en pendant un certain temps. Cela fonctionnait comme ça dans gnome/Lucid donc quelque chose a changé mais quoi?

(J'ai également essayé l'option '-k' mais ne change pas mon problème)

Si essayez cette ligne de commande à partir d'un terminal (en tant qu'utilisateur normal)

gksudo /my/path/to/bash_script.sh

Il fonctionne comme prévu (= même comportement que dans Lucid): ne demande le mot de passe qu'au premier lancement.

Qu'est-ce que j'oublie ici?

2
martin-mystere

Pour autant que je sache, c'est l'environnement du terminal qui se souvient du mot de passe pendant un certain temps.

Par exemple, la commande

gksudo nautilus

dans le terminal ne demandera le mot de passe qu'une seule fois dans un certain délai. Alors que la même commande dans le alt+f2 lanceur le demande à chaque fois.

Quoi qu'il en soit, si vous souhaitez exécuter quelque chose en tant que root, ce n'est pas si étrange qu'il vous demandera votre mot de passe à chaque fois. De cette façon, vous savez que vous exécuterez la commande en tant que root.

1
Timo

C'est tout à fait normal. Dans le terminal, vous avez toujours la même "session", donc il se souvient de l'authentification, mais ce n'est pas la même chose avec un lanceur .desktop.

Je vous recommande d'ajouter simplement un fichier à / etc/sudoers.d (nommez-le mon_script ou quelque chose comme ça), afin que vous puissiez toujours utiliser votre commande sans mot de passe (si votre script ne le fait pas ' t accepter des arguments qui devraient être sûrs) - mais faites-le à vos risques et périls:

Créer un nouveau fichier avec le contenu suivant

your_username ALL=(ALL) NOPASSWD: /my/path/to/bash_script.sh

Lorsque je l'ai testé avec gksu, cela a fonctionné directement après, mais si ce n'est pas le cas, essayez de vous reconnecter et de vous déconnecter à nouveau ou de redémarrer.

1
jPlatte