El comando sudo permite a los usuarios no root ejecutar otros comandos de 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, le mostraremos todos los conceptos básicos del comando sudo y cómo editar el archivo sudoers.
Comprender Sudo
Para mostrar cómo funciona sudo, primero acceda a su VPS a través de SSH. Si tiene problemas, consulte el tutorial de PuTTY.
De forma predeterminada, el usuario root no necesita usar el prefijo sudo. Ya tienen todos los privilegios posibles. Mientras tanto, si un usuario no root desea agregar otro usuario, deberá agregar el prefijo sudo al comando useradd, así:
sudo useradd edward
Si el usuario no usa el prefijo sudo, recibirá un Permiso denegado salida.
El archivo Sudoers
El comando sudo se configura a través de un archivo ubicado en /etc/ llamados sudoers .
A través del comando sudo, proporciona privilegios de nivel administrativo a los usuarios habituales. Normalmente, el primer usuario que crea al instalar Ubuntu tiene derechos de sudo. En un entorno de VPS, ese es el usuario raíz predeterminado. Puede configurar otros usuarios para que también puedan ejecutar el comando sudo. Eso se puede hacer editando sudoers.
Sintaxis del archivo Sudoers
Puede abrir el archivo con su editor de texto preferido. Usaremos vi :
vi /etc/sudoers
El archivo de nuestro VPS se ve así:
Veamos algunos de los formatos y reglas a seguir al editar sudoers:
- Todas las líneas que comienzan con # son comentarios
- raíz TODO=(TODO:TODO) TODO – esta línea significa que el usuario raíz tiene privilegios ilimitados y puede ejecutar cualquier comando en el sistema
- %admin TODOS=(TODOS) TODOS – el signo % especifica un grupo. Cualquiera en el grupo de administración tiene los mismos privilegios que el usuario root
- %sudo TODOS=(TODOS:TODOS ) TODOS – todos los usuarios del grupo sudo tienen privilegios para ejecutar cualquier comando
Otra línea de interés es #includedir /etc/sudoers.d, esto significa que podemos agregar configuraciones al archivo sudoers.d y vincularlo aquí.
Editando el archivo Sudoers
Para editar /etc/sudoers archivo, use el siguiente comando:
sudo visudo -f /etc/sudoers
Se recomienda 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 podemos 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, usamos adduser comando en la línea de comando, así:
adduser bill sudo
Si usamos el comando grep para verificar quién está en el grupo, veremos la factura del nombre de usuario.
Si desea otorgar privilegios de root a alguien, simplemente agréguelo a sudo.
Para eliminar un usuario de sudo:
deluser bill sudo
El comando deluser eliminará a bill del grupo sudo.
Ahora la factura del usuario ya no puede realizar acciones que requieran privilegios de sudo.
Utilice el archivo Sudoers para otorgar privilegios específicos
¿Qué pasa si queremos que bill pueda ejecutar solo tipos específicos de comandos con privilegios de sudo, como redes?
Para ello creamos un archivo de configuración en /etc/sudoers.d/ llamado redes.
Use el siguiente comando para crear el archivo:
sudo visudo -f /etc/sudoers.d/networking
Agregue el siguiente texto en el archivo:
Cmnd_Alias CAPTURE = /usr/sbin/tcpdump Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd Cmnd_Alias NETALL = CAPTURE, SERVERS %netadmin ALL=NETALL
Lo que hemos hecho en el archivo anterior es crear un grupo de administradores de red. Los usuarios del grupo netadmin pueden ejecutar 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, agregamos la factura del usuario al grupo de administradores de red:
sudo adduser bill netadmin
Ahora la factura del usuario podrá ejecutar el comando tcpdump junto con otros comandos relacionados con la red.
Conclusión
Si está trabajando con varios usuarios, comprender el comando sudo y el archivo sudoers es una necesidad absoluta. ¡En este tutorial, aprendió todos los conceptos básicos para tomar el control de los privilegios de su sistema!