Skip to content

Instantly share code, notes, and snippets.

@bpradipt
Last active March 25, 2026 10:56
Show Gist options
  • Select an option

  • Save bpradipt/dea92fc2e7fddec0a407ddaab7645e29 to your computer and use it in GitHub Desktop.

Select an option

Save bpradipt/dea92fc2e7fddec0a407ddaab7645e29 to your computer and use it in GitHub Desktop.
kata-agent capability requirements
Capability Operations Requiring It Key Code Locations init only?
CAP_SYS_ADMIN Mount kernel pseudo-filesystems (proc, sysfs, devtmpfs, tmpfs, devpts) mount.rs: INIT_ROOTFS_MOUNTS, baremount() Yes
CAP_SYS_ADMIN Mount cgroup hierarchies (v1 controllers + v2 unified) mount.rs: cgroups_mount(), CGROUPS map Yes
CAP_SYS_ADMIN pivot_root() — switch container rootfs rustjail/src/mount.rs:531: pivot_rootfs() No
CAP_SYS_ADMIN unshare() — create new IPC, UTS, PID, NET, MNT namespaces namespace.rs:111, rustjail/src/container.rs:520, :375 No
CAP_SYS_ADMIN setns() — join existing namespaces rustjail/src/container.rs:371 No
CAP_SYS_ADMIN Bind-mount namespace files to persist them namespace.rs:121: baremount(..., MS_BIND|MS_REC, ...) No
CAP_SYS_ADMIN Bind-mount /etc/resolv.conf for DNS network.rs:77: mount::mount(..., MS_BIND, ...) No
CAP_SYS_ADMIN Load seccomp filter without NoNewPrivileges rustjail/src/container.rs:731: comment explicitly states CAP_SYS_ADMIN required No
CAP_SYS_ADMIN sethostname() main.rs:675 Yes
CAP_SYS_ADMIN Write to /sys/fs/cgroup/*/ (cgroupfs driver) rustjail/src/cgroups/fs/mod.rs No
CAP_SYS_ADMIN RNDADDTOENTCNT + RNDRESEEDCRNG ioctls on /dev/random random.rs:45-53: reseed_rng() No
CAP_SYS_BOOT reboot(RB_POWER_OFF) on exit main.rs:352 Yes
CAP_SYS_MODULE Load kernel modules via modprobe rpc.rs:2253: load_kernel_module(), called from create_sandbox at rpc.rs:1342 No
CAP_MKNOD Create device nodes inside container rootfs rustjail/src/mount.rs:978: mknod_dev()stat::mknod() No
CAP_SETUID setuid() to assume container process UID rustjail/src/container.rs: child process credential setup No
CAP_SETGID setgid() to assume container process GID rustjail/src/container.rs: child process credential setup No
CAP_SETGID setgroups() — set supplemental groups for container process rustjail/src/container.rs:684 No
CAP_SETPCAP Drop capabilities from bounding set for containers rustjail/src/capabilities.rs:54-55: drop_privileges()caps::drop(..., CapSet::Bounding, ...) No
CAP_SETPCAP Set ambient, inheritable, effective, permitted cap sets rustjail/src/capabilities.rs:58-82 No
CAP_CHOWN chown() on storage mount points (fsGroup/fsUID) storage/mod.rs:387, storage/local_handler.rs:46 No
CAP_DAC_OVERRIDE Write to sysfs device paths (online_device) during hotplug device/mod.rs:609: fs::write(path, "1") on /sys/.../online No
CAP_DAC_OVERRIDE Access protected paths when creating/mounting storage storage/ handlers, bind-mounting shared container dirs No
CAP_NET_ADMIN Manipulate network interfaces, routes, ARP via rtnetlink netlink.rs: add_arp_neighbors(), route/interface handlers No
CAP_NET_ADMIN unshare(CLONE_NEWNET) — create network namespace rustjail/src/container.rs: CloneFlags::CLONE_NEWNET No
CAP_NET_ADMIN Run iptables-save/iptables-restore, ip6tables rpc.rs:114-121: get_iptables, set_iptables RPC handlers No
CAP_NET_RAW Raw socket creation for netlink operations Used internally by rtnetlink library No
CAP_SYS_RESOURCE swapon() — enable swap device rpc.rs:2172: libc::swapon() in do_add_swap() and do_add_swap_path() No
CAP_SYS_RESOURCE Set LimitNOFILE=1073741824 and other rlimits kata-agent.service.in:18, container rlimit setup in rustjail No
CAP_FOWNER chmod()/chown() on files not owned by root (container rootfs setup) rustjail/src/mount.rs: device and rootfs setup No
CAP_FSETID Preserve setuid/setgid bits on files when chowning rustjail/src/mount.rs: container filesystem setup No
CAP_KILL Send signals to container processes in other UIDs rustjail/src/container.rs: signal handling, setup_signal_handler No
CAP_IPC_LOCK Lock memory for sensitive attestation/confidential data Used by attestation-agent child process management No
CAP_SYS_PTRACE process_vm_readv/access /proc/<pid>/ of other namespaced processes rustjail/src/container.rs: reading container process state No

Disclaimer: AI generated

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment