gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 815Rust 56Shell 37Markdown 291229 Sutichaykuna

borré /usr/bin/id probando el setuid — qué pasó y por qué no se prueba así

Para saber si el bit setuid elevaba copié busybox sobre /usr/bin/id (busybox elige el applet por
argv[0] y necesitaba un nombre válido) y después borré «mis» copias de prueba. Una era el `id` del
sistema, y no quedaba otro: /bin/id tampoco existía. El usuario se lo encontró de frente: «claude:
line 23: id: not found» y «-bash: /usr/bin/id: No such file or directory».

Restaurado como sus hermanos de identidad —whoami y groups apuntan a ../../bin/busybox— y comprobado
con id de root, de sergio y con el `id -un` que usa el lanzador. Barrido: 0 enlaces colgados en
/bin, /usr/bin, /sbin y /usr/sbin.

La lección es de método: para probar una propiedad del sistema no se usa un nombre que el sistema ya
ocupa. La sonda correcta fue la que terminé escribiendo —cinco líneas de C a un nombre inventado—.
Y 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.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

5999aeda4516d7cf40cb092645eea942a1339f13 · ruwaq Sergio · (1 killa ñawpaq) · tayta 9db1845f2 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

1 qillqakuna · +25 −0

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