-
Notifications
You must be signed in to change notification settings - Fork 0
04 Cambio de Identidad y Privilegios
-
Cambio de Privilegios con
sudo -
Cambio de Identidad con
su -
Cambio de Grupo con
newgrp - Tabla Comparativa de los Comandos
su,sudoynewgrp - Recursos Recomendados
- Referencias
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.
| 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 visudoEl 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).
| 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 -.
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.
| 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.
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 |
-
Miller, T. (07 de junio de 2025). SUDO(8). https://man.archlinux.org/man/sudo.8
-
util-linux (01 de abril de 2026). SU(1). https://man.archlinux.org/man/su.1
-
Haardt, M. & Orbaek, P. (01 de abril de 2026). NEWGRP(1). https://man.archlinux.org/man/newgrp.1
- Definición y Estructura de un Shell
- Los Diferentes Tipos de Shell
- Definición y Sintaxis de un Comando
- Variables, Alias y Funciones
- Comandos de Utilidad y Consulta
- Linux como Sistema Multiusuario
- Introducción a los Usuarios y Grupos
- Gestión de Usuarios
- Gestión de Grupos
- Gestión de Contraseñas
- Búsqueda de Información de Usuarios y Grupos con
getent
- Atributos de Archivos: Propiedad y Permisos de los Archivos
- Cambio de Propiedad y Permisos
umask: Permisos Predeterminados de Archivos- Cambio de Identidad y Privilegios
- Gestión de Paquetes (Package Management)
- Compresión y Archivado de Archivos
- Optimización y Conversion de Archivos