Administración de servidores GNU/Linux

Clase 8: Usuarios, grupos e identidad

Módulo 1 — Operación de Sistemas Operativos GNU/Linux

Temas de la clase 8

Exportar a PDF

Objetivos de la clase

Al finalizar esta clase vas a poder:

  • Explicar cómo identifica Linux a un usuario y a un grupo.
  • Distinguir la función de /etc/passwd, /etc/shadow y /etc/group.
  • Reconocer las herramientas para crear cuentas y administrar pertenencias.
  • Diferenciar los grupos registrados para una cuenta de los grupos de una sesión existente.
  • Interpretar la identidad asociada a un archivo y sus permisos básicos.

Identidad en Linux

El sistema trabaja con números y nos muestra nombres

Quién sos para el sistema

Comandos para saber quiénes somos:

whoami
id
uid=1000(cristian) gid=1000(cristian) groups=1000(cristian),27(sudo)
  • UID: identificador del usuario.
  • GID: identificador del grupo principal de la sesión.
  • Grupos suplementarios: otras pertenencias de esa sesión.

groups también permite consultar los grupos. En la salida de id, la lista groups incluye el principal.

Estar en el grupo sudo permite solicitar las acciones autorizadas por su configuración. La cuenta sigue siendo un usuario común mientras no eleva privilegios.

Repaso: root y sudo

  • root es la cuenta administrativa, con UID 0.
  • sudo permite ejecutar un comando como otro usuario, normalmente root, según las autorizaciones configuradas.
  • Tener permiso para usar sudo no convierte nuestra cuenta en root.
whoami       # cristian
sudo whoami  # root
whoami       # cristian

Números y nombres

Los archivos almacenan el UID de su owner y un GID. Los programas consultan las bases de datos del sistema para mostrar los nombres correspondientes.

Si se elimina una cuenta, un archivo puede conservar su UID aunque ya no exista un nombre que mostrar. Eliminar la cuenta no transfiere automáticamente sus archivos a otro usuario.

ls -l /etc/hosts
ls -ln /etc/hosts

-n muestra UID y GID sin traducirlos a nombres.

Rangos habituales de UID

  • UID 0 corresponde a root.
  • En Debian son habituales los UID bajos para cuentas de sistema.
  • Las cuentas comunes creadas con adduser suelen empezar en 1000.

Los rangos son convenciones configurables. El número por sí solo no demuestra si una cuenta corresponde a una persona o a un servicio.

Consultas

UID → GID → nombres → identidad de la sesión

Archivos de cuentas de usuarios

Qué contiene cada archivo y para qué se consulta

Datos de la cuenta

/etc/passwd · campos separados por :

cristian:x:1000:1000:Cristian,,,:/home/cristian:/bin/bash

El grupo principal de la cuenta se identifica en este archivo, mediante su GID.

Información de contraseña

/etc/passwd es normalmente legible por los usuarios. /etc/shadow restringe el acceso a la información de contraseñas y su vigencia.

Shadow puede guardar un hash, que permite verificar una contraseña. No es la contraseña en texto legible ni un cifrado que se descifre para recuperarla.

ana:$y$...:20347:0:99999:7:::

Esta línea es ficticia. Nos interesa entender la función del archivo, sin memorizar todos sus campos.

Restringir la lectura del hash reduce su exposición a intentos de adivinación fuera del sistema. También importan el algoritmo y la fortaleza de la contraseña.

Estados de una contraseña

Campo en shadow Qué permite concluir
Hash válido, por ejemplo con prefijo $y$ Hay un hash utilizable para verificar la contraseña.
Comienza con ! La contraseña está bloqueada.
* No es un hash válido para autenticarse con contraseña; no describe la historia de la cuenta.
Vacío No hay contraseña; la aceptación del ingreso depende del mecanismo de autenticación y su política.

Bloquear una contraseña no equivale a deshabilitar todas las formas de acceso. Una clave SSH podría seguir permitiendo el ingreso según la configuración.

passwd -S consulta el estado sin mostrar el hash: L indica contraseña bloqueada, P contraseña utilizable y NP ausencia de contraseña.

Datos del grupo

/etc/group · campos separados por :

sudo:x:27:cristian

La pertenencia por grupo principal no necesita aparecer en esta lista. No encontrar allí un nombre no alcanza para concluir que no pertenece al grupo.

Consultar con getent

getent passwd cristian
getent group sudo

getent consulta las fuentes de cuentas configuradas en el sistema. En nuestra VM son locales; en otro servidor pueden incluir un directorio central.

Consulta Alcance
Leer /etc/passwd Contenido del archivo local.
getent passwd usuario Entrada de la cuenta en las fuentes configuradas.
getent group grupo Entrada del grupo en las fuentes configuradas.

El comando getent nos puede servir como alternativa al clásico grep usuario /etc/passwd, por ejempo.

Consultas

passwd: cuenta → shadow: contraseña → group: grupo → getent: consulta

Usuarios, grupos y sesiones

Una cuenta puede pertenecer a varios grupos

Grupo principal y suplementarios

  • La cuenta tiene un grupo principal configurado.
  • Puede pertenecer además a grupos suplementarios.
  • Ambos intervienen en el acceso por grupo.
  • Habitualmente, un archivo nuevo recibe el grupo efectivo del proceso que lo crea. Los directorios con SGID son una excepción que veremos en la clase 9.

Debian suele crear un grupo con el mismo nombre que cada usuario común. Ese grupo privado organiza pertenencias, pero no garantiza por sí solo privacidad: también cuentan los permisos del archivo y de la ruta.

Administrar cuentas

