Recientemente he desactivado sudo
la capacidad de almacenamiento en caché de autenticación para que ahora me solicite una contraseña cada vez.
Y aunque esto es bueno para la seguridad, ha causado un pequeño problema para el que no he podido encontrar una solución, no puedo ejecutar comandos que van en la línea de:
sudo <command> &
En el pasado, habría ejecutado un sudo
comando antes, habría almacenado en caché mi contraseña y me habría permitido ejecutar sudo
comandos sin solicitud durante los próximos minutos, y por lo tanto me permitiría ejecutar el comando.
Pero cuando lo ejecuto ahora, ya que no hay almacenamiento en caché de antemano y cuando comienza un nuevo hilo inmediatamente y sudo
ni siquiera me pide una contraseña, no puedo ejecutarlo de esta manera.
Entonces, a menos que lo ejecute sudo -i
antes, no puedo ejecutar un comando en este formato que se está volviendo bastante molesto.
Entonces, me preguntaba si hay alguna forma de evitar esto y aún ejecutar programas y comandos de esta manera.
Estoy ejecutando Ubuntu GNOME 15.10 con GNOME 3.18, y específicamente el programa que quiero ejecutar de esta manera es etherape
si eso hace alguna diferencia, pero realmente me gustaría que la solución funcione para todos los programas y comandos.
&
no se puede buscar realmente, estoy cambiando eso a… sudo command in the background
.Respuestas:
En lugar de ejecutar
sudo
en segundo plano, digasudo
que ejecute el comando en segundo plano. Deman sudo
:Por ejemplo:
Otra forma sería usar un shell para ejecutar el comando:
Otra opción sería especificar un programa gráfico para obtener la contraseña y enviarla
sudo
al fondo de todos modos:Los programas Askpass generalmente se usan para SSH. Uno de ellos es proporcionado por el
ssh-askpass-gnome
paquete, que se instala por defecto, al menos en Ubuntu 15.10.fuente
Si está dispuesto a configurar
timestamp_timeout
al menos algo como0.02
(1.2 segundos, diría que es tan seguro como0
) en/etc/sudoers
(necesario en su caso, pero con la configuración predeterminada o contimestamp_timeout
cualquier cosa, pero0
uno puede hacer lo siguiente) , puede establecer un alias como este~/.bashrc
, que no requerirá que recuerde hacer algo antes de ejecutar el comando y que le permitirá mantener el control del proceso .:El truco aquí es el punto y coma, que hará que Bash analice
sudo -v
primero y por separado, autenticando al usuario, y limitará la parte de fondo potencial al[ $? ] && sudo
comando, que verificará sisudo -v
fue exitoso y se ejecutarásudo
nuevamente (potencialmente en segundo plano) en caso de que lo fuera.fuente
sudo -v
Extiende el almacenamiento en caché de credenciales incluso si el almacenamiento en caché está desactivado? Y, IIRC <para expandir los alias, el espacio debe estar al final del comando, no al principio.timestamp_timeout
puesto a0
. Y sí, me equivoqué por completo con la expansión del alias, en realidad el alias no debería expandirse. Gracias.alias sudo='sudo -v && sudo'
sería tan bueno?;
Bash analizasudo -v
primero y por separado; el uso de&&
Bash analizaría tanto como un solo comando y el fondo de forma inmediata.No puedes El
&
envía el comando al fondo de inmediato. Es decir, se crea una subshell en segundo plano y el comando se ejecuta allí. Cuando ese comando emite un mensaje, como es el casosudo
, el mensaje se muestra en segundo plano y nunca lo ve.La única forma de evitarlo es devolver el comando al primer plano, proporcionar la contraseña y enviarla de nuevo al fondo. Por ejemplo:
Ahora, ingrese su contraseña, presione Entery luego presione CtrlZpara enviarla de nuevo al fondo y
bg
decirle que continúe ejecutándose.Un enfoque más simple sería nunca usar
&
y, en su lugar, enviar trabajos al fondo manualmente con CtrlZybg
después de iniciarlos.Finalmente, es posible que desee considerar configurar el tiempo de espera de la contraseña de sudo en algo como 1 o 2 segundos. Eso aún le daría suficiente seguridad (a menos que esté tratando de protegerse contra Flash) y le permita ejecutar comandos como ese como se esperaba.
fuente
man sudoers
dicetimestamp_timeout
debe especificar minutos con una posible parte fraccionaria (que por cierto genera unsudo
error si intento especificar uno, no estoy seguro de por qué).2.5
funciona bien aquí (Arch,sudo
versión 1.8.15).