Módulo 1 — Operación de Sistemas Operativos GNU/Linux
Al finalizar esta clase vas a poder:
/etc/passwd, /etc/shadow y /etc/group.El sistema trabaja con números y nos muestra nombres
Comandos para saber quiénes somos:
whoami
id
uid=1000(cristian) gid=1000(cristian) groups=1000(cristian),27(sudo)
groups también permite consultar los grupos. En la salida de id, la lista groups incluye el principal.
Estar en el grupo
sudopermite solicitar las acciones autorizadas por su configuración. La cuenta sigue siendo un usuario común mientras no eleva privilegios.
0.whoami # cristian
sudo whoami # root
whoami # cristian
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.
0 corresponde a root.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.
UID → GID → nombres → identidad de la sesión
Qué contiene cada archivo y para qué se consulta
/etc/passwd · campos separados por :
cristian:x:1000:1000:Cristian,,,:/home/cristian:/bin/bash
| Valor | Significado |
|---|---|
cristian |
Nombre de la cuenta. |
x |
Información de contraseña en /etc/shadow. |
1000 |
UID. |
1000 |
GID del grupo principal. |
Cristian,,, |
Descripción. |
/home/cristian |
Directorio personal. |
/bin/bash |
Intérprete de la cuenta. |
El grupo principal de la cuenta se identifica en este archivo, mediante su GID.
/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.
| 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.
/etc/group · campos separados por :
sudo:x:27:cristian
| Valor | Significado |
|---|---|
sudo |
Nombre del grupo. |
x |
Marcador del campo de contraseña de grupo; no lo administramos en esta clase. |
27 |
GID. |
cristian |
Miembros suplementarios registrados. |
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.
getentgetent 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.
passwd: cuenta → shadow: contraseña → group: grupo → getent: consulta
Una cuenta puede pertenecer a varios grupos
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.
| 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.
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,-Greemplaza la lista. Se puede perder una pertenencia importante, comosudo.
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.
Grupo principal → grupos suplementarios → cuenta registrada → sesión existente
No todas las cuentas representan personas
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.
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.
Unix: owner, grupo y otros (UGO)
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.
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 = 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.
rwxEn 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.
En este modelo, para un usuario común y un archivo cuya ruta es accesible:
Los tres conjuntos no se suman. Se selecciona el que corresponde a esa identidad.
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.
Owner → UGO → rwx → elegir un conjunto según la identidad
/etc/passwd describe la cuenta, /etc/shadow su información de contraseña y /etc/group los grupos.getent consulta las fuentes configuradas.rwx describe las operaciones permitidas; los conjuntos de UGO no se suman.