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//.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