Pregunta

Quiero poder verificar rápidamente si tengo acceso a sudo y si mi contraseña ya está autenticada.No me preocupa tener acceso sudo específicamente para la operación que estoy a punto de realizar, pero eso sería una buena ventaja.

Específicamente, estoy tratando de usar esto para un script que quiero que pueda ejecutar una variedad de usuarios.Algunos tienen acceso sudo.Todos conocen la contraseña de root.

Cuando ejecutan mi script, quiero que use permisos sudo sin solicitar una contraseña, si es posible, y de lo contrario, volver a solicitar la raíz contraseña (porque es posible que no tengan acceso a sudo).

Mi primer intento no funcional fue desembolsar sudo -S true con STDIN cerrado o leyendo desde /dev/null.Pero todavía solicita la contraseña y espera un par de segundos.

Intenté varias otras cosas, incluida la espera de 0,3 segundos para ver si tuvo éxito de inmediato, pero todo lo que intento termina fallando en alguna situación.(Y no porque mi tiempo de espera sea demasiado corto). Es difícil entender qué sucede, porque no puedo simplemente hacer un seguimiento como lo haría normalmente.

Una cosa que yo saber no funciona es cerrar STDIN o conectarlo a una tubería antes de ejecutar sudo -S true.Esperaba que eso hiciera que la solicitud de contraseña fallara inmediatamente, pero aún así aparece y se comporta de manera extraña.Creo que podría querer una terminal.

¿Fue útil?

Solución

Con versiones más nuevas de sudo hay una opción para este propósito:

sudo -n true

yo suelo true Aquí para no operar, pero puedes usar cualquier comando.

Otros consejos

No sé cuál es la razón principal por la que es necesario hacer esto, pero creo que tal vez sea necesario repensar cuál sea la razón principal.Intentar hacer cosas complicadas e inusuales con permisos frecuentemente genera agujeros de seguridad.

Más específicamente, cualquier cosa que el script intente hacer podría hacerse mejor con setuid en lugar de sudo.(También me preguntaría por qué tanta gente tiene la contraseña de root.Sudo está ahí específicamente para evitar darle a la gente la contraseña de root).

getent group admin | grep $particular_user

Podrías usar whoami para obtener el usuario actual.

Editar:Pero eso no te ayuda a saber si todavía estás autorizado para realizar tareas sudo...Mmm..

Correr

sudo -S true < /dev/null &>/dev/null

Parece funcionar, aunque tarda un segundo antes de fallar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top