Sudo: ¿hay algún comando para comprobar si tengo sudo y/o cuánto tiempo queda?

Sudo: ¿hay algún comando para comprobar si tengo sudo y/o cuánto tiempo queda?

(Publicado originalmente en Stack Overflow). Me sugirieron que intentara aquí. Aquí está la publicación original:

Ver título. Quiero un comando que me permita consultar sudo. Idealmente, devolvería éxito si todavía tengo sudo y falso si sudo ha caducado. Obtener el tiempo restante también podría ser útil (aunque si estuviera preocupado, podría sudo -vrevalidar). Ah, y no debería tener que solicitar una contraseña.

Lo más parecido que encontré es sudo -n true, pero la -nopción solo está presente en mi máquina Centos 5 en el trabajo. -nfalla si tiene que solicitar una contraseña. ¿Existe alguna otra forma de obtener esta funcionalidad? Supongamos 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 si sirve de algo, estoy haciendo esto para poder recibir un mensaje que indique el estado de sudo. Me gusta saber qué terminales tienen capacidad sudo activa. 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.

Respuesta1

La -nopción está disponible en versiones más nuevas de sudo, pero como usted dijo, no es una opción. No hay una forma real de hacer lo que estás buscando, salvo intentarlo sudoy ver si aparece un mensaje que te solicita una contraseña. Si lo que le preocupa es que desea una indicación visual, ¿por qué no iniciar sudo /bin/bashuna sesión de root bash? Tenga en cuenta que esto es inseguro, pero también es algo inseguro si alguien se da cuenta de sus cambios en sudo.

Respuesta2

Sé que esta es una pregunta muy antigua, pero aquí la hice hoy en un guión. Suponiendo que ser sudo significa poder ejecutar cualquier comando como sudo (o, al menos, tiempo de actividad)

CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1 | grep "cargar" | wc -l)
si [ ${CAN_I_RUN_SUDO} -gt 0 ]
entonces
    echo "Puedo ejecutar el comando sudo"
demás
    echo "No puedo ejecutar el comando Sudo"
fi

Sin embargo, si su usuario tiene restricciones en el archivo visudo, esta verificación no será suficiente, por ejemplo, si su usuario solo puede usar el comando make. Intente ejecutar algún comando que sepa que funcionará.

Puede agregar el filtro grep -v Sorry, por ejemplo:

$(sudo -n uptime 2>&1 | grep "load" | grep -v Sorry | wc -l)

por evitar esos falsos positivos.

Respuesta3

Para simplificar la respuesta dada por @ wags007

if sudo -n true
then
  sudo id
else
  echo "sorry, but did not want to bother you"
fi

Sin embargo, si en suhttps://www.sudo.ws/man/1.8.15/sudoers.man.htmlconfiguración que tenga, defaults mail_badpassse enviará un correo por cada prueba que resulte falsa (lo habría solicitado). Para evitar tales molestias, cambie esa parte de su archivo sudoers a

Defaults       mail_badpass
Defaults!      /bin/true !mail_badpass

Como resultado, se envían correos electrónicos de alerta de seguridad para todos los comandos excepto /bin/true. Bueno, sí, ahora alguien podría intentar forzar una contraseña mediante fuerza bruta llamando sudo trueun número ilimitado de veces sin que se envíe ningún correo de alerta de seguridad.

Nota: Utilice siempre visudoen lugar de su editor favorito para editar el archivo sudoers. Si no lo hace, corre el riesgo de quedar excluido.

Respuesta4

Según el manual de sudo, la sesión de sudo se determina según el archivo de marca de tiempo ( /usr/lib/sudo/<username>), por lo que es posible que pueda calcular cuánto tiempo queda verificando 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 marcas de tiempo extrañas, pero /usr/lib/sudo/<username>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>/0tiene la marca de tiempo de la ejecución más reciente sudo.

información relacionada