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 `sudo` se 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 `sudo` durante 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 grupo `sudo` ejecuten 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 usuario `username` ejecute el comando `apt update` como 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.