| 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