Este artículo complementa la primera parte del comando sudo publicada aquí. Presenta un ejemplo mas de configuración para resaltar una practica mas actual recomendada en las ultimas distribuciones de Linux, respecto a la configuración de donde ubicar los archivos que conceden los privilegios.
¿Porque usar el comando sudo?
Resulta peligroso ejecutar directamente una terminal del root. Un solo error de tipeo puede causar daños considerables ( hasta aveces irrecuperables). Es buena practica evitar usar dicha cuenta lo mas posible. Como vimos en la Parte I, se puede configurar el sistema de tal forma que ciertos comandos ́unicos puedan ser ejecutados con privilegios de superusuario, y esto es lo que ofrece el mecanismo de sudo. Con dicho comando, el usuario necesita conocer su propia clave solamente y de modo que no requiera la del root .
A continuación se muestra el caso de uso 3, a modo de otro ejemplo y para mostrar otra de las formas de asignar privilegios a los usuarios.
Recordemos el anterior articulo. Mediante casos de uso se mostraron ejemplos de como dar privilegios de root a dos usuarios, esto era:
- admin1 ejecuta comandos con privilegios de superusuario, siempre y cuando se valide correctamente con su contraseña al invocar sudo.
- admin2 ejecuta comandos de modo similar a admin1 y no puede apagar ni reiniciar el equipo.
Se implementa un caso de uso 3. Donde se requiere que el usuario admin3 pueda correr programas con privilegios, donde sudo no le pedirá su contraseña, y solo ejecutara sin mas el comando. En esta figura se muestra la representación de esos tres usuarios, y sudo , a modo de contectualizar el despliegue.
Caso de uso 3
Se requiere que admin3 pueda ejecutar comandos de root , sin que sudo le solicite el password de su cuenta. Observar que esto es potencialmente peligroso también. Este ejemplo fue elegido para mostrar las variantes que el comando soporta. Lo que se quiere resaltar en este ejemplo, es que el lector vea el modo que se utiliza para configurar, que es colocando el archivo en el directorio /etc/sudoers.d/ , y no escribir todo en el /etc/sudoers .
Resolución del caso
En todas las distribuciones recientes de Linux se recomiendan colocar en el subdirectorio /etc/sudoers.d el archivo de configuración. Si es un usuario, generalmente con su nombre al cual root desea concederle acceso. Sin embargo, esta convención no es obligatoria, ya que sudo escaneará todos los archivos en este directorio. En el caso del usuario admin3 creo un archivo llamado admin3 con el siguiente contenido:
admin3 ALL=(ALL) NOPASSWD: ALL
En Debian 10 al archivo se le debe asignar los permisos 0440 (lea la documentación de su distribución, normalmente será 0440 o 0400 ). Lo realizo a continuación:
chmod 440 /etc/sudoers.d/admin3
Además también en Debian 10 debemos con visudo agregar la siguiente linea final (visudo lo agrega al /etc/sudoers ):
#includedir /etc/sudoers.d
En la linea agregada anteriormente incluyo la # (pues forma parte de la misma directiva #includedir /etc/sudoers.d ) Con esto admin3 la próxima vez que invoque sudo no se le pide la contraseña.
En la siguiente figura se muestra una sesión de prueba y trabajo realizada por admin3
Notas
Los casos 1 y 2 se resolvieron agregando al final del archivo /etc/sudoers , mediante la utilidad visudo (que se ocupa de revisar la sintaxis mientras se edita). Esta practica aunque aun hoy se soporta es antigua.
¿Es recomendable que sudo no pida el password? No, en mas se desaconseja, pero algunos usuarios de Linux, por comodidad o por cualquier otro motivo quizás necesiten eliminar esta petición de contraseña cada vez que ejecutan sudo
El comando esta muy bien documentado y tiene muchas opciones, por ejemplo se puede modificar el tiempo de gracia que sudo espera para pedir de nuevo la contraseña (habrás notado que cuando ejecutas sudo varias veces seguidas, no siempre te pide la contraseña). Ese tiempo de gracia puede ser reducido o ampliado, y quizás si vas a ejecutar muchas tareas seguidas sea más recomendable hacer eso que no quitar directamente la contraseña. ¡Simplemente son ideas!