From 7b09e26eca04236db72e6f602d3370d490143698 Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 18 Sep 2026 19:13:35 +0000 Subject: [PATCH] =?UTF-8?q?jaula:=20los=20builds=20S=C3=8D=20corren=20aden?= =?UTF-8?q?tro=20=E2=80=94=20el=20comentario=20mandaba=20a=20ssh=20por=20n?= =?UTF-8?q?ada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Medido desde la jaula, con el hash forzado para que no hubiera caché: `anew` (Go, estática) sella en 6,8 s y `lz4` (C, con `make install` escribiendo /out) en 4,4 s. Con `root = false` el bwrap anidado se levanta y /proc monta. Lo del uid 0 sigue siendo cierto para una receta cuyo `install` fije DUEÑOS, y así queda escrito — pero no es «los builds no corren», que es lo que se leía y lo que mandaba a pedirle cada receta al anfitrión por ssh. --- scripts/servidor/claude-caja.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/servidor/claude-caja.sh b/scripts/servidor/claude-caja.sh index 7d871573..8d82f1e2 100755 --- a/scripts/servidor/claude-caja.sh +++ b/scripts/servidor/claude-caja.sh @@ -13,13 +13,14 @@ # falta: `qorpa run` levanta la jaula con user namespaces y anda **sin privilegio**, siempre que el # directorio de la instancia sea del usuario. # -# ⚠ LOS BUILDS SIGUEN SIN CORRER DENTRO DE LA JAULA, pero el motivo cambió y conviene tenerlo -# medido (2026-09-18). Antes, con `root = true`, el bwrap anidado ni se levantaba: «Can't mount proc -# on /proc». Con `root = false` **sí se levanta y /proc monta** —comprobado—, y lo que ahora falla es -# otra cosa: el anidado **no puede mapear el uid 0** que `takana build` le pide, porque `sergio` no -# tiene rango en `/etc/subuid` (sólo lo tiene `root`) y encima `newuidmap`/`newgidmap` **no son -# setuid** en esta caja (`-r-xr-xr-x`). Resultado: el sandbox del build correría como 1001 y el -# `install` que escribe `/out` con dueños se cae. +# ⚠ Y LOS BUILDS **SÍ CORREN DENTRO DE LA JAULA** — medido el 2026-09-18 por el agente de adentro, +# y corrige lo que decía este comentario. Dos recetas construidas y SELLADAS desde la jaula, con el +# hash forzado para que no hubiera caché: +# · `anew` (Go, estática) — fetch → `go mod vendor` → compile → sealed, 6,8 s +# · `lz4` (C, estática) — `make` + `make install` escribiendo `/out` → sealed, 4,4 s +# Con `root = false` el bwrap anidado se levanta y `/proc` monta. Lo que NO se probó es una receta +# cuyo `install` fije DUEÑOS: ahí sí muerde que el anidado no pueda mapear el uid 0, porque `sergio` +# no tiene rango en `/etc/subuid` (sólo lo tiene `root`) y `newuidmap`/`newgidmap` no son setuid. # # ⚠ SE INTENTÓ CERRARLO Y **NO ALCANZÓ** (2026-09-18). Se hicieron las dos cosas obvias: # · rango para `sergio` en `/etc/subuid` y `/etc/subgid` (165536:65536);