Sé que esta es una pregunta muy antigua, pero aquí está lo que hice en un guión hoy. 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 "load"|wc -l) if [ ${CAN_I_RUN_SUDO} -gt 0 ] then echo "I can run the sudo command" else echo "I can't run the Sudo command" fi
Sin embargo, si su usuario tiene restricciones en el 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) para evitar esos falsos positivos.
El -n
La opción está disponible en las versiones más nuevas de Sudo, pero como dijiste, esa no es una opción. No hay una forma real de hacer lo que está buscando a menos que simplemente pruebe Sudo y vea si regresa con un mensaje de contraseña. Si su preocupación es que desea una indicación visual, ¿por qué no comenzar a hacer sudo /bin/bash para iniciar una 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 rápidos en sudo.
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 su configuración https://www.sudo.ws/man/1.8.15/sudoers.man.html tiene defaults mail_badpass
se enviará un correo por cada prueba que dé como resultado falso (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 de alerta de seguridad para todos los comandos excepto /bin/true. Bueno, sí, ahora alguien podría intentar forzar una contraseña llamando al sudo true
un número ilimitado de veces sin que se envíe ningún correo de alerta de seguridad.
Nota:utilice siempre visudo
en lugar de su editor favorito para editar el archivo sudoers. Si no lo hace, corre el riesgo de quedar bloqueado.