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.

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í:

Un ejemplo del archivo de Linux Sodoers

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!

Author
El autor

Deyimar A.

Deyi es una entusiasta del marketing digital, con experiencia en diseño de páginas web, creación de contenido, copywrite y SEO. Forma parte del equipo de SEO & Localization de Hostinger. En su tiempo libre, le gusta desarrollar proyectos, leer un libro o ver una buena película.