diff --git a/scripts/servidor/claude-caja.sh b/scripts/servidor/claude-caja.sh index 79934253..de463a28 100755 --- a/scripts/servidor/claude-caja.sh +++ b/scripts/servidor/claude-caja.sh @@ -21,10 +21,19 @@ # 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. # -# Cerrarlo del todo son dos cosas con su precio: darle rango a `sergio` en `/etc/subuid`+`subgid`, y -# volver setuid a esos dos ayudantes —que es lo normal en cualquier distro, pero es un binario -# setuid más y, como el `/usr/bin` de acá está HIDRATADO del store, una rehidratación lo revierte—. -# Es decisión, no trámite. +# ⚠ 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); +# · `newuidmap`/`newgidmap` en setuid root **y además** con capacidades (`cap_setuid=ep`). +# El error se MOVIÓ —ya no dice «no hay rango para sergio»— pero sigue sin mapear: +# +# ⚠ sin mapeo por rango (newuidmap: open of uid_map failed: Permission denied) +# +# Lo que quedó descartado, medido: **el setuid sí eleva en esta caja** —sonda en C compilada con el +# `cc` nuevo: `uid=1001 euid=0`—, `/` no está `nosuid`, y el `uid_map` del proceso es suyo +# (`-rw-r--r-- sergio:sergio`). O sea que no es ni el rango que faltaba ni el bit que no tomaba. +# ⚠ Y un detalle que cuesta un rato si no se sabe: **`chown` BORRA el bit setuid**, así que hay que +# chownear primero y poner el bit después; la primera sonda salió sin bit por ese orden. +# La causa de fondo queda SIN DETERMINAR, y se dice así en vez de inventarla. # # Mientras tanto el camino que sí anda es pedírselo al ANFITRIÓN por ssh: #