Descripción general de sudo
En un sistema Linux, el usuario root tiene todos los privilegios. Sin embargo, realizar todas las tareas como root puede ser riesgoso, ya que un error podría causar daños catastróficos al sistema. `sudo` es un mecanismo de seguridad importante que permite a los usuarios normales obtener los privilegios necesarios de administrador de manera **temporal**, minimizando los riesgos de seguridad y permitiendo la administración del sistema.
Cómo funciona sudo
sudo solicita la contraseña del usuario (no la contraseña de root) cuando se ejecuta el comando sudo, y si esta es correcta, ejecuta el comando con los privilegios de root o de otro usuario según las reglas definidas en el archivo sudoers. Una vez autenticado, el usuario puede usar sudo sin tener que volver a ingresar la contraseña durante un período de tiempo determinado (por defecto, 5 minutos).
Funciones principales de sudo
- Refuerzo de seguridad: Reduce los riesgos de seguridad al evitar iniciar sesión innecesariamente como usuario root.
- Rastreo de responsabilidad: Todos los comandos ejecutados a través de
sudose registran, permitiendo rastrear quién ejecutó qué comando administrativo y cuándo. - Control de privilegios granulares: A través del archivo
sudoers, se puede controlar de manera precisa qué comandos pueden ejecutar los usuarios o grupos específicos con privilegios de root. - Facilitación de reingreso de contraseña: Una vez autenticado, el usuario puede usar
sudodurante un período de tiempo sin necesidad de volver a ingresar la contraseña, lo que resulta conveniente.
🔑 Archivo sudoers
/etc/sudoers
Todas las configuraciones de privilegios de sudo se definen en el archivo /etc/sudoers. Este archivo es muy sensible, por lo que debe ser editado utilizando el comando visudo. visudo verifica automáticamente errores de sintaxis para evitar que la funcionalidad de sudo se rompa debido a configuraciones incorrectas.
Opciones principales del comando sudo
El comando `sudo` permite controlar la forma en que se ejecutan los comandos a través de diversas opciones, además del aumento de privilegios.
1. Uso básico
2. Opciones relacionadas con usuarios y shells
3. Opciones relacionadas con autenticación y listas
Comando generado:
Combina los comandos.
Descripción:
`sudo` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Configuración del archivo sudoers (usando visudo)
Los privilegios de `sudo` se controlan a través del archivo `/etc/sudoers`. En lugar de modificar este archivo directamente, debe ser editado de forma segura utilizando el comando `visudo`. `visudo` verifica errores de sintaxis para evitar romper la funcionalidad de `sudo`.
Editar el archivo sudoers
sudo visudo
Edita el archivo `sudoers` de forma segura con privilegios de root. El editor predeterminado puede ser `vi`.
Formato general del archivo sudoers
Los elementos del archivo sudoers se definen en el formato User Host=(RunAs) NOPASSWD: Command. La configuración más común es permitir que los usuarios pertenecientes a un grupo específico tengan privilegios de sudo para todos los comandos.
Ejemplos de configuración
A continuación se presentan ejemplos de configuraciones que se pueden ver a menudo en el archivo sudoers.
%sudo ALL=(ALL:ALL) ALL: Permite que todos los usuarios que pertenecen al gruposudoejecuten cualquier comando (ALL) con los privilegios de cualquier usuario (ALL) y grupo (ALL) desde cualquier host (ALL). (Se requiere contraseña)username ALL=(ALL) NOPASSWD: /usr/bin/apt update: Permite que el usuariousernameejecute el comandoapt updatecomo root sin necesidad de ingresar una contraseña.
Ejemplos de uso
Aprende a realizar tareas del sistema con privilegios de administrador a través de varios ejemplos de uso del comando `sudo`.
Actualizar paquetes del sistema
sudo apt update
El comando para actualizar la lista de paquetes del sistema requiere privilegios de administrador, por lo que se usa `sudo`.
Copiar un archivo a un directorio específico
sudo cp my_config.conf /etc/
Copia el archivo `my_config.conf` a `/etc/`, un directorio donde generalmente no se tiene permiso de escritura.
Ejecutar un comando como otro usuario
sudo -u www-data ls /var/www/html
Ejecuta el comando `ls /var/www/html` con los privilegios del usuario `www-data` (usualmente el proceso del servidor web) para probar los permisos de acceso a los archivos de ese usuario.
Cambiar a un shell de root
sudo -i
Ingresa la contraseña del usuario actual para obtener un shell completamente cambiado al entorno del usuario root. Después de completar el trabajo, puedes volver a tu usuario original ingresando `exit`.
Verificar privilegios de sudo del usuario actual
sudo -l
Verifica qué comandos puede ejecutar el usuario actualmente conectado a través de `sudo`, si se requiere contraseña, etc.