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 Definiciones

sudo repuesto y el taller de trabajo: dónde se programa en la caja

sudo no andaba por DOS cosas a la vez, y una era el corte de energía: /usr/bin/sudo no tenía el bit
setuid, y /etc/sudoers.d/sergio HABÍA DESAPARECIDO — lo escribí minutos antes del reset del §6.51 y
se fue con el mismo corte que dejó el cortafuegos en NULs. Repuestos los dos, con sync, `sudo id`
devuelve uid=0. `visudo` no está instalado y no hace falta: el drop-in en /etc/sudoers.d/ es la forma
correcta. (doas sigue dando «Operation not permitted» aun setuid; queda como rareza sin explicar.)

LOS REPOSITORIOS ESTÁN EN LA CAJA: los 44 en el gitea mudado el 14-sep (sergio 939 M, tawasuyu
547 M). Lo que faltaba era un CLON DE TRABAJO: sólo estaba /opt/takana, el del hub. Ahora
`~/src → /work/sergio` con tawasuyu clonado (478 M) y su origin al gitea de la caja.

⚠ El taller va en /work y no en el home: la raíz tiene 2,4 G libres y /work 43 G.
⚠ Y clonar acá tiene dos trampas medidas: el git del corpus NO tiene remote-https (no se puede
clonar por HTTPS), y clonar por SSH exige la llave registrada en la CUENTA de gitea, no en el
authorized_keys del sistema. Mientras tanto se clona por ruta del sistema de ficheros, como root
(los dirs de organización son 0700 de gitea) y con `safe.directory`.

`PROY=/work/sergio/tawasuyu claude` abre el agente sobre ese repo — comprobado.

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

c8ac57d46e15b4c58ce243228ca5ac7290ba3f79 · por Sergio · (hace 1 mes) · padre 8db55db46 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +43 −0

diff --git a/docs/28-servidor-de-produccion.md b/docs/28-servidor-de-produccion.md
index 75a50a6b..5b5eacae 100644
--- a/docs/28-servidor-de-produccion.md
+++ b/docs/28-servidor-de-produccion.md
@@ -2940,6 +2940,49 @@ caja**, y **la llave de host es la MISMA que la de gioser** (se copiaron en el c
 ⚠ El `sshd` escucha en **22022 y 2345**, los dos generales: `2345` es el puerto que los clones de
 git ya usaban, y sirve igual para entrar.
 
+### 6.50 ter 🧰 `sudo` y el taller: dónde se programa en la caja *(2026-09-17)*
+
+**`sudo` no andaba por dos cosas a la vez, y una era el corte de energía.** `/usr/bin/sudo` **no
+tenía el bit setuid** (`sudo: must be owned by uid 0 and have the setuid bit set`), y además
+`/etc/sudoers.d/sergio` **había desaparecido**: lo escribí minutos antes del `reset` del §6.51 y se
+fue con el mismo corte que dejó el cortafuegos en NULs. Repuestos los dos —y con `sync`—,
+`sudo id` devuelve `uid=0(root)`. `visudo` no está instalado, pero **no hace falta**: el fichero
+suelto en `/etc/sudoers.d/` es la forma correcta, y `sudo` lo valida solo.
+
+⚠ `doas` sigue dando `Operation not permitted` aun estando setuid. No hizo falta perseguirlo —`sudo`
+resolvió— pero queda anotado como rareza sin explicar.
+
+#### Dónde están los repositorios
+
+**Los 44 están en la caja**, en el gitea que se mudó el 14-sep: `/var/lib/gitea/repositories/`
+(`sergio/` 939 M, `tawasuyu/` 547 M). Lo que NO había era un **clon de trabajo**: sólo `/opt/takana`,
+que es el del hub.
+
+```
+  ~/src  →  /work/sergio          ← el taller
+  /work/sergio/tawasuyu  478 M    ← clonado, origin al gitea de la caja
+```
+
+⚠ **El taller va en `/work`, no en el home.** La raíz de esta caja tiene **2,4 G libres** y `/work`
+**43 G**: un clon del monorepo en `/home` llena la raíz y tumba la máquina.
+
+⚠ **Y clonar acá tiene dos trampas medidas:**
+1. **El `git` del corpus no tiene `remote-https`** (`git: 'remote-https' is not a git command`), así
+   que **no se puede clonar por HTTPS** desde la propia caja. Es la deuda ya anotada del §bloqueantes.
+2. Clonar por **SSH** (`ssh://gitea@git.gioser.net:2345/…`) exige que la llave esté registrada **en
+   la cuenta de gitea**, no basta con el `authorized_keys` del sistema. Hasta que se registre, el
+   camino es el **sistema de ficheros** (`git clone /var/lib/gitea/repositories/<org>/<repo>.git`) —
+   con dos detalles: el directorio de cada organización es `0700` del usuario `gitea`, así que hay
+   que clonar como root y `chown` después; y git rechaza el repo por `dubious ownership` hasta que se
+   le dice `git config --global --add safe.directory "*"`.
+
+Y el agente se abre sobre cualquiera de ellos:
+
+```
+  PROY=/work/sergio/tawasuyu claude
+  → «Es tawasuyu (/work/sergio/tawasuyu, origin git.gioser.net:2345/…), último commit 55e5f0f27»
+```
+
 ### 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