En el siguiente artículo vamos a echar un vistazo a cómo podemos ejecutar comandos en particular sin la contraseña sudo en Ubuntu gracias al archivo sudoers. Me parece lógico avisar de que lo que a continuación se va a poder leer tiene tan solo fines didácticos. Es imprescindible tener mucho cuidado al aplicar lo que aquí se va a poder leer. Si por lo que sea permites que un usuario ejecute el comando ‘rm’ sin necesidad de escribir la contraseña de sudo, podría eliminar de manera accidental o malintencionada cosas importantes del sistema operativo.
Como digo, en las siguientes líneas vamos a ver cómo ejecutar comandos específicos sin necesidad de escribir la contraseña de sudo en sistema operativos similares a Unix. Como todos los usuarios de Ubuntu sabemos, es necesario escribirla cuando ejecutemos un comando utilizando sudo. Pero a la hora de automatizar ciertas tareas, quizás tener que estar escribiéndola pueda ser un inconveniente.
Ejecuta comandos específicos sin la contraseña de sudo en Ubuntu
Si por algún motivo, sea el que sea, te interesa permitir que un usuario ejecute un comando en particular sin que tenga que escribir la contraseña de sudo, debes añadir ese comando al archivo de sudoers.
Digamos que queremos que un usuario llamado entreunosyceros ejecute el comando mkdir sin que tenga que escribir la contraseña sudo. Para ello, tendremos que editar el archivo sudoers. En la terminal (Ctrl+Alt+T) escribimos:
sudo visudo
Cuando se abra el archivo, al final de este añadiremos la siguiente línea:
entreunosyceros ALL=NOPASSWD:/bin/mkdir
En esta línea que se añade en la anterior captura, entreunosyceros es el nombre de usuario. Según esta línea, este usuario va a poder ejecutar el comando ‘mkdir‘ sin necesidad de escribir la contraseña de sudo.
El sistema es sencillo. Vamos a poder agregar tantos comandos como queramos separándolos con comas, como se muestra a continuación:
entreunosyceros ALL=NOPASSWD:/bin/mkdir,/bin/chmod
Tras terminar de añadir la línea, cierra la sesión y vuelve a iniciarla o reinicia el sistema. De ahora en adelante, el usuario al que se refiere la línea añadida al archivo sudoers no va a necesitar escribir la contraseña sudo mientras ejecuta alguno de los comandos que se han añadido. Eso si, al ejecutar todos los demás comandos, si se le pedirá que escriba la contraseña para utilizar sudo.
Busca la ruta al comando y añádelo al archivo sudoers
En este caso de que queramos añadir un comando con una ruta diferente a la que hemos utilizado hasta ahora, la ruta hasta apt por ejemplo, necesitaremos escribir correctamente la ruta hasta el archivo ejecutable. En caso de no estar seguros de ella, podemos utilizar el comando ‘whereis‘ para averiguar la ruta correcta de apt. En la terminal (Ctrl+Alt+T) habría que escribir:
whereis apt
Como se puede ver en la captura de pantalla anterior, la ruta para el comando apt es /usr/bin/apt, por lo tanto esta es la ruta que se debe agregar en el archivo sudoers.
En caso de que nos interese no tener que escribir la contraseña para sudo al ejecutar el comando apt, tendremos que volver a editar el archivo sudoers:
sudo visudo
Dentro habría que agregar el comando ‘apt’ en el archivo como hicimos con los anteriores comandos:
entreunosyceros ALL=NOPASSWD:/bin/mkdir,/bin/chmod,/usr/bin/apt
Tras añadir el comando, guarda y cierra el archivo sudoers. Después cierra la sesión y vuelve a iniciarla. Ahora, ya se puede verificar si el usuario puede ejecutar el comando con el prefijo sudo sin utilizar la contraseña:
sudo apt update
Pedir la contraseña de sudo para un comando específico en el archivo sudoers
Si tras hacerlo, si necesitas que el usuario vuelva a tener que escribir la contraseña, tan solo habrá que editar el archivo sudoers y quitar el comando agregado. Guardar el archivo, cerrar sesión y volver a iniciarla.
Una alternativa sería añadir la directiva ‘PASSWD:’ delante del comando que queramos que necesite escribir la contraseña de sudo. Siguiendo el ejemplo, vamos a modificar la línea añadida al archivo sudoers como se muestra a continuación:
entreunosyceros ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt
En este caso, el usuario entreunosyceros puede ejecutar los comandos ‘mkdir‘ y ‘chmod‘ sin escribir la contraseña sudo. Sin embargo, va a tener que escribirla cuando quiera ejecutar el comando ‘apt’.
Hola. Pude editar el archivo sudoers como bien explicaste en el post. En este momento estoy empezando a usar arch. Para agregar el comando pacman, para determinadas acciones..como deberia hacer?, me interesa por ejemplo que no pida contraseña para actualizar el sistema operativo, ej: sudo pacman update. Pero que para rm pida pass. Gracias, un cordial saludo.