L' sudo -A
option (SUDO_ASKPASS) fait apparemment perdre sudo le paramètre timeout (par exemple, timestamp_timeout).
Je veux utiliser l'option sudo -A mais je veux conserver le délai d'expiration par défaut (par exemple, 15 minutes sur Ubuntu) dans un script bash. Je veux demander le mot de passe de l'utilisateur en toute sécurité et dans une boîte de dialogue GUI, mais je ne veux demander qu'une seule fois mon script (pas plus de 50 fois).
De plus, je ne veux pas exécuter tout mon script en tant qu'utilisateur root car je pense simplement que c'est une mauvaise idée. De plus, les fichiers créés par mon script ont la mauvaise propriété dans ce cas.
L'option sudo -A fonctionnerait pour moi si elle conservait le délai par défaut.
Depuis le manuel sudo:
Option: ‑A
Normalement, si sudo requiert un mot de passe, il le lira depuis le terminal de l'utilisateur. Si l'option ‑A (askpass) est spécifiée, un programme d'aide (éventuellement graphique) est exécuté pour lire le mot de passe de l'utilisateur et sortir le mot de passe sur la sortie standard. Si la variable d'environnement SUDO_ASKPASS est définie, elle spécifie le chemin d'accès au programme d'assistance. Sinon, si /etc/sudo.conf contient une ligne spécifiant le programme askpass, cette valeur sera utilisée. Par exemple:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
BTW, kdesudo a ce même problème - il nécessite le mot de passe à chaque fois qu'il est appelé, même si juste une seconde plus tard dans le même script.
J'utilise Kubuntu 12.04 64 bits.
Voici un exemple de travail complet de toutes les parties de la solution. Il se compose d'un script bash, d'un script "myaskpass" comme suggéré ici et d'un fichier ".desktop". Le tout devrait être 100% GUI (pas d'interaction du terminal du tout), donc le fichier .desktop est essentiel (afaik).
$ cat myaskpass.sh
#!/bin/bash
kdialog --password "Please enter your password: "
exit 0
$ cat askpasstest1.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Comment=SUDO_ASKPASS tester1
Exec=bash /home/user/test/askpasstest1.sh
GenericName=SUDO_ASKPASS tester1
Name=SUDO_ASKPASS tester1
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
Categories=Application;Utility;
X-KDE-SubstituteUID=false
X-KDE-Username=
Et un script de test lui-même. Celui-ci vous demandera votre mot de passe deux fois lors de l'utilisation de cette solution.
#!/bin/bash
sudo -k
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass1
touch filemadeas_regularuser1
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass2
touch filemadeas_regularuser2
ls -la filemadeas* > /home/user/test/fma.log
kdialog --title "Files Created" --textbox /home/user/test/fma.log 640 480
sudo rm filemadeas_*
rm fma.log
exit 0
kdesudo
souffre du même problème que je décris ci-dessus. Je testais sudo -A
comme alternative à kdesudo
et c'est mieux pour ma situation, mais cela ne résout pas le problème de délai d'attente (du moins jusqu'à présent).
gksudo
pas une option ici? linux.die.net/man/1/gksudo