Volver al inicio

Gestión de usuarios Linux UID GID grupos

El artículo desglosa la identificación de usuarios por UID/GID en Linux, modelo de acceso, archivos /etc/passwd shadow group. Comandos id getent useradd vipw mostrados para diagnósticos y gestión de cuentas.

Gestión de usuarios Linux: UID grupos useradd
Advertisement 728x90

Gestión de usuarios y grupos en Linux: UID, GID y control de cuentas

El núcleo de Linux trabaja con identificadores numéricos: UIDs y GIDs. Un nombre de usuario es simplemente un alias legible por humanos almacenado en /etc/passwd. Los procesos y archivos se vinculan a estos números, por lo que cambiar un nombre de usuario sin conservar el UID original provocará la pérdida de acceso a recursos.

Comprueba el usuario actual:

id
# uid=1001(deployer) gid=1001(deployer) groups=1001(deployer),27(sudo),998(docker)

id -u  # Solo UID
whoami # Solo nombre de usuario
getent passwd deployer

getent consulta módulos NSS, incluyendo LDAP, a diferencia de leer directamente los archivos.

Google AdInline article slot

Modelo de acceso y propiedad

Cada inodo almacena un propietario (UID) y un grupo (GID). El kernel verifica los permisos en este orden: UID/GID del proceso → propietario? → grupo? → otros. La primera coincidencia determina el acceso.

Ejemplo:

ls -la /var/log/nginx/
# -rw-r----- 1 www-data adm 187234 Mar 26 10:41 access.log

El propietario es www-data, el grupo es adm. Un proceso que se ejecuta como www-data obtiene acceso de propietario, ignorando su membresía en grupos.

Google AdInline article slot

Rangos de UID:

  • 0: root
  • 1–999: cuentas de sistema (daemons, sin inicio de sesión)
  • 1000+: usuarios regulares
  • 65534: nobody

Configurados en /etc/login.defs.

Las cuentas de sistema usan /usr/sbin/nologin o /bin/false para evitar el inicio de sesión:

Google AdInline article slot
awk -F: '$3 < 1000 && $3 > 0 {print $1, $3, $7}' /etc/passwd

Grupos: acceso compartido

El grupo primario (GID en /etc/passwd) se aplica a los nuevos archivos. Los grupos secundarios se listan en /etc/group.

Verifica la membresía:

groups  # Grupos actuales
getent group docker  # Miembros
docker:x:998:deployer,ci

Los grupos simplifican el control de acceso: añade un usuario al grupo docker para otorgar acceso al socket sin necesidad de sudo.

Archivos de configuración

/etc/passwd (accesible por todos):

deployer:x:1001:1001:Deploy Bot,,:/home/deployer:/bin/bash

Campos: nombre de usuario | marcador de contraseña (x) | UID | GID | GECOS | directorio home | shell.

/etc/shadow (solo root): contiene hashes SHA-512 o yescrypt, y ajustes de expiración de contraseñas.

deployer:$6$rounds=5000$xPwF...$kE9...hash...:19800:0:99999:7:::

/etc/group:

docker:x:998:deployer,ci-bot

Comandos seguros para edición:

vipw    # Editar passwd con bloqueo
vigr    # Editar grupo
pwck    # Validar configuración

Creación y configuración de usuarios

Usa useradd con opciones clave:

| Opción | Descripción |

|--------|-------------|

| -m | Crear directorio home |

| -s | Establecer shell predeterminado |

| -G | Añadir grupos secundarios |

| -r | Cuenta de sistema |

| -u | Especificar UID |

Ejemplos:

useradd -m -s /bin/bash -G sudo,docker ivan
useradd -r -s /usr/sbin/nologin ci-bot

passwd ivan  # Establecer contraseña
chpasswd <<< 'ivan:secret'
passwd -e ivan  # Forzar cambio de contraseña en el siguiente inicio de sesión

useradd -m copia desde /etc/skel y establece la propiedad del directorio home.

umask resta de 0666 (archivos) o 0777 (directorios). Predeterminado: 0022.

Entorno y plantillas

/etc/skel almacena plantillas para las nuevas carpetas de usuario: .bashrc, .profile.

Configuraciones globales:

  • /etc/default/useradd: valores predeterminados para useradd
  • /etc/profile.d/*.sh: scripts de entorno para inicios de sesión
  • /etc/login.defs: umask, ajustes de rango de UID

Puntos clave:

  • El UID controla el acceso, no el nombre de usuario.
  • Usa getent en lugar de cat /etc/passwd para búsquedas compatibles con NSS.
  • Los grupos son el mecanismo principal para delegar privilegios.
  • Siempre edita archivos de configuración con vipw o vigr.
  • Las cuentas de sistema deben tener /usr/sbin/nologin o /bin/false y UID < 1000.

— Editorial Team

Advertisement 728x90

Leer después