He otorgado un permiso grupal para ejecutar ciertos comandos sin contraseña a través de sudo. Cuando uno de los usuarios comete un error tipográfico o ejecuta un comando incorrecto, el sistema le solicita su contraseña y luego recibe un error. Esto es confuso para el usuario, por lo que me gustaría mostrar un error en lugar de pedirle una contraseña. es posible?
Aquí hay un ejemplo de mi archivo sudoers:
%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *
Ejemplo cuando ejecutan el script incorrecto:
# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.
Salida deseada:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.
Tenga en cuenta la falta de solicitud de contraseña.
Mi google-fu me ha fallado y sólo devuelve los resultados en no pedir una contraseña cuando el usuario está autorizado a ejecutar el comando.
sudo
le permitirán ejecutar sin ingresar su contraseña. Con la función que desea, podría obtener esa información para comandos específicos.sudo
es un problema tan grande, si los usuarios tienen acceso de escritura a estos archivos.Respuestas:
De una lectura rápida de
sudo(8)
Y para los que dudan:
Probado así:
Por lo tanto, una
alias
parasudo
estas personas probablemente haría el truco, para evitar que se solicite la contraseña. Ahora, por qué esto requiere una compilación personalizadasudo
, no sé, acabo de leer el manual.fuente
alias sudo="$(which sudo) -n"
en / etc / bashrc, luego usaríasudo
(comportamiento ajustado) ocommand sudo
(comportamiento predeterminado) según lo deseado.Una cosa que funcionó para mí (Sudo versión 1.8.17p1), pero que satisface solo una parte de su problema, es establecer el número de intentos de contraseña en 0.
Esto hace que sudo salga con el código 1 cuando se intenta cualquier comando que requiera una contraseña. Sin embargo, no produce ningún tipo de mensaje de error.
fuente
No puedes.
No hay forma de saber quién es hasta que se haya autenticado y, de forma predeterminada, no puede autenticarse sin una contraseña.
Puede cambiar la autenticación para usar llaves USB, escáneres de huellas digitales, autenticación de voz, reconocimiento de rostros o un montón de otras cosas, pero el punto es el mismo.
No puede autenticarse, sin autenticar Y antes de autenticar sudo no tiene por qué decirle lo que puede o no puede ejecutar.
fuente
@StrongBad hizo un comentario que merece ser una respuesta:
Creo que la mejor solución sería escribir un script de envoltura que siempre llame
sudo
con los parámetros correctos. (Incluyendo-n
)El script de envoltura puede hacer análisis de argumentos, etc. para que el script sudo llamado sea lo más pequeño posible y, por lo tanto, sea menos probable que tenga errores.
fuente
Esto no es posible. La única forma es cambiar el código fuente y compilar su propia bifurcación de
sudo
fuente