Inicio > Gestión de paquetes y sistema > sudo

Guía del comando sudo: Ejecutar comandos con privilegios de administrador

El comando `sudo` (abreviatura de substitute user do o superuser do) es una herramienta que permite a los usuarios normales ejecutar programas con los privilegios de otro usuario (generalmente el usuario root) en sistemas operativos Linux y Unix. Esto permite realizar tareas administrativas de manera más segura, manteniendo la seguridad del sistema en lugar de realizar todas las tareas directamente con la cuenta root. A través de esta guía, aprenderás los aspectos básicos del uso de `sudo` y consideraciones de seguridad importantes.

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.


Comandos de la misma categoría