L' sudo -A
opzione (SUDO_ASKPASS) sembra che sudo perda l'impostazione del timeout (es. Timestamp_timeout).
Voglio usare l'opzione sudo -A ma voglio mantenere il timeout predefinito (ad es. 15 minuti su Ubuntu) in uno script bash. Voglio chiedere la password dell'utente in modo sicuro e in una finestra di dialogo della GUI, ma voglio richiedere una sola volta il mio script (non più di 50 volte).
Inoltre, non voglio eseguire l'intero mio script come utente root perché penso solo che sia una cattiva idea. Inoltre, i file creati dal mio script hanno la proprietà errata in questo caso.
L'opzione sudo -A funzionerebbe per me se conservasse il timeout predefinito.
Dal manuale di sudo:
Opzione: -A
Normalmente, se sudo richiede una password, la leggerà dal terminale dell'utente. Se viene specificata l'opzione ‑A (askpass), viene eseguito un programma di supporto (possibilmente grafico) per leggere la password dell'utente e inviarla all'output standard. Se la variabile di ambiente SUDO_ASKPASS è impostata, specifica il percorso del programma di supporto. Altrimenti, se /etc/sudo.conf contiene una riga che specifica il programma askpass, verrà utilizzato quel valore. Per esempio:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
A proposito, kdesudo ha questo stesso problema: richiede la password ogni volta che viene chiamato, anche se solo un secondo dopo nello stesso script.
Sto usando Kubuntu 12.04 64 bit.
Ecco un esempio di lavoro completo di tutte le parti della soluzione. Consiste in uno script bash, uno script "myaskpass" come suggerito qui e un file ".desktop". Il tutto dovrebbe essere al 100% GUI (nessuna interazione terminale), quindi il file .desktop è essenziale (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=
E uno script di prova stesso. Questo ti chiederà due volte la password quando usi questa soluzione.
#!/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
soffre dello stesso problema che ho descritto sopra. Stavo testando sudo -A
un'alternativa kdesudo
ed è migliore per la mia situazione, ma non risolve il problema del timeout (almeno finora).
gksudo
è un'opzione qui? linux.die.net/man/1/gksudo