xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/capability.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
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