AccesoInicial

Usuarios y grupos en Linux

Entiende como Linux identifica a los usuarios, como se organizan en grupos y por que esto importa para la seguridad.

Principiantelinuxpermissions

Introducción

En el modulo anterior aprendiste a navegar el sistema de archivos, manipular archivos, buscar contenido y conectar comandos con pipes. Todo eso lo hiciste como un usuario concreto en una maquina concreta.

Pero, ¿que significa realmente ser un "usuario" en Linux? ¿Por que ciertos archivos solo los puede leer root? ¿Que son los grupos y por que existen? Este modulo empieza con esas preguntas, porque entender usuarios y grupos es la base para entender permisos, y entender permisos es la base para entender la escalada de privilegios.

¿Por que necesitas entender los usuarios?

Linux es un sistema multiusuario. Cada persona, servicio o programa que interactua con el sistema lo hace como un usuario concreto. El sistema decide que puede hacer cada usuario basandose en su identidad y en los grupos a los que pertenece.

En seguridad ofensiva, lo primero que haces al acceder a un sistema es averiguar quien eres y que puedes hacer. Eso depende directamente del modelo de usuarios y grupos. Un atacante que entiende este modelo puede identificar rutas de escalada que alguien sin ese conocimiento pasa por alto.

El modelo de usuarios y grupos

Usuarios

Cada usuario en Linux tiene:

  • Un nombre de usuario (como user o www-data)
  • Un UID (User ID): un numero que el sistema usa internamente para identificar al usuario
  • Un directorio home: donde se almacenan sus archivos personales (generalmente /home/nombre)
  • Un shell: el programa que se ejecuta cuando el usuario abre una terminal (generalmente /bin/bash)

El usuario root (UID 0) es el administrador del sistema. Puede hacer absolutamente todo: leer cualquier archivo, modificar cualquier configuracion, ejecutar cualquier programa. Por eso es el objetivo final de una escalada de privilegios.

Grupos

Los grupos son una forma de organizar usuarios para asignarles permisos en comun. Cada usuario tiene:

  • Un grupo primario: asignado al crear la cuenta. Generalmente tiene el mismo nombre que el usuario.
  • Grupos secundarios: grupos adicionales a los que el usuario puede pertenecer.

Por ejemplo, un usuario que pertenece al grupo sudo puede ejecutar comandos como root. Un usuario en el grupo docker puede ejecutar contenedores. La pertenencia a ciertos grupos puede ser un vector de escalada de privilegios.

Usuarios y grupos en la practica

Empecemos con lo que ya conoces: ¿quien soy?

bash
1$ whoami
2user
3

whoami devuelve tu nombre de usuario. Para ver informacion mas detallada, usa id:

bash
1$ id
2uid=1000(user) gid=1000(user) grupos=1000(user),27(sudo),100(users)
3

Este comando te dice tres cosas importantes:

  • uid=1000(user): tu User ID es 1000 y tu nombre es user
  • gid=1000(user): tu grupo primario tiene ID 1000
  • grupos=...: perteneces a los grupos user, sudo y users

La presencia del grupo sudo es significativa: significa que este usuario puede ejecutar comandos como root. En un pentest, descubrir que tu usuario pertenece a ciertos grupos es informacion critica.

Para ver la lista de todos los usuarios del sistema, puedes consultar /etc/passwd:

bash
1$ cat /etc/passwd | head -5
2root:x:0:0:root:/root:/bin/bash
3daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
4bin:x:2:2:bin:/bin:/usr/sbin/nologin
5sys:x:3:3:sys:/dev:/usr/sbin/nologin
6sync:x:4:65534:sync:/bin:/bin/sync
7

Cada linea tiene el formato nombre:x:UID:GID:descripcion:home:shell. Los campos mas utiles:

  • El nombre de usuario (primer campo)
  • El UID (tercer campo)
  • El shell (ultimo campo): si es /usr/sbin/nologin o /bin/false, ese usuario no puede iniciar sesion interactiva

Para ver los grupos del sistema y sus miembros:

bash
1$ cat /etc/group | grep sudo
2sudo:x:27:user
3

Esto confirma que el grupo sudo tiene GID 27 y que user es miembro.

Identidad como punto de partida

En seguridad ofensiva, la primera pregunta siempre es: ¿quien soy en este sistema? No en el sentido filosofico, sino en el sentido de: ¿que UID tengo, a que grupos pertenezco, que puedo hacer con esta identidad?

El flujo de reconocimiento de identidad es:

  1. whoami: nombre de usuario
  2. id: UID, GID, grupos
  3. /etc/passwd: lista completa de usuarios
  4. /etc/group: pertenencia a grupos

Este reconocimiento tarda segundos pero informa todo lo que haces despues: si tienes acceso a sudo, si perteneces a grupos privilegiados, si hay otros usuarios interesantes en el sistema.

Errores comunes

Advertencia

Confundir root con sudo. Root es el usuario con UID 0. Sudo es un mecanismo que permite a ciertos usuarios ejecutar comandos como root temporalmente. Pertenecer al grupo sudo no te convierte en root; te permite actuar como root cuando lo necesites, previa autenticacion.

Advertencia

Ignorar las cuentas de servicio. No todos los usuarios en /etc/passwd son personas. Muchos son cuentas de servicio (como www-data, mysql, daemon) que ejecutan programas especificos. Estas cuentas tambien pueden ser vectores de escalada si tienen permisos mal configurados.

Consejo

`id` es mas informativo que `whoami`. Acostumbrate a usar id como primer comando en cualquier sistema nuevo. Te da el nombre, el UID y todos los grupos en una sola linea.

Conclusión

Linux identifica a cada usuario con un UID y lo organiza en grupos con GIDs. El usuario root (UID 0) tiene acceso total al sistema. Tu identidad determina que archivos puedes leer, que programas puedes ejecutar y que operaciones puedes realizar. Con id, /etc/passwd y /etc/group puedes conocer la estructura de usuarios de cualquier sistema. En la siguiente leccion aprenderas como funcionan los permisos de archivos, el mecanismo que decide exactamente que puede hacer cada usuario con cada archivo.