Skip to content

04 Cambio de Identidad y Privilegios

Alan edited this page Jun 13, 2026 · 1 revision

Cambio de Privilegios e Identidad

Tabla de Contenidos

Cambio de Privilegios con sudo

Acerca de sudo

El comando sudo (superuser do) permite ejecutar comandos como el superusuario (root) o como cualquier otro usuario o grupo. Adicionalmente mantiene un registro de auditoría de los comandos ejecutados y puede requerir autenticación mediante contraseña, cuya caché expira tras un tiempo configurable (por defecto 15 minutos). Los permisos se configuran en el archivo /etc/sudoers, el cual debe editarse exclusivamente con el comando visudo para evitar errores de sintaxis.

Opciones de sudo

Uso Descripción Ejemplo
sudo COMMAND Ejecuta un comando como superusuario. Es probable que debas pertenecer al grupo sudo (Debian/Ubuntu), al grupo wheel (RHEL/Arch) y/o a algún otro grupo configurado en /etc/sudoers sudo apt update
sudo -u USER COMMAND Ejecuta un comando como el usuario USER sudo -u www-data cat /var/log/apache2/error.log
sudo -g GROUP COMMAND Ejecuta un comando con el grupo primario GROUP sudo -g docker docker ps
sudo -e FILE ... Abre los archivos especificados con el editor definido en $SUDO_EDITOR, $VISUAL o $EDITOR para editarlos de forma segura (equivalente a sudoedit) sudo -e /etc/hosts
sudo -s [-u LOGIN] Inicia una shell interactiva como root o como LOGIN, heredando las variables de entorno del usuario que invoca sudo, pero estableciendo $HOME al del usuario destino sudo -s -u postgres
sudo -i [-u LOGIN] Inicia una shell de login como root o como LOGIN, cargando el entorno completo del usuario destino y ejecutando sus archivos de inicio (e.g., .profile, .bash_profile) sudo -i -u deploy
sudo -l [-U USER] Lista los comandos que el usuario actual (o USER) tiene permitido ejecutar con sudo según la configuración de /etc/sudoers sudo -l -U alice
sudo -v Renueva el timestamp de autenticación, extendiendo la sesión activa sin ejecutar ningún comando sudo -v
sudo -k Invalida inmediatamente el timestamp de autenticación, forzando que el próximo sudo solicite contraseña sudo -k
sudo -b COMMAND Ejecuta el comando COMMAND en segundo plano (background) sudo -b tcpdump -i eth0
sudo -- COMMAND Indica el fin de las opciones de sudo; útil cuando COMMAND comienza con - sudo -- find / -name "*.conf"

Note

En distribuciones como Ubuntu y Debian, sudo -i permite iniciar sesión como root con su entorno completo, lo que habilita la ejecución de comandos ubicados en /sbin y /usr/sbin. En estas distribuciones, la cuenta root suele estar bloqueada por defecto, por lo que sudo -i es el método estándar para obtener una sesión root.

Tip

Para editar /etc/sudoers usa siempre sudo visudo, que valida la sintaxis antes de guardar y evita dejar el sistema sin acceso administrativo por un error tipográfico.

Se puede cambiar el editor predeterminado usado por visudo con la variable de entorno SUDO_EDITOR, por ejemplo:

# Asignar `nano` a la variable `SUDO_EDITOR` solo para el comando `visudo`
sudo SUDO_EDITOR='nano' visudo

# Asignar `nano` a la variable `SUDO_EDITOR` en la sesión de shell y después
# ejecutar `visudo`
SUDO_EDITOR='nano'
sudo visudo

Cambio de Identidad con su

Acerca de su

El comando su (substitute user) permite sustituir la identidad del usuario o del grupo actual, iniciando una nueva sesión de shell. Cuando se ejecuta sin argumentos (su), solicita la contraseña de root y abre una shell como dicho usuario. A diferencia de sudo, su requiere conocer la contraseña del usuario destino (no la del usuario actual).

