La sudo -A
opción (SUDO_ASKPASS) aparentemente hace que sudo pierda la configuración de tiempo de espera (por ejemplo, timestamp_timeout).
Quiero usar la opción sudo -A pero quiero conservar el tiempo de espera predeterminado (por ejemplo, 15 minutos en Ubuntu) en un script bash. Quiero solicitar la contraseña del usuario de forma segura y en un cuadro de diálogo GUI, pero solo quiero solicitar mi script una vez (no más de 50 veces).
Además, no quiero ejecutar mi script completo como usuario root porque creo que es una mala idea. Además, los archivos creados por mi script tienen la propiedad incorrecta en este caso.
La opción sudo -A funcionaría para mí si conservara el tiempo de espera predeterminado.
Del manual de sudo:
Opción: -A
Normalmente, si sudo requiere una contraseña, la leerá desde el terminal del usuario. Si se especifica la opción -A (askpass), se ejecuta un programa auxiliar (posiblemente gráfico) para leer la contraseña del usuario y enviar la contraseña a la salida estándar. Si se establece la variable de entorno SUDO_ASKPASS, especifica la ruta al programa auxiliar. De lo contrario, si /etc/sudo.conf contiene una línea que especifica el programa askpass, se usará ese valor. Por ejemplo:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
Por cierto, kdesudo tiene este mismo problema: requiere la contraseña cada vez que se llama, incluso un segundo después en el mismo script.
Estoy usando Kubuntu 12.04 64 bit.
Aquí hay un ejemplo de trabajo completo de todas las partes de la solución. Consiste en un script bash, un script "myaskpass" como se sugiere aquí y un archivo ".desktop". Todo debería ser 100% GUI (sin interacción del terminal), por lo que el archivo .desktop es esencial (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=
Y un script de prueba en sí mismo. Este le pedirá su contraseña dos veces cuando use esta solución.
#!/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
gksudo
No es una opción aquí? linux.die.net/man/1/gksudokdesudo
sufre el mismo problema que describo anteriormente. Estaba probandosudo -A
como una alternativakdesudo
y es mejor para mi situación, pero no resuelve el problema del tiempo de espera (al menos hasta ahora).Respuestas:
Agrego esto a mi script bash:
Lo encontré aquí:
/server/266039/temporarlly-increasing-sudos-timeout-for-the-duration-of-an-install-script
https://gist.github.com/cowboy/3118588
Uso otro script para iniciar mi script principal y uso un archivo .desktop para iniciar ese script de ayuda. No es muy sencillo, pero se puede hacer que funcione 100% GUI. Todavía estoy buscando la solución perfecta, pero esto está haciendo el truco por ahora.
fuente
¿Qué tal gksudo ?
Muestra un cuadro de diálogo gráfico para ingresar de forma segura la contraseña de administrador.
fuente