Cómo usar el comando Sudo y el archivo Sudoers
El comando sudo permite a los usuarios no root ejecutar otros comandos Linux que normalmente requerirían privilegios de superusuario, mientras que el archivo sudoers le indica al sistema cómo manejar el comando sudo. En este tutorial, te mostraremos todos los conceptos básicos del comando sudo y cómo editar el archivo sudoers.
Tabla de Contenidos
Entendiendo el comando Sudo
Para empezar a entender cómo funciona sudo, primero accede a tu VPS a través de SSH. Si tienes problemas, consulta nuestro tutorial sobre PuTTY.
Por defecto, el usuario root no necesita usar el prefijo sudo. Este ya tiene todos los privilegios posibles. Por otro lado, si un usuario no root quiere agregar otro usuario, necesitará agregar el prefijo sudo al comando useradd, de esta manera:
sudo useradd edward
Si el usuario no usa el prefijo sudo, recibirá un mensaje sobre el Permiso denegado.
El Archivo Sudoers
El comando sudo se configura a través de un archivo ubicado en /etc/ llamado sudoers.
A través del comando sudo, puedes proporcionar privilegios de nivel administrativo a los usuarios habituales. Normalmente, en un entorno VPS, el primer usuario que creas al instalar Ubuntu tiene derechos de sudo; a este usuario predeterminado se le conoce como usuario raíz (root user) predeterminado. Puedes configurar otros usuarios para que también puedan ejecutar el comando sudo. Esto se puede hacer editando el archivo sudoers.
Importante: ¡Se cuidadoso! Editar el archivo sudoers, con errores o sintaxis incorrecta, puede provocar el bloqueo de todos los usuarios en tu versión.
Sintaxis del archivo Sudoers
Puedes abrir el archivo con tu editor de texto preferido. Para el ejemplo hemos usado vi:
vi /etc/sudoers
El archivo VPS luce así:
Veamos algunos de los formatos y reglas a seguir al editar sudoers:
- Todas las líneas que comienzan con # son comentarios
- root ALL=(ALL: ALL) ALL – esta línea significa que el usuario root tiene privilegios ilimitados y puede ejecutar cualquier comando en el sistema
- %admin ALL=(ALL) ALL – el signo % especifica un grupo. Cualquier persona en el grupo de administradores tiene los mismos privilegios que el usuario root
- %sudo ALL = (ALL: ALL) ALL – todos los usuarios del grupo sudo tienen los privilegios para ejecutar cualquier comando
Otra línea de interés es #includedir /etc/sudoers.d, esta significa que podemos agregar configuraciones al archivo sudoers.d y vincularlo con este.
Edición del archivo Sudoers
Para editar el archivo /etc/sudoers, use el siguiente comando:
sudo visudo -f /etc/sudoers
Te recomendamos usar visudo para editar el archivo sudoers. Visudo se asegura de que sudoers sea editado por un usuario a la vez y proporciona las comprobaciones de sintaxis necesarias.
Para ver qué usuarios están en el grupo sudo, puedes usar un comando grep:
grep ‘sudo’ /etc/group
Esto generará una lista de nombres de usuario.
Para agregar un usuario llamado ‘bill’ al grupo sudo, usa el comando adduser en la línea de comandos, así:
adduser bill sudo
Si usas el comando grep para verificar quién está en el grupo, verás el nombre de usuario ‘bill’.
Si deseas otorgar privilegios de root a alguien, simplemente agrégalos a sudo.
Para eliminar a ‘bill’ como usuario de sudo:
deluser bill sudo
El comando deluser eliminará la factura del grupo sudo.
Ahora ‘bill’ ya no podrá realizar acciones que requieran privilegios de sudo.
Usar el archivo Sudoers para otorgar privilegios específicos
¿Qué sucede si quieres que Bill pueda ejecutar solo algunos tipos específicos de comandos con privilegios de sudo, como en las redes?
Primero, crea un archivo de configuración en /etc/sudoers.d/ llamado networking.
Usa el siguiente comando para crear el archivo:
sudo visudo -f /etc/sudoers.d/networking
Agrega el siguiente texto al archivo:
Cmnd_Alias CAPTURE = /usr/sbin/tcdump Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd Cmnd_Alias NETALL = CAPTURE, SERVERS %netadmin ALL=NETALL
Lo que has hecho en el archivo anterior es crear un grupo netadmin. Los usuarios del grupo netadmin podrán ejecutar los comandos especificados en NETALL. NETALL a su vez incluye todos los comandos bajo los alias CAPTURE y SERVERS. El comando tcpdump está bajo el alias CAPTURE, es decir, /usr/sbin/tcpdump.
A continuación, puedes agregar a ‘bill’ al grupo netadmin:
sudo adduser bill netadmin
Ahora ‘bill’ podrá ejecutar el comando tcpdump junto con otros comandos relacionados con el trabajo en red.
Conclusión
Si estás trabajando con varios usuarios, comprender el comando sudo y el archivo sudoers es una necesidad absoluta. ¡En este tutorial, aprendiste todos los conceptos básicos para tomar el control de los privilegios de tu sistema!