Tengo un script de shell local que realiza una serie de pruebas en un host remoto, antes de entregar la carga útil; Una de estas pruebas es si el usuario tiene privilegios de sudo, se verificó simplemente con, sudo -v
sin embargo, esto requiere que el usuario ingrese su contraseña. Además, el host remoto parece tener un tiempo de espera de sudo instantáneo, por lo que se requiere la entrada de contraseña en cada conexión nueva, y esto es algo que no tengo permiso para cambiar (como política).
Por supuesto, puedo probar si el usuario es parte de ciertos grupos, pero esto no sería independiente de la configuración del host remoto, por lo que esperaba que haya un método que pueda verificar que no sea necesario asumir los grupos del usuario, también. como no necesita entrada del usuario?
¡Gracias!
ACTUALIZACIÓN: para hacerme eco de mis comentarios, solo quiero probar si un usuario podría sudo, sin requerir la interacción del usuario para esa prueba.
sudo -l
me pide mi contraseñasudo -k
primero.Respuestas:
Me temo que lo único que puede probar es si el usuario tiene privilegios de sudo sin una contraseña.
Ejecutar
Si $? es 0, el usuario tiene acceso a sudo sin contraseña, si $? es 1, el usuario necesita una contraseña.
Si necesita verificación para un programa específico, cambie
true
con su programa, de manera que el programa no haga nada, comochmod --help
fuente
X
essudo
capaz sin introducir una contraseña y sin accidentalmente ejecutarloSi tiene un usuario con acceso a sudo, como "root", puede usarlo para verificar otros inicios de sesión. A medida que el usuario con acceso ejecuta:
sudo -n -l -U foo 2> & 1 | egrep -c -i "no está permitido ejecutar sudo | usuario desconocido"
Si devuelve cero, "foo" tiene acceso. De lo contrario, no tiene acceso a sudo.
fuente
sudo -n -l cmd
y se le informará si el usuario actual tiene acceso sudo a cmd. Si quieres probar el resultado.Eso debería darle suficiente para decidir si tiene los privilegios que desea / necesita.
fuente
Sé que esta es una pregunta muy antigua, pero encontré suerte con el
-n
indicador (no interactivo) y-v
/-l
. Pero, tienes que inspeccionar la salida:Algunos redireccionamientos de salida y grepping lo llevarán allí, probablemente:
fuente