Necesidad Herramienta y ejemplo
Crear una cuenta común sudo adduser ana
Crear un grupo sudo addgroup desarrollo
Agregar una cuenta a un grupo sudo adduser ana desarrollo
Cambiar la contraseña propia passwd
Consultar la identidad registrada de una cuenta id ana

Con la configuración habitual de Debian, adduser prepara el home, el grupo del mismo nombre y solicita una contraseña.

Los ejemplos muestran la función de cada herramienta. La creación de Ana, Bruno y el grupo de trabajo se realiza en el laboratorio.

Agregar no es reemplazar

En documentación también aparece esta forma de agregar una cuenta a un grupo:

sudo usermod -aG desarrollo ana
  • -G establece la lista de grupos suplementarios.
  • -a indica que se agregan a las pertenencias existentes.

Sin -a, -G reemplaza la lista. Se puede perder una pertenencia importante, como sudo.

Cuenta y sesión

Los grupos de una sesión se cargan al iniciarla. Cambiar la pertenencia registrada no actualiza automáticamente los procesos que ya estaban abiertos.

Consulta Qué muestra
id en una sesión de Ana que ya estaba abierta Los grupos que conserva esa sesión.
id ana La información registrada para la cuenta.
id en una sesión nueva de Ana Los grupos obtenidos al iniciar esa nueva sesión.

Por eso alguien puede estar agregado correctamente a un grupo y necesitar iniciar una sesión nueva para usar esa pertenencia.

Consultas

Grupo principal → grupos suplementarios → cuenta registrada → sesión existente

Cuentas de servicio

No todas las cuentas representan personas

Una identidad para un servicio

Cuentas como www-data permiten ejecutar tareas del sistema con una identidad específica.

El propósito de la cuenta, su home y su intérprete ayudan a interpretarla. nologin es una señal habitual de que no se espera una sesión interactiva; no impide que existan procesos con esa identidad.

Los UID bajos son frecuentes en cuentas de sistema, pero no alcanzan para identificarlas por sí solos.

Menor privilegio

Un servicio debe ejecutar cada tarea con los privilegios que necesita. Algunas partes pueden requerir privilegios administrativos y otras ejecutarse con una cuenta dedicada.

Limitar sus permisos reduce el alcance de un fallo o de un compromiso. No garantiza por sí solo que cualquier ataque quede contenido.

Cuando instalemos servicios, comprobaremos con qué usuario corre cada proceso.

Permisos tradicionales

Unix: owner, grupo y otros (UGO)

Tres conjuntos de permisos

Cada archivo tiene un owner y un grupo asociado. Los permisos tradicionales de Unix establecen qué puede hacer el owner, qué pueden hacer los miembros del grupo y qué pueden hacer los demás.

En cada conjunto se indican los permisos de lectura, escritura y ejecución: r, w y x.

Una línea de ls -l

-rw-r----- 1 ana desarrollo 18 sep 17 10:00 informe.txt
Parte Significado
- Tipo: archivo regular. d identifica un directorio y l un enlace.
rw-r----- Permisos
1 Cantidad de enlaces; se explicará en almacenamiento.
ana Owner.
desarrollo Grupo asociado al archivo.
18 Tamaño en bytes en este ejemplo.
Fecha y hora Última modificación del contenido.
informe.txt Nombre.

UGO: tres conjuntos

UGO = User / Group / Others.

Letra Nombre A quién representa
U (u) User El owner del archivo.
G (g) Group El grupo asociado al archivo.
O (o) Others Los demás usuarios.
    U     G     O
   rw-   r--   ---
  User group others

En UGO, user es el owner; la letra o corresponde a others. Estas letras reaparecen en la notación simbólica de chmod, que veremos en la clase 9.

Permisos rwx

En un archivo regular:

Bit Permite
r — read Leer contenido.
w — write Modificar contenido.
x — execute Ejecutar, si el formato y las demás condiciones lo permiten.

Un guion indica que ese bit no está habilitado. Los permisos de los directorios tienen otro significado y se desarrollan en la clase 9.

Qué conjunto se aplica

En este modelo, para un usuario común y un archivo cuya ruta es accesible:

  1. Si es el owner, se aplican los bits de U.
  2. Si no es el owner y pertenece al grupo del archivo, se aplican los bits de G.
  3. En otro caso, se aplican los bits de O.

Los tres conjuntos no se suman. Se selecciona el que corresponde a esa identidad.

Un ejemplo para interpretar

Para el archivo de Ana con grupo desarrollo y permisos rw-r-----:

-rw-r----- 1 ana desarrollo 18 sep 17 10:00 informe.txt
Cuenta Conjunto Lectura Escritura
Ana, owner U: rw- Sí Sí
Bruno, miembro de desarrollo G: r-- Sí No
Otro usuario común, fuera del grupo O: --- No No

El ejemplo supone que la ruta es accesible.

Consultas

Owner → UGO → rwx → elegir un conjunto según la identidad

Resumen de la clase

  • UID y GID son identificadores numéricos; el sistema resuelve los nombres mediante sus bases de datos.
  • /etc/passwd describe la cuenta, /etc/shadow su información de contraseña y /etc/group los grupos.
  • getent consulta las fuentes configuradas.
  • Grupo principal y suplementarios intervienen en el acceso; las sesiones existentes conservan sus grupos.
  • Las cuentas de servicio permiten asignar privilegios según la tarea.
  • UGO recuerda el orden: user —el owner—, group, others.
  • rwx describe las operaciones permitidas; los conjuntos de UGO no se suman.

Actividad práctica

Referencias técnicas

Volver al índice del curso