1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * This is <linux/capability.h> 4*f80ad8b4SAndroid Build Coastguard Worker * 5*f80ad8b4SAndroid Build Coastguard Worker * Andrew G. Morgan <[email protected]> 6*f80ad8b4SAndroid Build Coastguard Worker * Alexander Kjeldaas <[email protected]> 7*f80ad8b4SAndroid Build Coastguard Worker * with help from Aleph1, Roland Buresund and Andrew Main. 8*f80ad8b4SAndroid Build Coastguard Worker * 9*f80ad8b4SAndroid Build Coastguard Worker * See here for the libcap library ("POSIX draft" compliance): 10*f80ad8b4SAndroid Build Coastguard Worker * 11*f80ad8b4SAndroid Build Coastguard Worker * ftp://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/ 12*f80ad8b4SAndroid Build Coastguard Worker */ 13*f80ad8b4SAndroid Build Coastguard Worker 14*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_CAPABILITY_H 15*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_CAPABILITY_H 16*f80ad8b4SAndroid Build Coastguard Worker 17*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 18*f80ad8b4SAndroid Build Coastguard Worker 19*f80ad8b4SAndroid Build Coastguard Worker /* User-level do most of the mapping between kernel and user 20*f80ad8b4SAndroid Build Coastguard Worker capabilities based on the version tag given by the kernel. The 21*f80ad8b4SAndroid Build Coastguard Worker kernel might be somewhat backwards compatible, but don't bet on 22*f80ad8b4SAndroid Build Coastguard Worker it. */ 23*f80ad8b4SAndroid Build Coastguard Worker 24*f80ad8b4SAndroid Build Coastguard Worker /* Note, cap_t, is defined by POSIX (draft) to be an "opaque" pointer to 25*f80ad8b4SAndroid Build Coastguard Worker a set of three capability sets. The transposition of 3*the 26*f80ad8b4SAndroid Build Coastguard Worker following structure to such a composite is better handled in a user 27*f80ad8b4SAndroid Build Coastguard Worker library since the draft standard requires the use of malloc/free 28*f80ad8b4SAndroid Build Coastguard Worker etc.. */ 29*f80ad8b4SAndroid Build Coastguard Worker 30*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_VERSION_1 0x19980330 31*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_U32S_1 1 32*f80ad8b4SAndroid Build Coastguard Worker 33*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_VERSION_2 0x20071026 /* deprecated - use v3 */ 34*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_U32S_2 2 35*f80ad8b4SAndroid Build Coastguard Worker 36*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_VERSION_3 0x20080522 37*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_U32S_3 2 38*f80ad8b4SAndroid Build Coastguard Worker 39*f80ad8b4SAndroid Build Coastguard Worker typedef struct __user_cap_header_struct { 40*f80ad8b4SAndroid Build Coastguard Worker __u32 version; 41*f80ad8b4SAndroid Build Coastguard Worker int pid; 42*f80ad8b4SAndroid Build Coastguard Worker } __user *cap_user_header_t; 43*f80ad8b4SAndroid Build Coastguard Worker 44*f80ad8b4SAndroid Build Coastguard Worker struct __user_cap_data_struct { 45*f80ad8b4SAndroid Build Coastguard Worker __u32 effective; 46*f80ad8b4SAndroid Build Coastguard Worker __u32 permitted; 47*f80ad8b4SAndroid Build Coastguard Worker __u32 inheritable; 48*f80ad8b4SAndroid Build Coastguard Worker }; 49*f80ad8b4SAndroid Build Coastguard Worker typedef struct __user_cap_data_struct __user *cap_user_data_t; 50*f80ad8b4SAndroid Build Coastguard Worker 51*f80ad8b4SAndroid Build Coastguard Worker 52*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_REVISION_MASK 0xFF000000 53*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_REVISION_SHIFT 24 54*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_FLAGS_MASK ~VFS_CAP_REVISION_MASK 55*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_FLAGS_EFFECTIVE 0x000001 56*f80ad8b4SAndroid Build Coastguard Worker 57*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_REVISION_1 0x01000000 58*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_U32_1 1 59*f80ad8b4SAndroid Build Coastguard Worker #define XATTR_CAPS_SZ_1 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_1)) 60*f80ad8b4SAndroid Build Coastguard Worker 61*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_REVISION_2 0x02000000 62*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_U32_2 2 63*f80ad8b4SAndroid Build Coastguard Worker #define XATTR_CAPS_SZ_2 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_2)) 64*f80ad8b4SAndroid Build Coastguard Worker 65*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_REVISION_3 0x03000000 66*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_U32_3 2 67*f80ad8b4SAndroid Build Coastguard Worker #define XATTR_CAPS_SZ_3 (sizeof(__le32)*(2 + 2*VFS_CAP_U32_3)) 68*f80ad8b4SAndroid Build Coastguard Worker 69*f80ad8b4SAndroid Build Coastguard Worker #define XATTR_CAPS_SZ XATTR_CAPS_SZ_3 70*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_U32 VFS_CAP_U32_3 71*f80ad8b4SAndroid Build Coastguard Worker #define VFS_CAP_REVISION VFS_CAP_REVISION_3 72*f80ad8b4SAndroid Build Coastguard Worker 73*f80ad8b4SAndroid Build Coastguard Worker struct vfs_cap_data { 74*f80ad8b4SAndroid Build Coastguard Worker __le32 magic_etc; /* Little endian */ 75*f80ad8b4SAndroid Build Coastguard Worker struct { 76*f80ad8b4SAndroid Build Coastguard Worker __le32 permitted; /* Little endian */ 77*f80ad8b4SAndroid Build Coastguard Worker __le32 inheritable; /* Little endian */ 78*f80ad8b4SAndroid Build Coastguard Worker } data[VFS_CAP_U32]; 79*f80ad8b4SAndroid Build Coastguard Worker }; 80*f80ad8b4SAndroid Build Coastguard Worker 81*f80ad8b4SAndroid Build Coastguard Worker /* 82*f80ad8b4SAndroid Build Coastguard Worker * same as vfs_cap_data but with a rootid at the end 83*f80ad8b4SAndroid Build Coastguard Worker */ 84*f80ad8b4SAndroid Build Coastguard Worker struct vfs_ns_cap_data { 85*f80ad8b4SAndroid Build Coastguard Worker __le32 magic_etc; 86*f80ad8b4SAndroid Build Coastguard Worker struct { 87*f80ad8b4SAndroid Build Coastguard Worker __le32 permitted; /* Little endian */ 88*f80ad8b4SAndroid Build Coastguard Worker __le32 inheritable; /* Little endian */ 89*f80ad8b4SAndroid Build Coastguard Worker } data[VFS_CAP_U32]; 90*f80ad8b4SAndroid Build Coastguard Worker __le32 rootid; 91*f80ad8b4SAndroid Build Coastguard Worker }; 92*f80ad8b4SAndroid Build Coastguard Worker 93*f80ad8b4SAndroid Build Coastguard Worker #ifndef __KERNEL__ 94*f80ad8b4SAndroid Build Coastguard Worker 95*f80ad8b4SAndroid Build Coastguard Worker /* 96*f80ad8b4SAndroid Build Coastguard Worker * Backwardly compatible definition for source code - trapped in a 97*f80ad8b4SAndroid Build Coastguard Worker * 32-bit world. If you find you need this, please consider using 98*f80ad8b4SAndroid Build Coastguard Worker * libcap to untrap yourself... 99*f80ad8b4SAndroid Build Coastguard Worker */ 100*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_VERSION _LINUX_CAPABILITY_VERSION_1 101*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_CAPABILITY_U32S _LINUX_CAPABILITY_U32S_1 102*f80ad8b4SAndroid Build Coastguard Worker 103*f80ad8b4SAndroid Build Coastguard Worker #endif 104*f80ad8b4SAndroid Build Coastguard Worker 105*f80ad8b4SAndroid Build Coastguard Worker 106*f80ad8b4SAndroid Build Coastguard Worker /** 107*f80ad8b4SAndroid Build Coastguard Worker ** POSIX-draft defined capabilities. 108*f80ad8b4SAndroid Build Coastguard Worker **/ 109*f80ad8b4SAndroid Build Coastguard Worker 110*f80ad8b4SAndroid Build Coastguard Worker /* In a system with the [_POSIX_CHOWN_RESTRICTED] option defined, this 111*f80ad8b4SAndroid Build Coastguard Worker overrides the restriction of changing file ownership and group 112*f80ad8b4SAndroid Build Coastguard Worker ownership. */ 113*f80ad8b4SAndroid Build Coastguard Worker 114*f80ad8b4SAndroid Build Coastguard Worker #define CAP_CHOWN 0 115*f80ad8b4SAndroid Build Coastguard Worker 116*f80ad8b4SAndroid Build Coastguard Worker /* Override all DAC access, including ACL execute access if 117*f80ad8b4SAndroid Build Coastguard Worker [_POSIX_ACL] is defined. Excluding DAC access covered by 118*f80ad8b4SAndroid Build Coastguard Worker CAP_LINUX_IMMUTABLE. */ 119*f80ad8b4SAndroid Build Coastguard Worker 120*f80ad8b4SAndroid Build Coastguard Worker #define CAP_DAC_OVERRIDE 1 121*f80ad8b4SAndroid Build Coastguard Worker 122*f80ad8b4SAndroid Build Coastguard Worker /* Overrides all DAC restrictions regarding read and search on files 123*f80ad8b4SAndroid Build Coastguard Worker and directories, including ACL restrictions if [_POSIX_ACL] is 124*f80ad8b4SAndroid Build Coastguard Worker defined. Excluding DAC access covered by CAP_LINUX_IMMUTABLE. */ 125*f80ad8b4SAndroid Build Coastguard Worker 126*f80ad8b4SAndroid Build Coastguard Worker #define CAP_DAC_READ_SEARCH 2 127*f80ad8b4SAndroid Build Coastguard Worker 128*f80ad8b4SAndroid Build Coastguard Worker /* Overrides all restrictions about allowed operations on files, where 129*f80ad8b4SAndroid Build Coastguard Worker file owner ID must be equal to the user ID, except where CAP_FSETID 130*f80ad8b4SAndroid Build Coastguard Worker is applicable. It doesn't override MAC and DAC restrictions. */ 131*f80ad8b4SAndroid Build Coastguard Worker 132*f80ad8b4SAndroid Build Coastguard Worker #define CAP_FOWNER 3 133*f80ad8b4SAndroid Build Coastguard Worker 134*f80ad8b4SAndroid Build Coastguard Worker /* Overrides the following restrictions that the effective user ID 135*f80ad8b4SAndroid Build Coastguard Worker shall match the file owner ID when setting the S_ISUID and S_ISGID 136*f80ad8b4SAndroid Build Coastguard Worker bits on that file; that the effective group ID (or one of the 137*f80ad8b4SAndroid Build Coastguard Worker supplementary group IDs) shall match the file owner ID when setting 138*f80ad8b4SAndroid Build Coastguard Worker the S_ISGID bit on that file; that the S_ISUID and S_ISGID bits are 139*f80ad8b4SAndroid Build Coastguard Worker cleared on successful return from chown(2) (not implemented). */ 140*f80ad8b4SAndroid Build Coastguard Worker 141*f80ad8b4SAndroid Build Coastguard Worker #define CAP_FSETID 4 142*f80ad8b4SAndroid Build Coastguard Worker 143*f80ad8b4SAndroid Build Coastguard Worker /* Overrides the restriction that the real or effective user ID of a 144*f80ad8b4SAndroid Build Coastguard Worker process sending a signal must match the real or effective user ID 145*f80ad8b4SAndroid Build Coastguard Worker of the process receiving the signal. */ 146*f80ad8b4SAndroid Build Coastguard Worker 147*f80ad8b4SAndroid Build Coastguard Worker #define CAP_KILL 5 148*f80ad8b4SAndroid Build Coastguard Worker 149*f80ad8b4SAndroid Build Coastguard Worker /* Allows setgid(2) manipulation */ 150*f80ad8b4SAndroid Build Coastguard Worker /* Allows setgroups(2) */ 151*f80ad8b4SAndroid Build Coastguard Worker /* Allows forged gids on socket credentials passing. */ 152*f80ad8b4SAndroid Build Coastguard Worker 153*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SETGID 6 154*f80ad8b4SAndroid Build Coastguard Worker 155*f80ad8b4SAndroid Build Coastguard Worker /* Allows set*uid(2) manipulation (including fsuid). */ 156*f80ad8b4SAndroid Build Coastguard Worker /* Allows forged pids on socket credentials passing. */ 157*f80ad8b4SAndroid Build Coastguard Worker 158*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SETUID 7 159*f80ad8b4SAndroid Build Coastguard Worker 160*f80ad8b4SAndroid Build Coastguard Worker 161*f80ad8b4SAndroid Build Coastguard Worker /** 162*f80ad8b4SAndroid Build Coastguard Worker ** Linux-specific capabilities 163*f80ad8b4SAndroid Build Coastguard Worker **/ 164*f80ad8b4SAndroid Build Coastguard Worker 165*f80ad8b4SAndroid Build Coastguard Worker /* Without VFS support for capabilities: 166*f80ad8b4SAndroid Build Coastguard Worker * Transfer any capability in your permitted set to any pid, 167*f80ad8b4SAndroid Build Coastguard Worker * remove any capability in your permitted set from any pid 168*f80ad8b4SAndroid Build Coastguard Worker * With VFS support for capabilities (neither of above, but) 169*f80ad8b4SAndroid Build Coastguard Worker * Add any capability from current's capability bounding set 170*f80ad8b4SAndroid Build Coastguard Worker * to the current process' inheritable set 171*f80ad8b4SAndroid Build Coastguard Worker * Allow taking bits out of capability bounding set 172*f80ad8b4SAndroid Build Coastguard Worker * Allow modification of the securebits for a process 173*f80ad8b4SAndroid Build Coastguard Worker */ 174*f80ad8b4SAndroid Build Coastguard Worker 175*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SETPCAP 8 176*f80ad8b4SAndroid Build Coastguard Worker 177*f80ad8b4SAndroid Build Coastguard Worker /* Allow modification of S_IMMUTABLE and S_APPEND file attributes */ 178*f80ad8b4SAndroid Build Coastguard Worker 179*f80ad8b4SAndroid Build Coastguard Worker #define CAP_LINUX_IMMUTABLE 9 180*f80ad8b4SAndroid Build Coastguard Worker 181*f80ad8b4SAndroid Build Coastguard Worker /* Allows binding to TCP/UDP sockets below 1024 */ 182*f80ad8b4SAndroid Build Coastguard Worker /* Allows binding to ATM VCIs below 32 */ 183*f80ad8b4SAndroid Build Coastguard Worker 184*f80ad8b4SAndroid Build Coastguard Worker #define CAP_NET_BIND_SERVICE 10 185*f80ad8b4SAndroid Build Coastguard Worker 186*f80ad8b4SAndroid Build Coastguard Worker /* Allow broadcasting, listen to multicast */ 187*f80ad8b4SAndroid Build Coastguard Worker 188*f80ad8b4SAndroid Build Coastguard Worker #define CAP_NET_BROADCAST 11 189*f80ad8b4SAndroid Build Coastguard Worker 190*f80ad8b4SAndroid Build Coastguard Worker /* Allow interface configuration */ 191*f80ad8b4SAndroid Build Coastguard Worker /* Allow administration of IP firewall, masquerading and accounting */ 192*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting debug option on sockets */ 193*f80ad8b4SAndroid Build Coastguard Worker /* Allow modification of routing tables */ 194*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting arbitrary process / process group ownership on 195*f80ad8b4SAndroid Build Coastguard Worker sockets */ 196*f80ad8b4SAndroid Build Coastguard Worker /* Allow binding to any address for transparent proxying (also via NET_RAW) */ 197*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting TOS (type of service) */ 198*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting promiscuous mode */ 199*f80ad8b4SAndroid Build Coastguard Worker /* Allow clearing driver statistics */ 200*f80ad8b4SAndroid Build Coastguard Worker /* Allow multicasting */ 201*f80ad8b4SAndroid Build Coastguard Worker /* Allow read/write of device-specific registers */ 202*f80ad8b4SAndroid Build Coastguard Worker /* Allow activation of ATM control sockets */ 203*f80ad8b4SAndroid Build Coastguard Worker 204*f80ad8b4SAndroid Build Coastguard Worker #define CAP_NET_ADMIN 12 205*f80ad8b4SAndroid Build Coastguard Worker 206*f80ad8b4SAndroid Build Coastguard Worker /* Allow use of RAW sockets */ 207*f80ad8b4SAndroid Build Coastguard Worker /* Allow use of PACKET sockets */ 208*f80ad8b4SAndroid Build Coastguard Worker /* Allow binding to any address for transparent proxying (also via NET_ADMIN) */ 209*f80ad8b4SAndroid Build Coastguard Worker 210*f80ad8b4SAndroid Build Coastguard Worker #define CAP_NET_RAW 13 211*f80ad8b4SAndroid Build Coastguard Worker 212*f80ad8b4SAndroid Build Coastguard Worker /* Allow locking of shared memory segments */ 213*f80ad8b4SAndroid Build Coastguard Worker /* Allow mlock and mlockall (which doesn't really have anything to do 214*f80ad8b4SAndroid Build Coastguard Worker with IPC) */ 215*f80ad8b4SAndroid Build Coastguard Worker 216*f80ad8b4SAndroid Build Coastguard Worker #define CAP_IPC_LOCK 14 217*f80ad8b4SAndroid Build Coastguard Worker 218*f80ad8b4SAndroid Build Coastguard Worker /* Override IPC ownership checks */ 219*f80ad8b4SAndroid Build Coastguard Worker 220*f80ad8b4SAndroid Build Coastguard Worker #define CAP_IPC_OWNER 15 221*f80ad8b4SAndroid Build Coastguard Worker 222*f80ad8b4SAndroid Build Coastguard Worker /* Insert and remove kernel modules - modify kernel without limit */ 223*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_MODULE 16 224*f80ad8b4SAndroid Build Coastguard Worker 225*f80ad8b4SAndroid Build Coastguard Worker /* Allow ioperm/iopl access */ 226*f80ad8b4SAndroid Build Coastguard Worker /* Allow sending USB messages to any device via /dev/bus/usb */ 227*f80ad8b4SAndroid Build Coastguard Worker 228*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_RAWIO 17 229*f80ad8b4SAndroid Build Coastguard Worker 230*f80ad8b4SAndroid Build Coastguard Worker /* Allow use of chroot() */ 231*f80ad8b4SAndroid Build Coastguard Worker 232*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_CHROOT 18 233*f80ad8b4SAndroid Build Coastguard Worker 234*f80ad8b4SAndroid Build Coastguard Worker /* Allow ptrace() of any process */ 235*f80ad8b4SAndroid Build Coastguard Worker 236*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_PTRACE 19 237*f80ad8b4SAndroid Build Coastguard Worker 238*f80ad8b4SAndroid Build Coastguard Worker /* Allow configuration of process accounting */ 239*f80ad8b4SAndroid Build Coastguard Worker 240*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_PACCT 20 241*f80ad8b4SAndroid Build Coastguard Worker 242*f80ad8b4SAndroid Build Coastguard Worker /* Allow configuration of the secure attention key */ 243*f80ad8b4SAndroid Build Coastguard Worker /* Allow administration of the random device */ 244*f80ad8b4SAndroid Build Coastguard Worker /* Allow examination and configuration of disk quotas */ 245*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting the domainname */ 246*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting the hostname */ 247*f80ad8b4SAndroid Build Coastguard Worker /* Allow mount() and umount(), setting up new smb connection */ 248*f80ad8b4SAndroid Build Coastguard Worker /* Allow some autofs root ioctls */ 249*f80ad8b4SAndroid Build Coastguard Worker /* Allow nfsservctl */ 250*f80ad8b4SAndroid Build Coastguard Worker /* Allow VM86_REQUEST_IRQ */ 251*f80ad8b4SAndroid Build Coastguard Worker /* Allow to read/write pci config on alpha */ 252*f80ad8b4SAndroid Build Coastguard Worker /* Allow irix_prctl on mips (setstacksize) */ 253*f80ad8b4SAndroid Build Coastguard Worker /* Allow flushing all cache on m68k (sys_cacheflush) */ 254*f80ad8b4SAndroid Build Coastguard Worker /* Allow removing semaphores */ 255*f80ad8b4SAndroid Build Coastguard Worker /* Used instead of CAP_CHOWN to "chown" IPC message queues, semaphores 256*f80ad8b4SAndroid Build Coastguard Worker and shared memory */ 257*f80ad8b4SAndroid Build Coastguard Worker /* Allow locking/unlocking of shared memory segment */ 258*f80ad8b4SAndroid Build Coastguard Worker /* Allow turning swap on/off */ 259*f80ad8b4SAndroid Build Coastguard Worker /* Allow forged pids on socket credentials passing */ 260*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting readahead and flushing buffers on block devices */ 261*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting geometry in floppy driver */ 262*f80ad8b4SAndroid Build Coastguard Worker /* Allow turning DMA on/off in xd driver */ 263*f80ad8b4SAndroid Build Coastguard Worker /* Allow administration of md devices (mostly the above, but some 264*f80ad8b4SAndroid Build Coastguard Worker extra ioctls) */ 265*f80ad8b4SAndroid Build Coastguard Worker /* Allow tuning the ide driver */ 266*f80ad8b4SAndroid Build Coastguard Worker /* Allow access to the nvram device */ 267*f80ad8b4SAndroid Build Coastguard Worker /* Allow administration of apm_bios, serial and bttv (TV) device */ 268*f80ad8b4SAndroid Build Coastguard Worker /* Allow manufacturer commands in isdn CAPI support driver */ 269*f80ad8b4SAndroid Build Coastguard Worker /* Allow reading non-standardized portions of pci configuration space */ 270*f80ad8b4SAndroid Build Coastguard Worker /* Allow DDI debug ioctl on sbpcd driver */ 271*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting up serial ports */ 272*f80ad8b4SAndroid Build Coastguard Worker /* Allow sending raw qic-117 commands */ 273*f80ad8b4SAndroid Build Coastguard Worker /* Allow enabling/disabling tagged queuing on SCSI controllers and sending 274*f80ad8b4SAndroid Build Coastguard Worker arbitrary SCSI commands */ 275*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting encryption key on loopback filesystem */ 276*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting zone reclaim policy */ 277*f80ad8b4SAndroid Build Coastguard Worker /* Allow everything under CAP_BPF and CAP_PERFMON for backward compatibility */ 278*f80ad8b4SAndroid Build Coastguard Worker 279*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_ADMIN 21 280*f80ad8b4SAndroid Build Coastguard Worker 281*f80ad8b4SAndroid Build Coastguard Worker /* Allow use of reboot() */ 282*f80ad8b4SAndroid Build Coastguard Worker 283*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_BOOT 22 284*f80ad8b4SAndroid Build Coastguard Worker 285*f80ad8b4SAndroid Build Coastguard Worker /* Allow raising priority and setting priority on other (different 286*f80ad8b4SAndroid Build Coastguard Worker UID) processes */ 287*f80ad8b4SAndroid Build Coastguard Worker /* Allow use of FIFO and round-robin (realtime) scheduling on own 288*f80ad8b4SAndroid Build Coastguard Worker processes and setting the scheduling algorithm used by another 289*f80ad8b4SAndroid Build Coastguard Worker process. */ 290*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting cpu affinity on other processes */ 291*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting realtime ioprio class */ 292*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting ioprio class on other processes */ 293*f80ad8b4SAndroid Build Coastguard Worker 294*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_NICE 23 295*f80ad8b4SAndroid Build Coastguard Worker 296*f80ad8b4SAndroid Build Coastguard Worker /* Override resource limits. Set resource limits. */ 297*f80ad8b4SAndroid Build Coastguard Worker /* Override quota limits. */ 298*f80ad8b4SAndroid Build Coastguard Worker /* Override reserved space on ext2 filesystem */ 299*f80ad8b4SAndroid Build Coastguard Worker /* Modify data journaling mode on ext3 filesystem (uses journaling 300*f80ad8b4SAndroid Build Coastguard Worker resources) */ 301*f80ad8b4SAndroid Build Coastguard Worker /* NOTE: ext2 honors fsuid when checking for resource overrides, so 302*f80ad8b4SAndroid Build Coastguard Worker you can override using fsuid too */ 303*f80ad8b4SAndroid Build Coastguard Worker /* Override size restrictions on IPC message queues */ 304*f80ad8b4SAndroid Build Coastguard Worker /* Allow more than 64hz interrupts from the real-time clock */ 305*f80ad8b4SAndroid Build Coastguard Worker /* Override max number of consoles on console allocation */ 306*f80ad8b4SAndroid Build Coastguard Worker /* Override max number of keymaps */ 307*f80ad8b4SAndroid Build Coastguard Worker /* Control memory reclaim behavior */ 308*f80ad8b4SAndroid Build Coastguard Worker 309*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_RESOURCE 24 310*f80ad8b4SAndroid Build Coastguard Worker 311*f80ad8b4SAndroid Build Coastguard Worker /* Allow manipulation of system clock */ 312*f80ad8b4SAndroid Build Coastguard Worker /* Allow irix_stime on mips */ 313*f80ad8b4SAndroid Build Coastguard Worker /* Allow setting the real-time clock */ 314*f80ad8b4SAndroid Build Coastguard Worker 315*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_TIME 25 316*f80ad8b4SAndroid Build Coastguard Worker 317*f80ad8b4SAndroid Build Coastguard Worker /* Allow configuration of tty devices */ 318*f80ad8b4SAndroid Build Coastguard Worker /* Allow vhangup() of tty */ 319*f80ad8b4SAndroid Build Coastguard Worker 320*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYS_TTY_CONFIG 26 321*f80ad8b4SAndroid Build Coastguard Worker 322*f80ad8b4SAndroid Build Coastguard Worker /* Allow the privileged aspects of mknod() */ 323*f80ad8b4SAndroid Build Coastguard Worker 324*f80ad8b4SAndroid Build Coastguard Worker #define CAP_MKNOD 27 325*f80ad8b4SAndroid Build Coastguard Worker 326*f80ad8b4SAndroid Build Coastguard Worker /* Allow taking of leases on files */ 327*f80ad8b4SAndroid Build Coastguard Worker 328*f80ad8b4SAndroid Build Coastguard Worker #define CAP_LEASE 28 329*f80ad8b4SAndroid Build Coastguard Worker 330*f80ad8b4SAndroid Build Coastguard Worker /* Allow writing the audit log via unicast netlink socket */ 331*f80ad8b4SAndroid Build Coastguard Worker 332*f80ad8b4SAndroid Build Coastguard Worker #define CAP_AUDIT_WRITE 29 333*f80ad8b4SAndroid Build Coastguard Worker 334*f80ad8b4SAndroid Build Coastguard Worker /* Allow configuration of audit via unicast netlink socket */ 335*f80ad8b4SAndroid Build Coastguard Worker 336*f80ad8b4SAndroid Build Coastguard Worker #define CAP_AUDIT_CONTROL 30 337*f80ad8b4SAndroid Build Coastguard Worker 338*f80ad8b4SAndroid Build Coastguard Worker /* Set or remove capabilities on files. 339*f80ad8b4SAndroid Build Coastguard Worker Map uid=0 into a child user namespace. */ 340*f80ad8b4SAndroid Build Coastguard Worker 341*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SETFCAP 31 342*f80ad8b4SAndroid Build Coastguard Worker 343*f80ad8b4SAndroid Build Coastguard Worker /* Override MAC access. 344*f80ad8b4SAndroid Build Coastguard Worker The base kernel enforces no MAC policy. 345*f80ad8b4SAndroid Build Coastguard Worker An LSM may enforce a MAC policy, and if it does and it chooses 346*f80ad8b4SAndroid Build Coastguard Worker to implement capability based overrides of that policy, this is 347*f80ad8b4SAndroid Build Coastguard Worker the capability it should use to do so. */ 348*f80ad8b4SAndroid Build Coastguard Worker 349*f80ad8b4SAndroid Build Coastguard Worker #define CAP_MAC_OVERRIDE 32 350*f80ad8b4SAndroid Build Coastguard Worker 351*f80ad8b4SAndroid Build Coastguard Worker /* Allow MAC configuration or state changes. 352*f80ad8b4SAndroid Build Coastguard Worker The base kernel requires no MAC configuration. 353*f80ad8b4SAndroid Build Coastguard Worker An LSM may enforce a MAC policy, and if it does and it chooses 354*f80ad8b4SAndroid Build Coastguard Worker to implement capability based checks on modifications to that 355*f80ad8b4SAndroid Build Coastguard Worker policy or the data required to maintain it, this is the 356*f80ad8b4SAndroid Build Coastguard Worker capability it should use to do so. */ 357*f80ad8b4SAndroid Build Coastguard Worker 358*f80ad8b4SAndroid Build Coastguard Worker #define CAP_MAC_ADMIN 33 359*f80ad8b4SAndroid Build Coastguard Worker 360*f80ad8b4SAndroid Build Coastguard Worker /* Allow configuring the kernel's syslog (printk behaviour) */ 361*f80ad8b4SAndroid Build Coastguard Worker 362*f80ad8b4SAndroid Build Coastguard Worker #define CAP_SYSLOG 34 363*f80ad8b4SAndroid Build Coastguard Worker 364*f80ad8b4SAndroid Build Coastguard Worker /* Allow triggering something that will wake the system */ 365*f80ad8b4SAndroid Build Coastguard Worker 366*f80ad8b4SAndroid Build Coastguard Worker #define CAP_WAKE_ALARM 35 367*f80ad8b4SAndroid Build Coastguard Worker 368*f80ad8b4SAndroid Build Coastguard Worker /* Allow preventing system suspends */ 369*f80ad8b4SAndroid Build Coastguard Worker 370*f80ad8b4SAndroid Build Coastguard Worker #define CAP_BLOCK_SUSPEND 36 371*f80ad8b4SAndroid Build Coastguard Worker 372*f80ad8b4SAndroid Build Coastguard Worker /* Allow reading the audit log via multicast netlink socket */ 373*f80ad8b4SAndroid Build Coastguard Worker 374*f80ad8b4SAndroid Build Coastguard Worker #define CAP_AUDIT_READ 37 375*f80ad8b4SAndroid Build Coastguard Worker 376*f80ad8b4SAndroid Build Coastguard Worker /* 377*f80ad8b4SAndroid Build Coastguard Worker * Allow system performance and observability privileged operations 378*f80ad8b4SAndroid Build Coastguard Worker * using perf_events, i915_perf and other kernel subsystems 379*f80ad8b4SAndroid Build Coastguard Worker */ 380*f80ad8b4SAndroid Build Coastguard Worker 381*f80ad8b4SAndroid Build Coastguard Worker #define CAP_PERFMON 38 382*f80ad8b4SAndroid Build Coastguard Worker 383*f80ad8b4SAndroid Build Coastguard Worker /* 384*f80ad8b4SAndroid Build Coastguard Worker * CAP_BPF allows the following BPF operations: 385*f80ad8b4SAndroid Build Coastguard Worker * - Creating all types of BPF maps 386*f80ad8b4SAndroid Build Coastguard Worker * - Advanced verifier features 387*f80ad8b4SAndroid Build Coastguard Worker * - Indirect variable access 388*f80ad8b4SAndroid Build Coastguard Worker * - Bounded loops 389*f80ad8b4SAndroid Build Coastguard Worker * - BPF to BPF function calls 390*f80ad8b4SAndroid Build Coastguard Worker * - Scalar precision tracking 391*f80ad8b4SAndroid Build Coastguard Worker * - Larger complexity limits 392*f80ad8b4SAndroid Build Coastguard Worker * - Dead code elimination 393*f80ad8b4SAndroid Build Coastguard Worker * - And potentially other features 394*f80ad8b4SAndroid Build Coastguard Worker * - Loading BPF Type Format (BTF) data 395*f80ad8b4SAndroid Build Coastguard Worker * - Retrieve xlated and JITed code of BPF programs 396*f80ad8b4SAndroid Build Coastguard Worker * - Use bpf_spin_lock() helper 397*f80ad8b4SAndroid Build Coastguard Worker * 398*f80ad8b4SAndroid Build Coastguard Worker * CAP_PERFMON relaxes the verifier checks further: 399*f80ad8b4SAndroid Build Coastguard Worker * - BPF progs can use of pointer-to-integer conversions 400*f80ad8b4SAndroid Build Coastguard Worker * - speculation attack hardening measures are bypassed 401*f80ad8b4SAndroid Build Coastguard Worker * - bpf_probe_read to read arbitrary kernel memory is allowed 402*f80ad8b4SAndroid Build Coastguard Worker * - bpf_trace_printk to print kernel memory is allowed 403*f80ad8b4SAndroid Build Coastguard Worker * 404*f80ad8b4SAndroid Build Coastguard Worker * CAP_SYS_ADMIN is required to use bpf_probe_write_user. 405*f80ad8b4SAndroid Build Coastguard Worker * 406*f80ad8b4SAndroid Build Coastguard Worker * CAP_SYS_ADMIN is required to iterate system wide loaded 407*f80ad8b4SAndroid Build Coastguard Worker * programs, maps, links, BTFs and convert their IDs to file descriptors. 408*f80ad8b4SAndroid Build Coastguard Worker * 409*f80ad8b4SAndroid Build Coastguard Worker * CAP_PERFMON and CAP_BPF are required to load tracing programs. 410*f80ad8b4SAndroid Build Coastguard Worker * CAP_NET_ADMIN and CAP_BPF are required to load networking programs. 411*f80ad8b4SAndroid Build Coastguard Worker */ 412*f80ad8b4SAndroid Build Coastguard Worker #define CAP_BPF 39 413*f80ad8b4SAndroid Build Coastguard Worker 414*f80ad8b4SAndroid Build Coastguard Worker 415*f80ad8b4SAndroid Build Coastguard Worker /* Allow checkpoint/restore related operations */ 416*f80ad8b4SAndroid Build Coastguard Worker /* Allow PID selection during clone3() */ 417*f80ad8b4SAndroid Build Coastguard Worker /* Allow writing to ns_last_pid */ 418*f80ad8b4SAndroid Build Coastguard Worker 419*f80ad8b4SAndroid Build Coastguard Worker #define CAP_CHECKPOINT_RESTORE 40 420*f80ad8b4SAndroid Build Coastguard Worker 421*f80ad8b4SAndroid Build Coastguard Worker #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE 422*f80ad8b4SAndroid Build Coastguard Worker 423*f80ad8b4SAndroid Build Coastguard Worker #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP) 424*f80ad8b4SAndroid Build Coastguard Worker 425*f80ad8b4SAndroid Build Coastguard Worker /* 426*f80ad8b4SAndroid Build Coastguard Worker * Bit location of each capability (used by user-space library and kernel) 427*f80ad8b4SAndroid Build Coastguard Worker */ 428*f80ad8b4SAndroid Build Coastguard Worker 429*f80ad8b4SAndroid Build Coastguard Worker #define CAP_TO_INDEX(x) ((x) >> 5) /* 1 << 5 == bits in __u32 */ 430*f80ad8b4SAndroid Build Coastguard Worker #define CAP_TO_MASK(x) (1U << ((x) & 31)) /* mask for indexed __u32 */ 431*f80ad8b4SAndroid Build Coastguard Worker 432*f80ad8b4SAndroid Build Coastguard Worker 433*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_CAPABILITY_H */ 434