capget(2) System Calls Manual capget(2) capget, capset - / (libc -lc) #include /* CAP_* _LINUX_CAPABILITY_* */ #include /* SYS_* */ #include int syscall(SYS_capget, cap_user_header_t hdrp, cap_user_data_t datap); int syscall(SYS_capset, cap_user_header_t hdrp, const cap_user_data_t datap); : glibc syscall(2). . ( cap_user_*_t) . cap_set_proc(3) cap_get_proc(3); ; . . . #define _LINUX_CAPABILITY_VERSION_1 0x19980330 #define _LINUX_CAPABILITY_U32S_1 1 /* V2 added in Linux 2.6.25; deprecated */ #define _LINUX_CAPABILITY_VERSION_2 0x20071026 #define _LINUX_CAPABILITY_U32S_2 2 /* V3 added in Linux 2.6.26 */ #define _LINUX_CAPABILITY_VERSION_3 0x20080522 #define _LINUX_CAPABILITY_U32S_3 2 typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; effective permitted inheritable capabilities(7). CAP_* OR . struct __user_cap_header_struct struct __user_cap_data_struct . 2.6.25 32- _LINUX_CAPABILITY_VERSION_1. 2.6.25 64- _LINUX_CAPABILITY_VERSION_2. 2.6.26 _LINUX_CAPABILITY_VERSION_3 . 64- datap[0] datap[1] 32- datap[0] . ( VFS) . 2.6.24 ( ) 2.6.33. capget() hdrp->pid. capabilities(7). VFS VFS ( xattr(7)) . . VFS capset() hdrp->pid 0 gettid(2). VFS VFS capset() CAP_SETPCAP . pid hdrp pid 0. pid pid ; gettid(2). capset() pid : -1 init(1); -1 -pid. . -1 errno . EINVAL version hdrp _LINUX_CAPABILITY_VERSION_? version . . EFAULT . hdrp NULL. datap NULL . EINVAL . EPERM . EPERM : o ; o CAP_SETPCAP . EPERM capset() . VFS . VFS CAP_SETPCAP . ( 2.6.11 pid ( getpid(2)) 0.) ESRCH . . libcap : clone(2) gettid(2) capabilities(7) 3 . . : . 6.18 8 2026 capget(2)