| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _LINUX_SECUREBITS_H | 
 | 2 | #define _LINUX_SECUREBITS_H 1 | 
 | 3 |  | 
| Serge E. Hallyn | 5975c72 | 2009-10-29 11:40:17 -0500 | [diff] [blame] | 4 | /* Each securesetting is implemented using two bits. One bit specifies | 
 | 5 |    whether the setting is on or off. The other bit specify whether the | 
 | 6 |    setting is locked or not. A setting which is locked cannot be | 
 | 7 |    changed from user-level. */ | 
 | 8 | #define issecure_mask(X)	(1 << (X)) | 
 | 9 | #ifdef __KERNEL__ | 
 | 10 | #define issecure(X)		(issecure_mask(X) & current_cred_xxx(securebits)) | 
 | 11 | #endif | 
 | 12 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 13 | #define SECUREBITS_DEFAULT 0x00000000 | 
 | 14 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 15 | /* When set UID 0 has no special privileges. When unset, we support | 
 | 16 |    inheritance of root-permissions and suid-root executable under | 
 | 17 |    compatibility mode. We raise the effective and inheritable bitmasks | 
 | 18 |    *of the executable file* if the effective uid of the new process is | 
| Andrew G. Morgan | 086f731 | 2008-07-04 09:59:58 -0700 | [diff] [blame] | 19 |    0. If the real uid is 0, we raise the effective (legacy) bit of the | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 |    executable file. */ | 
| Andrew G. Morgan | 3898b1b | 2008-04-28 02:13:40 -0700 | [diff] [blame] | 21 | #define SECURE_NOROOT			0 | 
 | 22 | #define SECURE_NOROOT_LOCKED		1  /* make bit-0 immutable */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 23 |  | 
| Serge E. Hallyn | 5975c72 | 2009-10-29 11:40:17 -0500 | [diff] [blame] | 24 | #define SECBIT_NOROOT		(issecure_mask(SECURE_NOROOT)) | 
 | 25 | #define SECBIT_NOROOT_LOCKED	(issecure_mask(SECURE_NOROOT_LOCKED)) | 
 | 26 |  | 
| Andrew G. Morgan | 086f731 | 2008-07-04 09:59:58 -0700 | [diff] [blame] | 27 | /* When set, setuid to/from uid 0 does not trigger capability-"fixup". | 
 | 28 |    When unset, to provide compatiblility with old programs relying on | 
 | 29 |    set*uid to gain/lose privilege, transitions to/from uid 0 cause | 
 | 30 |    capabilities to be gained/lost. */ | 
| Andrew G. Morgan | 3898b1b | 2008-04-28 02:13:40 -0700 | [diff] [blame] | 31 | #define SECURE_NO_SETUID_FIXUP		2 | 
 | 32 | #define SECURE_NO_SETUID_FIXUP_LOCKED	3  /* make bit-2 immutable */ | 
 | 33 |  | 
| Serge E. Hallyn | 5975c72 | 2009-10-29 11:40:17 -0500 | [diff] [blame] | 34 | #define SECBIT_NO_SETUID_FIXUP	(issecure_mask(SECURE_NO_SETUID_FIXUP)) | 
 | 35 | #define SECBIT_NO_SETUID_FIXUP_LOCKED \ | 
 | 36 | 			(issecure_mask(SECURE_NO_SETUID_FIXUP_LOCKED)) | 
 | 37 |  | 
| Andrew G. Morgan | 3898b1b | 2008-04-28 02:13:40 -0700 | [diff] [blame] | 38 | /* When set, a process can retain its capabilities even after | 
 | 39 |    transitioning to a non-root user (the set-uid fixup suppressed by | 
 | 40 |    bit 2). Bit-4 is cleared when a process calls exec(); setting both | 
 | 41 |    bit 4 and 5 will create a barrier through exec that no exec()'d | 
 | 42 |    child can use this feature again. */ | 
 | 43 | #define SECURE_KEEP_CAPS		4 | 
 | 44 | #define SECURE_KEEP_CAPS_LOCKED		5  /* make bit-4 immutable */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 45 |  | 
| Serge E. Hallyn | 5975c72 | 2009-10-29 11:40:17 -0500 | [diff] [blame] | 46 | #define SECBIT_KEEP_CAPS	(issecure_mask(SECURE_KEEP_CAPS)) | 
 | 47 | #define SECBIT_KEEP_CAPS_LOCKED (issecure_mask(SECURE_KEEP_CAPS_LOCKED)) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 48 |  | 
| Andrew G. Morgan | 3898b1b | 2008-04-28 02:13:40 -0700 | [diff] [blame] | 49 | #define SECURE_ALL_BITS		(issecure_mask(SECURE_NOROOT) | \ | 
 | 50 | 				 issecure_mask(SECURE_NO_SETUID_FIXUP) | \ | 
 | 51 | 				 issecure_mask(SECURE_KEEP_CAPS)) | 
 | 52 | #define SECURE_ALL_LOCKS	(SECURE_ALL_BITS << 1) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 |  | 
 | 54 | #endif /* !_LINUX_SECUREBITS_H */ |