(Publicado originalmente en Stack Overflow. Sugirieron que intente aquí en su lugar. Aquí está la publicación original: /programming/3858208/sudo-is-there-a-command-to-check-if-i-have -sudo-y-o-cuanto-queda-tiempo-restante )
Ver título Quiero un comando que me permita consultar sudo. Idealmente, devolvería el éxito si todavía tengo sudo y falso si sudo ha expirado. Obtener el tiempo restante también podría ser útil (aunque si me preocupara, podría hacer sudo -v para revalidar). Ah, y no debería tener que pedir una contraseña.
Lo más parecido que he encontrado es "sudo -n true", pero la opción -n solo está presente en mi máquina Centos 5 en el trabajo. -n falla si tiene que pedir una contraseña. ¿Hay alguna otra forma de obtener esta funcionalidad? Suponga que en realidad no tengo root en todas las máquinas con las que trabajo, por lo que no puedo instalar nuevas versiones de sudo a mi gusto.
Por lo que vale, estoy haciendo esto para que pueda obtener mi mensaje para indicar el estado de sudo. Me gusta saber qué terminales se pueden sudo activamente. También tengo un mensaje que cambia de color cuando soy root, pero no uso root muy a menudo, por lo que es de uso limitado.
Sé que esta es una pregunta muy antigua, pero aquí lo hice en un script hoy:
fuente
El siguiente comando mostrará una indicación en color de que le has otorgado sudo, por lo que debes recordar hacer
sudo -k
antes de salir de la máquina. Es útil también en terminales no coloreados.Como podemos tener sudo activo e inactivo en diferentes sesiones de terminal, creé esto que puedes poner al final de tu ~ / .bashrc
En el tipo de terminal
bash
para probarlo. También agregará una línea completa cada vez que ejecute un comando, que tenga la información de la hora en que finalizó el último comando, para que pueda ir a almorzar y saber cuándo terminó el último comando :).Puedes jugar con este código para satisfacer tus necesidades. También está la variable PS1 (esa es la línea simple de solicitud pequeña real), pero creo que es mejor no meterse con ella.
PD .: para OS-X, busque el comentario a continuación de @nwinkler.
fuente
sudo -n
no parecen funcionar en OS X. Ver mi pregunta aquí: superuser.com/questions/902826/...sudo -n
, ¿crees que podría haber alguna otra prueba que pudiera usarse para determinar si el usuario tiene acceso sudo activo? o tal vez OS-X requiere alguna actualización? Nunca usé OS-X por cierto.sudo -n
en BSD (en el que se basa OS X) tenga un comportamiento diferente al de la versión GNU. Acabo de agregar mi comentario para que la gente sepa que esta versión de la verificación no parece funcionar en OS X. He utilizado una verificación de otra respuesta (sudo -n uptime 2>&1|grep "load"|wc -l
), y parece funcionar bien en OS X. No es tan elegante, pero funciona.sudo -n
vuelve defectuoso en sudo -V 1.7.9Para simplificar la respuesta dada por @ wags007
Sin embargo, si en su https://www.sudo.ws/man/1.8.15/sudoers.man.html configuración que tiene,
defaults mail_badpass
se enviará un correo para cada prueba que resulte en falso (lo habría solicitado). Para evitar tales molestias, cambie esa parte de su archivo de sudoers aComo resultado, se envían correos de alerta de seguridad para todos los comandos excepto / bin / true. Bueno, sí, alguien podría intentar forzar una contraseña por fuerza bruta llamando
sudo true
un número ilimitado de veces sin enviar ningún correo de alerta de seguridad.Nota: Utilice siempre en
visudo
lugar de su editor favorito para editar el archivo sudoers. De lo contrario, corre el riesgo de quedar bloqueado.fuente
De acuerdo con el manual de sudo, la sesión de sudo se determina de acuerdo con el archivo de marca de tiempo (
/usr/lib/sudo/<username>
), por lo que puede averiguar cuánto tiempo queda al verificar la fecha / hora del archivo de marca de tiempo. Sin embargo, en mi sistema, el archivo de marca de tiempo es de hecho un directorio, y hay tres archivos con contenido críptico (y también algunas/usr/lib/sudo/<username>
marcas de tiempo extrañas, pero parecía tener una marca de tiempo que coincidía con el momento en que le di a sudo mi contraseña) Creo que/usr/lib/sudo/<username>/0
tiene la marca de tiempo de lasudo
ejecución más reciente .fuente
Advertencia
De acuerdo con Bugzilla sudo ID de error = 590, la llamada
sudo -n true 2&>/dev/null ; echo $?
se volverá defectuosasudo -V 1.7.10
Lea Bugzilla [aquí] ( http://bugzilla.sudo.ws/show_bug.cgi?id=590 "ID de error = 590")
fuente
Al menos en sudo 1.8.21p2, este enfoque funciona bien:
fuente
Esta es probablemente una exageración extrema para el estándar de la mayoría de las personas, pero aquí está la función (posiblemente correcta) que uso para verificar si
sudo
está desbloqueada (la función no perderá su tiempo si el usuario la está ejecutandoroot
, ya que no hay necesidad de desbloquearlasudo
):fuente
respuesta simple ...
fuente
¿Qué tal la página man
Enumere sus comandos disponibles:
sudo en sí no tiene límites de tiempo o fecha ... ver:
fuente