Ir al contenido

Privilegios y permisos

CaudalGhost necesita privilegios para dos cosas concretas del kernel, y los obtiene de la forma más acotada posible. En tu uso diario NO necesitas sudo.

La instalación se hace con privilegios (sudo) porque:

  • Registra el servicio systemd del daemon.
  • Crea el usuario/grupo de servicio caudalghost.
  • Instala una regla de permisos (polkit) y la configuración del servicio.

Esto pasa una sola vez, al instalar o actualizar.

El daemon corre sin root, como servicio con capacidades mínimas:

  • CAP_BPF / CAP_PERFMON (vía AmbientCapabilities de systemd): las capacidades justas para enganchar los kprobes de eBPF y leer las métricas del kernel. Nada más. No usa setcap sobre binarios sueltos, y no hereda ningún otro privilegio de root.
  • Sin puerto TCP, sin servidor web: los clientes (CLI, TUI, GUI) hablan con el daemon por un socket Unix local. No hay ningún puerto a la escucha ni superficie de red que exponer.
  • La unit de systemd restringe la red: el servicio corre con RestrictAddressFamilies limitado a AF_UNIX/AF_NETLINK, así que ni siquiera puede abrir un socket de red saliente aunque quisiera.
  • Acceso al socket sin sudo (escritorio): en la edición de escritorio, el daemon concede acceso a su socket a tu sesión de usuario automáticamente (por UID, refrescado cada pocos segundos). Por eso la GUI y la CLI funcionan sin elevar privilegios. En la edición servidor este acceso automático viene desactivado (ver más abajo).

Resolución de nombres (hostnames) vía polkit

Sección titulada «Resolución de nombres (hostnames) vía polkit»

Para convertir IPs en hostnames, el daemon se suscribe a los resultados de consulta del resolvedor del sistema (systemd-resolved). Ese acceso está gateado por polkit, no por UID: una regla instalada (org.freedesktop.resolve1.subscribe-query-results) autoriza al servicio. Si el resolvedor no está disponible, CaudalGhost degrada con elegancia y muestra IPs crudas, sin fallar.

Acceso en equipos multiusuario (edición servidor)

Sección titulada «Acceso en equipos multiusuario (edición servidor)»

CaudalGhost mide el tráfico de toda la máquina, no por usuario. En un escritorio (un solo usuario) eso es justo lo que quieres: instalas, abres y funciona. En un servidor con varios usuarios conviene decidir quién puede consultar esa telemetría, así que cada edición trae un valor por defecto distinto:

  • Edición escritorio: el daemon concede acceso al socket a tu sesión automáticamente (por UID).

  • Edición servidor (headless): el acceso por UID viene desactivado. El socket solo lo concede el grupo caudalghost, y el administrador añade a los usuarios de confianza de forma explícita:

    Ventana de terminal
    sudo usermod -aG caudalghost <usuario>

    (Quien instala el paquete ya queda en el grupo.)

Permitir el acceso a todos los usuarios con sesión

Sección titulada «Permitir el acceso a todos los usuarios con sesión»

Si de verdad quieres que cualquier usuario con sesión iniciada pueda consultar la telemetría (por ejemplo, una estación compartida de confianza), actívalo de forma intencional:

Ventana de terminal
sudo systemctl edit caudalghostd

y añade el override:

[Service]
Environment=CAUDALGHOST_ACL_ACTIVE_USERS=1

Luego sudo systemctl restart caudalghostd.

Observa, jamás interfiere: esto solo decide quién puede leer las mediciones; CaudalGhost nunca bloquea ni modifica el tráfico.

MomentoPrivilegioPor qué
Instalar / actualizarcon privilegios (sudo)registrar servicio, usuario, regla polkit
Daemon en marchaCAP_BPF/CAP_PERFMON (sin root)enganchar kprobes y leer métricas de eBPF
Comunicación cliente↔daemonsocket Unix (sin puerto TCP)CLI, TUI y GUI hablan por IPC local
Resolver hostnamesregla polkitsuscribirse a systemd-resolved
Usar GUI / CLI (escritorio)ningunoacceso al socket por tu UID
Servidor multiusuariogrupo caudalghostdecidir quién lee la telemetría

Observa, jamás interfiere: ninguna de estas capacidades permite a CaudalGhost bloquear, modificar ni inyectar tráfico. Solo leer y medir.