odigos user, not as root. It still needs a small, fixed set of Linux capabilities, and — depending on which sources you instrument — membership in a few host groups. This page covers what is granted out of the box, why, and how to change it.
Root-mode installs (
ODIGOS_AGENT_USER_MODE=root) already have every privilege. Skip this page unless you are tightening a non-root install or switching a host to non-root. See Installation.Linux capabilities
The packaged drop-in/etc/systemd/system/odigos-vmagent.service.d/nonroot.conf grants the same capability set on every distribution that can run non-root.
odigos-otelcol when the non-root agent runs it as a child.
The installer does not pick capabilities from
kernel.perf_event_paranoid, and it never assigns CAP_BPF, CAP_PERFMON, or CAP_CHECKPOINT_RESTORE.Provisioning
/var/exchange still needs root. The drop-in handles that with ExecStartPre=+/usr/bin/install ... (the + prefix runs that line as root regardless of User=odigos).Why CAP_SYS_ADMIN on every distro
The capability list does not change between RHEL and Debian. CAP_SYS_ADMIN is always included because the narrower bits are not enough on the kernels and sysctl defaults these distributions ship:
- RHEL / Rocky / Fedora
- Debian / Ubuntu
Override, add, or remove capabilities
systemd mergesAmbientCapabilities= and CapabilityBoundingSet= across drop-in files. A later drop-in can add capabilities; it cannot remove one that nonroot.conf already listed. To drop or replace capabilities, edit the packaged drop-in itself.
1
Edit the packaged drop-in
AmbientCapabilities= and CapabilityBoundingSet= together so they stay in sync. To remove a capability, delete it from both lines. To add one, append it to both lines — or, if you only want to add, create a later drop-in instead:2
Stop the package from overwriting your edit
Package upgrades re-render Replace that header with your own comment (for example
nonroot.conf only while its first line is:# Operator-managed capabilities) so the next upgrade leaves the file alone.3
Restore the SELinux label (RHEL, Rocky, Fedora)
Skip this on Debian and Ubuntu. A drop-in edited by hand can receive the wrong SELinux label, and systemd will refuse to read it:
4
Reload systemd and restart the agent
To restore the packaged set after experimenting, put the managed header back and run:
Additional permissions
A non-root agent needs extra host rights to instrument and restart some sources. Root-mode installs do not need these steps.Docker containers
Instrumenting and controlling Docker sources requires access to/var/run/docker.sock. That socket is owned by root:docker. The package adds the odigos user to the docker group when the group already exists.
If Docker was installed after the agent, or the group was missing at install time, add it yourself:
docker group does not exist yet:
EACCES on the socket: the agent cannot list containers, instrument them, or restart them.
systemd services
Instrumenting a systemd source writes a unit drop-in (CAP_DAC_OVERRIDE covers the write) and then asks systemd over D-Bus to daemon-reload and restart the unit. systemd asks polkit for that. A system service has no interactive session, so without a polkit rule those calls fail with:
- Install a polkit rule
- Run the agent as root
- Restart units yourself
Check which polkit your host uses. RHEL 8+, Rocky, Fedora, Debian 12+, and Ubuntu 24.04 load JavaScript rules from The rule lets the
/etc/polkit-1/rules.d/. Debian 11 and Ubuntu 20.04 / 22.04 still use .pkla files.- RHEL / Rocky / Fedora
- Debian / Ubuntu
Create
/etc/polkit-1/rules.d/49-odigos-vmagent.rules owned by root:root, mode 0644:odigos user reload systemd and start, stop, or restart units. Narrow the verb list further if your policy requires it. .pkla files cannot filter by verb; they grant the whole action.journald permissions
When a destination includes theLOGS signal, the collector reads systemd source logs from the journal (a shared journald receiver). A non-root odigos user cannot read the journal unless it is in a group that journald allows.
Add odigos to an appropriate group below based on your Linux Distribution, then restart the agent:
- Debian / Ubuntu
- RHEL / Rocky / Fedora
Members of
adm or systemd-journal can read the systemd journal:LOGS on systemd sources. Process log files and Docker container logs do not use the journal.
The odictl Logs panel shows logs for the agent and collector units themselves. That is separate from application logs exported to your destination, and does not require these groups.