Files
fn_registry/bash/functions/browser/apply_chromium_extension_policy.md
T
Egutierrez 830f2d34de feat(browser): funciones idempotentes para config de sistema de chromium
Cierra el gap de reproducibilidad entre PCs del proyecto web_scraping:
la organizacion de extensiones y el CDP global dejaban de ser pasos
manuales con sudo documentados en prosa.

- apply_chromium_extension_policy: escribe ExtensionInstallForcelist
  (whitelist via --keep) en /etc/chromium/policies/managed/extensions.json
  de forma idempotente, con backup automatico y validacion JSON. --dry-run
  previsualiza sin tocar el sistema.
- apply_chromium_cdp_flag: gestiona /etc/chromium.d/cdp (CDP global).
  Loopback por defecto, --network para bind 0.0.0.0 (con aviso), --remove
  para desactivar, --dry-run para previsualizar. Idempotente con backup.

Ambas: dominio browser, grupo navegator, impuras (escriben en /etc via
sudo), guard de auto-ejecucion (ejecutables con fn run y sourceables).

Docs del proyecto (CONVENTIONS.md reglas 8/9, CHROMIUM_SYSTEM.md
inventario + tabla accionable) ahora apuntan a 'fn run apply_chromium_*'
como metodo canonico en vez de editar los archivos de /etc a mano.
2026-06-05 16:33:35 +02:00

4.0 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
apply_chromium_extension_policy function bash browser 1.0.0 impure apply_chromium_extension_policy --keep <ext_id> [--keep <ext_id>]... [--policy-path <path>] [--update-url <url>] [--dry-run] Escribe de forma idempotente la política managed de Chromium (ExtensionInstallForcelist) que fuerza la instalación de un conjunto de extensiones en cualquier perfil del navegador. Crea backup con sufijo de fecha si el archivo preexiste y su contenido difiere. Requiere sudo para escribir en /etc; en modo --dry-run no toca el sistema.
chromium
extensions
policy
browser
navegator
managed-policy
idempotent
false error_go_core
name desc
--keep <ext_id> ID de extensión de Chrome Web Store a force-instalar (repetible, al menos uno obligatorio). Ejemplo: ddkjiahejlhfcafbddmgiahcphecmpfh (uBlock Origin Lite).
name desc
--policy-path <path> Ruta del JSON de managed policy. Default: /etc/chromium/policies/managed/extensions.json.
name desc
--update-url <url> URL del servicio de actualización de extensiones. Default: https://clients2.google.com/service/update2/crx.
name desc
--dry-run Imprime el JSON que se escribiría sin tocar el sistema (no requiere sudo).
Escribe el JSON de política en policy-path y emite a stdout un resumen: extensiones aplicadas, ruta, backup creado y recordatorio de reinicio de Chromium. Sale 0 si la política se aplicó o ya estaba vigente. Sale != 0 en error. false
bash/functions/browser/apply_chromium_extension_policy.sh

Ejemplo

# Forzar solo uBlock Origin Lite en todos los perfiles (proyecto web_scraping, regla 9)
source bash/functions/browser/apply_chromium_extension_policy.sh
apply_chromium_extension_policy --keep ddkjiahejlhfcafbddmgiahcphecmpfh

# Previsualizar sin tocar el sistema (sin sudo)
apply_chromium_extension_policy --keep ddkjiahejlhfcafbddmgiahcphecmpfh --dry-run

# Forzar varias extensiones a la vez
apply_chromium_extension_policy \
    --keep ddkjiahejlhfcafbddmgiahcphecmpfh \
    --keep cjpalhdlnbpafiamejdnhcphjbkeiagm \
    --policy-path /etc/chromium/policies/managed/extensions.json

# Usando pass para el sudo no interactivo (setup de este equipo)
# apply_chromium_extension_policy ya usa sudo tee internamente;
# si el entorno requiere pass: ejecutar como root o con SUDO_ASKPASS configurado.

Cuando usarla

Al preparar un PC nuevo o cambiar qué extensiones de Chrome Web Store deben estar presentes en cualquier perfil de Chromium del equipo. Reemplaza el paso manual de editar el JSON de policy con sudo. Indispensable tras un fresh install o cuando se añade o retira una extensión del conjunto obligatorio del proyecto web_scraping.

Gotchas

  • Requiere sudo para escribir en /etc/chromium/policies/managed/. En este equipo se alimenta con pass show claude/sudo | sudo -S <cmd> para operaciones autónomas.
  • Chrome cachea la política en memoria: hay que cerrar TODOS los procesos Chromium (pkill -9 chromium) y relanzar para que el cambio surta efecto en runtime. Alternativa sin cerrar: chrome://policy → botón "Reload policies".
  • Idempotente: si el archivo de policy ya tiene el mismo contenido, la función detecta el no-op y sale 0 sin escribir nada.
  • Backup por día: si el contenido difiere, crea <policy-path>.bak.YYYYMMDD. Si el backup del día ya existe, no lo sobreescribe. Los backups no se limpian automáticamente.
  • ExtensionInstallForcelist solo gestiona las extensiones listadas — no elimina extensiones que el usuario haya instalado manualmente; solo garantiza que las listadas estén instaladas.
  • No aplica a Chrome stable 138+: en Chrome estable la flag --load-extension está desactivada, pero las managed policies siguen siendo el mecanismo correcto para force-install desde Web Store.
  • Para referencia del sistema completo: projects/web_scraping/CHROMIUM_SYSTEM.md.