Opciones de su

Comando Descripción Ejemplo
su [LOGIN] Inicia una shell como root o como LOGIN, manteniendo el entorno del usuario actual (e.g., $HOME, $PATH) su alice
su - [LOGIN] / su -l [LOGIN] Inicia una shell de login como root o como LOGIN, cargando completamente el entorno del usuario destino (equivalente al inicio de sesión real) su - bob
su -m [LOGIN] / su -p [LOGIN] Inicia sesión como root o como LOGIN preservando el entorno completo del usuario que invoca el comando (no cambia $HOME, $SHELL, etc.) su -p alice
su -s SHELL [LOGIN] Inicia sesión usando la shell SHELL en lugar de la shell predeterminada del usuario destino su -s /bin/sh root
su -g GROUP [LOGIN] Inicia sesión como root asignando GROUP como grupo primario (requiere privilegios de root o la opción habilitada en PAM) su -g developers
su -G GROUP1[,GROUP2,...] [LOGIN] Inicia sesión especificando grupos suplementarios adicionales. Si no se usa -g, el primer grupo de la lista se convierte en el grupo primario su -g staff -G dev,ops alice
su -c COMMAND [LOGIN] Ejecuta COMMAND como root o como LOGIN y regresa al usuario original al terminar su -c "systemctl restart nginx" root
su -w VAR1[,VAR2,...] [LOGIN] Preserva las variables de entorno especificadas al cambiar de usuario (no disponible en todas las implementaciones) su -w HTTP_PROXY alice

Note

En Ubuntu y Debian, la cuenta root está bloqueada por defecto, por lo que su sin argumentos fallará a menos que se haya establecido una contraseña de root manualmente. En estos sistemas se recomienda usar sudo -i o sudo su -.

Cambio de Grupo con newgrp

Acerca de newgrp

El comando newgrp permite al usuario cambiar temporalmente su grupo primario activo dentro de la sesión actual, sin cerrar sesión. Esto afecta los permisos de los nuevos archivos y directorios creados durante esa sesión (cuyo grupo propietario será el grupo activo). El usuario debe ser miembro del grupo destino o, en algunas implementaciones, el grupo debe tener contraseña configurada en /etc/gshadow. Al ejecutar exit se regresa al grupo primario original.

Opciones de newgrp

Comando Descripción Ejemplo
newgrp GROUP Cambia el grupo primario activo al grupo GROUP. Los archivos creados a partir de ese momento pertenecerán a GROUP. Ejecuta exit para volver al grupo anterior newgrp docker
newgrp Sin argumentos, restaura el grupo primario original del usuario según /etc/passwd newgrp

Tip

Puedes verificar tu grupo primario activo en cualquier momento con el comando id o con id -gn para mostrar únicamente el nombre del grupo.

Tabla Comparativa de los Comandos su, sudo y newgrp

Aunque su y sudo pueden utilizarse para realizar tareas similares, tienen ciertas diferencias que es importante tener en cuenta al momento de decidir cuándo usar cuál. La siguiente tabla resume las diferencias clave entre su, sudo y newgrp.

Comando Requiere contraseña de... Registro de auditoría Caso de uso típico
sudo Usuario actual Sí (/var/log/auth.log) Ejecutar comandos puntuales con privilegios elevados
su Usuario destino Sí (via PAM / journalctl en systemd) Iniciar sesión completa como otro usuario
newgrp Grupo destino (si tiene clave) No Cambiar el grupo activo para crear archivos

Recursos Recomendados

Referencias

Introducción a los Sistemas Operativos

Introducción a Linux

Licencias de Software

Archivos y Directorios

Introducción a la CLI

Manipulación de Archivos y Directorios

Documentación y Exploración de Comandos

Redirección

Búsqueda de Archivos y Texto

Editores de Texto de Terminal

Gestión de Usuarios y Grupos

Propiedad y Permisos

Herramientas Esenciales

Hardware

Apéndice

Clone this wiki locally