En los servidores Linux trabajas con permisos de usuario que determinan lo que puedes y lo que no puedes hacer. Root es el superusuario todopoderoso, mientras que sudo te da permisos elevados de forma temporal. En Theory7 siempre recomendamos usar estos permisos con seguridad. En esta guía te explicamos todo sobre root, sudo y las buenas prácticas.

¿Qué es root?

Root es la cuenta de superusuario de Linux, con permisos ilimitados. Esto significa que root tiene acceso a todos los archivos y ajustes del sistema. Root puede:

  • Leer y modificar todos los archivos
  • Instalar o eliminar cualquier software
  • Modificar la configuración del sistema
  • Iniciar y detener todos los servicios
  • Gestionar a otros usuarios

Esto convierte a root en un usuario potente, pero también peligroso. Un error como root puede destruir todo tu sistema. Por ejemplo, eliminar por accidente archivos esenciales del sistema puede dejarlo inutilizable. Por eso recomendamos no trabajar nunca de forma permanente como root. En su lugar, puedes usar sudo para obtener permisos elevados temporales.

Iniciar sesión como root

Inicio de sesión directo como root por SSH

ssh root@server-ip

Esto solo funciona si el inicio de sesión como root está permitido en sshd_config. Sin embargo, no conviene usar este método por los riesgos de seguridad que conlleva. Es mejor iniciar sesión como usuario normal y usar después sudo.

Cambiar a root desde un usuario normal

su -

Escribe la contraseña de root. El - proporciona un shell de inicio de sesión completo con las variables de entorno correctas. Resulta útil si quieres iniciar una sesión con el entorno de root.

Shell de root mediante sudo

sudo -i

Esto abre un shell de root si tienes permisos de sudo. Es una forma segura de trabajar como root sin tener que escribir la contraseña de root.

¿Qué es sudo?

Sudo (superuser do) permite a los usuarios autorizados ejecutar comandos como root o como otro usuario. Las ventajas de sudo frente a trabajar directamente como root son numerosas:

  • Registro: Todos los comandos de sudo se registran, lo que ayuda a hacer un seguimiento de la actividad del sistema.
  • Temporal: Los permisos caducan al poco tiempo, lo que reduce la probabilidad de abuso.
  • Control granular: Puedes permitir comandos concretos, de modo que los usuarios solo tengan acceso a lo que necesitan.
  • Sin contraseña de root: Los usuarios no necesitan conocer la contraseña de root, lo que aumenta la seguridad.

Usar sudo

Sintaxis básica

sudo commando

Por ejemplo:

sudo apt update

Se te pedirá tu propia contraseña (no la de root). Esto aumenta la seguridad, porque solo los usuarios autorizados tienen acceso a los permisos elevados.

Comando como otro usuario

sudo -u www-data commando

Esto es útil para probar los permisos del servidor web. Por ejemplo, si tienes una aplicación web que se ejecuta con el usuario www-data, con este comando puedes comprobar si la aplicación funciona correctamente con los permisos adecuados.

Abrir un shell de root

sudo -i

O para un shell de root temporal:

sudo -s

La diferencia es que -i da un shell de inicio de sesión completo con el entorno de root, mientras que -s te mantiene en el shell actual.

Crear un usuario con sudo

Paso 1: Crear el usuario

sudo adduser nieuwegebruiker

Sigue las indicaciones para la contraseña y los datos. Es importante elegir una contraseña segura para proteger tu sistema.

Paso 2: Añadirlo al grupo sudo

En Ubuntu/Debian:

sudo usermod -aG sudo nieuwegebruiker

En CentOS/RHEL:

sudo usermod -aG wheel nieuwegebruiker

Paso 3: Probar

Inicia sesión como el nuevo usuario y prueba:

su - nieuwegebruiker
sudo whoami

La salida debe ser root, lo que confirma que el usuario se ha añadido correctamente al grupo sudo.

Configuración de sudoers

El archivo sudoers determina quién puede hacer qué. No lo edites nunca directamente; para ello, usa visudo de esta forma:

sudo visudo

Este comando comprueba la sintaxis antes de guardar el archivo, lo que evita que te bloquees a ti mismo por un error.

Reglas básicas de sudoers

# Gebruiker mag alles
gebruiker ALL=(ALL:ALL) ALL

# Groep mag alles
%sudo ALL=(ALL:ALL) ALL

# Gebruiker mag alles zonder wachtwoord
gebruiker ALL=(ALL) NOPASSWD: ALL

# Gebruiker mag alleen specifieke commando's
gebruiker ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl

Explicación de la sintaxis

WIE WAAR=(ALS_WIE) WAT
  • WIE (quién): Usuario o %grupo
  • WAAR (dónde): En qué hosts (ALL para todos)
  • ALS_WIE (como quién): Con qué usuario se ejecuta
  • WAT (qué): Qué comandos se permiten

Buenas prácticas

No trabajes nunca de forma permanente como root

Inicia sesión como usuario normal y usa sudo cuando lo necesites. Así reduces al mínimo el riesgo de causar daños involuntarios en tu sistema.

Usa sudo en lugar de su

Sudo lo registra todo y no requiere una contraseña de root compartida. Esto aumenta la seguridad y facilita saber quién ha hecho qué.

Limita los permisos de sudo

Da a los usuarios solo los permisos que necesitan. Puedes configurarlo, por ejemplo, así:

webmaster ALL=(www-data) /usr/bin/composer, /usr/bin/php

Con esto, el usuario webmaster solo puede ejecutar los comandos indicados como el usuario www-data.

Configura un tiempo de espera para sudo

En sudoers:

Defaults timestamp_timeout=5

Pasados 5 minutos hay que volver a escribir la contraseña. Esto evita que alguien sin autorización obtenga permisos elevados si te alejas un momento del ordenador.

Comprueba quién tiene permisos de sudo

getent group sudo
# of op CentOS
getent group wheel

Esto te da una lista de los usuarios que tienen permisos de sudo, para que puedas gestionarlos si hace falta.

Solución de problemas

User is not in the sudoers file

El usuario no tiene permisos de sudo. Como root o con un usuario de sudo existente:

sudo usermod -aG sudo gebruikersnaam

Has olvidado la contraseña de sudo

Tu contraseña de sudo es tu propia contraseña, no la de root. Si la has olvidado, inicia sesión como root para restablecerla:

passwd gebruikersnaam

Error de sintaxis en sudoers

Si visudo indica que hay un error de sintaxis:

sudo visudo -c

Esto muestra dónde está el error, para que puedas corregirlo.

¿Necesitas ayuda?

Estamos a tu disposición. ¿Te has encontrado con algún problema o tienes preguntas? Nuestro equipo de soporte te ayuda personalmente. Envíanos un mensaje a través del sistema de tickets: normalmente respondemos en unas horas y buscamos la solución contigo.

¿Buscas hosting WordPress? Consulta nuestra oferta.