diff --git a/docs/28-servidor-de-produccion.md b/docs/28-servidor-de-produccion.md index a157a946..30e0a053 100644 --- a/docs/28-servidor-de-produccion.md +++ b/docs/28-servidor-de-produccion.md @@ -3243,6 +3243,31 @@ ahí llevaba quién sabe cuánto igual de mudo. Se creó el `/etc/profile` con e caché de `zig cc` vive en `/work/zig-cache` (54 M) y **no** en la raíz de 5,9 G, por lo aprendido en §6.50 quinquies. +### 6.53 🔧 Borré `/usr/bin/id` probando el setuid *(2026-09-18)* + +Para saber si el bit setuid elevaba en esta caja copié `busybox` sobre **`/usr/bin/id`** —porque +busybox elige el applet por `argv[0]` y necesitaba un nombre válido— y después borré «mis» copias de +prueba. Una de ellas **era el `id` del sistema**. Resultado, del lado del usuario: + +``` + $ claude --dangerously-skip-permissions + /usr/bin/claude: line 23: id: not found + $ id + -bash: /usr/bin/id: No such file or directory +``` + +No quedaba ninguno: `/bin/id` tampoco existía. Se restauró como sus hermanos de identidad —`whoami` +y `groups` apuntan a `../../bin/busybox`— y se comprobó con `id` de root, de `sergio` y con el +`id -un` que usa el lanzador. Barrido posterior: **0 enlaces colgados** en `/bin`, `/usr/bin`, +`/sbin` y `/usr/sbin`, y presentes los ocho comandos de los que dependen el arranque y el lanzador. + +> **La lección, que es de método:** para probar una propiedad del sistema —¿eleva el setuid?— **no se +> usa un nombre que el sistema ya ocupa**. La sonda correcta era la que terminé escribiendo: cinco +> líneas de C compiladas con el `cc` nuevo a un nombre inventado (`probe-suid`). Copiar sobre `id` +> fue elegir el camino corto, y el camino corto se llevó un binario del que depende hasta el script +> que abre al agente. Es la misma familia que el `/etc/shadow` del §6.51: **la caja no avisa cuando +> le falta algo esencial — se entera el que lo usa**. + ### 6.51 🔥 Me dejé afuera de la caja — 20 minutos caída, y tres causas encadenadas *(2026-09-17)* Crear una cuenta de usuario tiró el servidor de producción. Queda escrito entero porque **ninguna de