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 1572Shell 203Rust 109Markdown 993728 Definitions

⎇ 7c794568a963b18b68d747959e6bbd07cf2ebff7 recipes/iputils.toml TOML · 47 lines · 2.9 KB History raw

fix(privilegio): el bit de los reemplazos de busybox, y el symlink del piso que los tapaba c51c2bf32 · sergio ·

1# Importada de Alpine aports por `takana import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
2# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
3# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
4name    = "iputils"
5version = "20250605"
6license = "BSD-3-Clause AND GPL-2.0-or-later"
7
8[source]
9tarball = "https://github.com/iputils/iputils/releases/download/20250605/iputils-20250605.tar.xz"
10# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
11# sha512 = "1f3df2a4ea0a3f95bb9657d9ee36ed929fa841c9442dfd04e5d7f55ef533b0cac3182c2172b627c7ad7f366afdc1d232f2618d701bd1c601feadbfc754059cae"
12sha256  = "6f213700dbf96b5cc4499ca70cb15ecd69c09f405b06785bb4a1a10b572b6276"
13patches = ["0001-Use-getopt_long-for-opt-parsing-in-ping.patch"]
14
15[build]
16compiler = "zig-cc"
17target   = "x86_64-linux-musl"
18link     = "static"
19
20# Split de la info de depuración (SDD 23 etapa 4, tanda de HOJAS). Entra en `hash_inputs`.
21strip_debug = true
22flags    = []
23
24[build.phases]
25# Proyecto meson (patrón pixman/libdrm). Docs DESACTIVADAS (BUILD_MANS/BUILD_HTML_MANS=false)
26# para no arrastrar docbook-xsl/libxslt (fuera del catálogo). LTO quitado. IDN/gettext off
27# (deps externas fuera de catálogo); libcap sí está en el catálogo (USE_CAP por defecto).
28configure = "meson setup output --prefix=/usr --buildtype=release -DBUILD_MANS=false -DBUILD_HTML_MANS=false -DNO_SETCAP_OR_SUID=true -DUSE_IDN=false -DUSE_GETTEXT=false -DSKIP_TESTS=true"
29compile   = "ninja -C output"
30install   = "DESTDIR=/out ninja -C output install"
31
32[deps]
33build = ["binutils", "libcap", "linux-headers", "meson", "samurai", "python3", "pkgconf"]
34
35# ── EL BIT DE PRIVILEGIO (SDD 28 §5.11, `[[setuid]]`) ─────────────────────────────────────────────
36# Declarado el 2026-10-15, al medir los artefactos del store: los binarios de abajo salen todos
37# `-rwxr-xr-x` y en cualquier otra distro son setuid. El hueco estaba ANOTADO —el encabezado de
38# `crates/takana-core/src/setuid.rs` los lista uno por uno— y era LATENTE mientras el instalador
39# solo pusiera contrasena de root. Desde que `lib/cuenta.sh` crea una cuenta de persona, dejo de
40# ser latente: hay un humano no-root que los choca a todos.
41#
42# Es metadato (fuera de `hash_inputs`), asi que entra en una receta YA SELLADA sin mover un solo
43# `ArtifactHash` — comprobado con `takana hash --check` antes y despues.
44[[setuid]]
45path = "usr/bin/ping"
46mode = "4755"
47why  = "abrir el socket ICMP. Sin el bit sale 1 al instante y el mensaje se lee como «no hay red»: el operador probo `ping 8.8.8.8` el 2026-10-14 y concluyo que la maquina estaba sin red cuando el problema era el permiso. ⚠ La alternativa moderna es el sysctl `net.ipv4.ping_group_range`, que no necesita setuid y seria mejor; mientras nadie lo ponga en el arranque, el bit es lo que hace que ping diga la verdad."