Introducción
En los sistemas Linux, administrar los permisos de usuario y el control de acceso es fundamental para la administración del sistema y la seguridad. El comando sudo, abreviatura de «superuser do», permite que los usuarios autorizados ejecuten comandos con privilegios elevados, normalmente los de la cuenta de superusuario o root.
En este laboratorio aprenderá a conceder y restringir privilegios a los usuarios en un entorno Linux. Aprenderá a añadir usuarios al grupo sudo para que puedan realizar tareas administrativas y a limitar sus permisos a comandos específicos. Estas habilidades son esenciales para mantener sistemas seguros en los que el acceso a operaciones sensibles debe controlarse cuidadosamente.
Administración de usuarios y conceptos básicos de sudo
En este paso aprenderá sobre la administración de usuarios en Linux y los conceptos básicos del comando sudo. Creará un usuario nuevo y aprenderá a concederle privilegios administrativos.
¿Qué es sudo?
El comando sudo permite que los usuarios autorizados ejecuten comandos con los privilegios de seguridad de otro usuario, normalmente los del superusuario (root). Así se pueden realizar tareas administrativas sin iniciar sesión como root, lo que se considera una buena práctica de seguridad.
Crear un usuario nuevo
Primero, cree una cuenta de usuario nueva. Abra el terminal y ejecute este comando:
sudo adduser trusted_advisor
El sistema le pedirá que introduzca una contraseña y algunos datos opcionales para el usuario nuevo. Para este laboratorio, puede usar una contraseña sencilla como password123 y dejar los demás campos en blanco pulsando Intro.
El resultado debería parecerse a este:
Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
Comprobar la información del usuario
Para verificar que el usuario se haya creado correctamente, examine el contenido del archivo /etc/passwd:
grep trusted_advisor /etc/passwd
Debería aparecer una línea con la información del usuario.
Conceder privilegios de sudo
Para conceder privilegios de sudo a un usuario, debe añadirlo al grupo sudo. En Ubuntu, los miembros de este grupo pueden usar el comando sudo. Ejecute el siguiente comando:
sudo usermod -aG sudo trusted_advisor
Este comando añade (-a) el usuario trusted_advisor al grupo sudo (-G sudo). A partir de ese momento, el usuario podrá ejecutar comandos con privilegios administrativos.
Verificar el acceso a sudo
Para verificar que el usuario nuevo tenga acceso a sudo, cambie a esa cuenta e intente listar el contenido del directorio /root, al que normalmente solo puede acceder el usuario root:
su - trusted_advisor
Cuando se le solicite, introduzca la contraseña que configuró para este usuario. Después, ejecute:
sudo ls /root
El sistema volverá a pedirle la contraseña (la primera vez que use sudo). Después de introducirla, debería ver el contenido del directorio /root. Esto confirma que el usuario tiene privilegios de sudo.
Por último, salga de la sesión de trusted_advisor para volver a su usuario original:
exit
Limitar el acceso a sudo con el archivo sudoers
En este paso aprenderá a restringir los privilegios de sudo de un usuario a comandos específicos mediante el archivo sudoers. Así aplicará el principio de mínimo privilegio: los usuarios solo deben tener los privilegios mínimos necesarios para realizar sus tareas.
Conocer el archivo sudoers
El archivo /etc/sudoers controla quién puede usar el comando sudo y qué comandos puede ejecutar. Nunca edite este archivo directamente con un editor de texto normal, ya que un error de sintaxis podría impedirle acceder al sistema. En su lugar, use siempre el comando visudo, que comprueba si hay errores de sintaxis antes de guardar.
Quitar el acceso general del grupo
Los permisos de sudo de las reglas coincidentes se combinan. Añadir una regla para comandos específicos no anula el acceso completo que concede el grupo sudo. Primero, desde la sesión original de labex, quite ese acceso general:
sudo deluser trusted_advisor sudo
Al realizar las pruebas, inicie una sesión nueva con su - trusted_advisor para que se aplique la pertenencia actualizada al grupo.
Editar el archivo sudoers
Para editar el archivo sudoers de forma segura, use el comando visudo:
sudo EDITOR=vim visudo
Este comando abre Vim explícitamente, por lo que las teclas de edición y guardado que se indican a continuación corresponden a ese editor. Pulse G para ir a la última línea y, después, o para abrir una línea nueva en modo de inserción.
Conocer la sintaxis de sudoers
La sintaxis básica de una entrada de sudo en el archivo sudoers es:
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
Donde:
user_or_group: el usuario o grupo al que se aplica esta reglahost: el nombre del host al que se aplica esta regla (normalmente,ALL)run_as_user: el usuario con el que se ejecutarán los comandos (rootsolo pararootoALLpara cualquier usuario)run_as_group: el grupo con el que se ejecutarán los comandos (se puede omitir)NOPASSWD: etiqueta opcional que permite ejecutar comandos sin introducir una contraseñacommands: los comandos específicos que se pueden ejecutar con sudo
Conceder acceso restringido a sudo
Desplácese hasta el final del archivo y añada esta línea para permitir que trusted_advisor ejecute solo los comandos cp y mv sin contraseña:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Añada también esta línea aparte para habilitar un registro de sudo específico en este contenedor, que no proporciona /var/log/auth.log:
Defaults logfile="/var/log/sudo.log"
Pulse Esc, escriba :wq y pulse Enter para guardar y salir de Vim. Si visudo informa de un error de sintaxis, pulse e para volver a editar el archivo y corregirlo. Para descartar los cambios en Vim, pulse Esc, escriba :q! y pulse Enter.
Este ejercicio solo sirve para practicar la coincidencia de comandos: permitir acceso irrestricto como root a cp o mv puede sobrescribir archivos sensibles y no es una restricción segura para un entorno de producción.
Probar el acceso restringido a sudo
Ahora compruebe que el acceso restringido a sudo funcione como se espera. Primero, vuelva al espacio de trabajo del laboratorio y cree un archivo de prueba:
cd /home/labex/project
echo "This is a test file" > important_file.txt
A continuación, cambie al usuario trusted_advisor:
su - trusted_advisor
Introduzca la contraseña cuando se le solicite.
Intente copiar el archivo al directorio root. La operación debería estar permitida:
sudo cp /home/labex/project/important_file.txt /root/
El comando debería ejecutarse correctamente sin pedirle una contraseña.
Ahora intente ejecutar un comando que no esté en la lista permitida, como cat:
sudo -n cat /root/important_file.txt
El comando debe fallar porque cat no está permitido. La opción -n evita que aparezca una solicitud de contraseña; el mensaje de denegación puede indicar que se necesita una contraseña o que el comando no está permitido. El comando no debe mostrar el contenido del archivo.
Salga de la sesión del usuario restringido antes de comprobar la copia, ya que ls tampoco está entre los comandos permitidos:
exit
Como usuario labex, compruebe que el archivo se haya copiado:
sudo ls /root/
En el resultado debería aparecer important_file.txt.
Eliminar el archivo de prueba
Para limpiar, elimine el archivo de prueba:
sudo rm /home/labex/project/important_file.txt /root/important_file.txt
Registros de sudo y consideraciones de seguridad
En este paso aprenderá sobre los registros de sudo y las buenas prácticas de seguridad. Supervisar el uso de sudo es importante para la seguridad y las auditorías.
Registro de sudo
Cuando los usuarios ejecutan comandos con sudo, estas acciones quedan registradas. Esto proporciona un historial de auditoría útil para supervisar la seguridad y solucionar problemas.
Las instalaciones de Ubuntu con un servicio de registro del sistema suelen usar /var/log/auth.log. En cambio, este contenedor usa el registro específico que configuró en el paso 2. Como usuario labex, examine las actividades recientes de sudo:
sudo tail -n 10 /var/log/sudo.log
Este comando muestra las últimas 10 entradas relacionadas con sudo. El resultado debería incluir marcas de tiempo, nombres de usuario y los comandos ejecutados con sudo.
Buenas prácticas de seguridad para sudo
Estas son algunas buenas prácticas para administrar los privilegios de sudo:
Principio de mínimo privilegio: los usuarios solo deben tener los privilegios mínimos necesarios para realizar sus tareas.
Usar comandos específicos: en lugar de conceder acceso completo a sudo, especifique exactamente qué comandos puede ejecutar cada usuario.
Exigir contraseñas: para las operaciones sensibles, asegúrese de que los usuarios tengan que introducir su contraseña al usar sudo.
Realizar auditorías periódicas: revise periódicamente los registros de sudo y el archivo sudoers para asegurarse de que estén bien configurados.
Quitar los accesos innecesarios: cuando los usuarios ya no necesiten privilegios elevados, quítelos del grupo
sudocuanto antes.
Quitar el acceso a sudo
En el paso 2 ya quitó a trusted_advisor del grupo sudo. Para revocar el acceso restante, concedido mediante la regla específica para comandos, elimine también esa regla:
sudo EDITOR=vim visudo
Pulse Esc, escriba /^trusted_advisor y pulse Enter para buscar la regla. Pulse dd para eliminar la línea completa:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Conserve la línea Defaults logfile. Escriba :wq y pulse Enter para guardar y salir. Compruebe la pertenencia al grupo:
groups trusted_advisor
El resultado no debería incluir sudo.
Probar la revocación del acceso a sudo
Compruebe que el usuario ya no pueda ejecutar comandos con sudo:
su - trusted_advisor
Introduzca la contraseña cuando se le solicite.
Intente ejecutar un comando con sudo:
sudo -n ls /root
Ahora debería aparecer el mensaje trusted_advisor is not in the sudoers file. El comando debe fallar.
Salga de la sesión del usuario trusted_advisor:
exit
Volver a conceder acceso a sudo
Para este laboratorio, vuelva a añadir el usuario al grupo sudo:
sudo usermod -aG sudo trusted_advisor
Compruebe que el usuario vuelva a pertenecer al grupo sudo:
groups trusted_advisor
Esta vez, el resultado debería incluir «sudo» en la lista de grupos.
Resumen
En este laboratorio ha aprendido técnicas esenciales para administrar usuarios y controlar privilegios en Linux. Ha practicado los siguientes conceptos y operaciones:
Crear usuarios: aprendió a crear cuentas de usuario con el comando
adduser.Conceder privilegios de sudo: aprendió a conceder capacidades administrativas a los usuarios añadiéndolos al grupo
sudo.Restringir el acceso a sudo: practicó la aplicación del principio de mínimo privilegio al limitar el acceso de un usuario a comandos específicos mediante el archivo sudoers.
Registrar y supervisar sudo: exploró cómo se registran las actividades de sudo y por qué es importante revisar esos registros por motivos de seguridad.
Administrar el acceso a sudo: aprendió a conceder y quitar privilegios de sudo a los usuarios según sea necesario.
Estas habilidades son fundamentales para la administración de sistemas Linux y la seguridad. Si administra correctamente los privilegios de usuario, puede mantener un sistema seguro en el que los usuarios tengan acceso a los recursos que necesitan sin poner en riesgo la integridad ni la seguridad del sistema.



