diff options
author | Michael LeMay <mdlemay@epoch.ncsc.mil> | 2006-06-26 03:24:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-26 12:58:18 -0400 |
commit | 4eb582cf1fbd7b9e5f466e3718a59c957e75254e (patch) | |
tree | 4387e460a50efa8d46a54526d0cf0959c0e3b428 /security/selinux/include | |
parent | 06ec7be557a1259611d6093a00463c42650dc71a (diff) |
[PATCH] keys: add a way to store the appropriate context for newly-created keys
Add a /proc/<pid>/attr/keycreate entry that stores the appropriate context for
newly-created keys. Modify the selinux_key_alloc hook to make use of the new
entry. Update the flask headers to include a new "setkeycreate" permission
for processes. Update the flask headers to include a new "create" permission
for keys. Use the create permission to restrict which SIDs each task can
assign to newly-created keys. Add a new parameter to the security hook
"security_key_alloc" to indicate whether it is being invoked by the kernel, or
from userspace. If it is being invoked by the kernel, the security hook
should never fail. Update the documentation to reflect these changes.
Signed-off-by: Michael LeMay <mdlemay@epoch.ncsc.mil>
Signed-off-by: James Morris <jmorris@namei.org>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'security/selinux/include')
-rw-r--r-- | security/selinux/include/av_perm_to_string.h | 2 | ||||
-rw-r--r-- | security/selinux/include/av_permissions.h | 3 | ||||
-rw-r--r-- | security/selinux/include/objsec.h | 1 |
3 files changed, 5 insertions, 1 deletions
diff --git a/security/selinux/include/av_perm_to_string.h b/security/selinux/include/av_perm_to_string.h index bc020bde6c86..e777578ccd9d 100644 --- a/security/selinux/include/av_perm_to_string.h +++ b/security/selinux/include/av_perm_to_string.h | |||
@@ -72,6 +72,7 @@ | |||
72 | S_(SECCLASS_PROCESS, PROCESS__EXECMEM, "execmem") | 72 | S_(SECCLASS_PROCESS, PROCESS__EXECMEM, "execmem") |
73 | S_(SECCLASS_PROCESS, PROCESS__EXECSTACK, "execstack") | 73 | S_(SECCLASS_PROCESS, PROCESS__EXECSTACK, "execstack") |
74 | S_(SECCLASS_PROCESS, PROCESS__EXECHEAP, "execheap") | 74 | S_(SECCLASS_PROCESS, PROCESS__EXECHEAP, "execheap") |
75 | S_(SECCLASS_PROCESS, PROCESS__SETKEYCREATE, "setkeycreate") | ||
75 | S_(SECCLASS_MSGQ, MSGQ__ENQUEUE, "enqueue") | 76 | S_(SECCLASS_MSGQ, MSGQ__ENQUEUE, "enqueue") |
76 | S_(SECCLASS_MSG, MSG__SEND, "send") | 77 | S_(SECCLASS_MSG, MSG__SEND, "send") |
77 | S_(SECCLASS_MSG, MSG__RECEIVE, "receive") | 78 | S_(SECCLASS_MSG, MSG__RECEIVE, "receive") |
@@ -248,3 +249,4 @@ | |||
248 | S_(SECCLASS_KEY, KEY__SEARCH, "search") | 249 | S_(SECCLASS_KEY, KEY__SEARCH, "search") |
249 | S_(SECCLASS_KEY, KEY__LINK, "link") | 250 | S_(SECCLASS_KEY, KEY__LINK, "link") |
250 | S_(SECCLASS_KEY, KEY__SETATTR, "setattr") | 251 | S_(SECCLASS_KEY, KEY__SETATTR, "setattr") |
252 | S_(SECCLASS_KEY, KEY__CREATE, "create") | ||
diff --git a/security/selinux/include/av_permissions.h b/security/selinux/include/av_permissions.h index 1205227a3a33..1e1678023b68 100644 --- a/security/selinux/include/av_permissions.h +++ b/security/selinux/include/av_permissions.h | |||
@@ -467,6 +467,7 @@ | |||
467 | #define PROCESS__EXECMEM 0x02000000UL | 467 | #define PROCESS__EXECMEM 0x02000000UL |
468 | #define PROCESS__EXECSTACK 0x04000000UL | 468 | #define PROCESS__EXECSTACK 0x04000000UL |
469 | #define PROCESS__EXECHEAP 0x08000000UL | 469 | #define PROCESS__EXECHEAP 0x08000000UL |
470 | #define PROCESS__SETKEYCREATE 0x10000000UL | ||
470 | 471 | ||
471 | #define IPC__CREATE 0x00000001UL | 472 | #define IPC__CREATE 0x00000001UL |
472 | #define IPC__DESTROY 0x00000002UL | 473 | #define IPC__DESTROY 0x00000002UL |
@@ -966,4 +967,4 @@ | |||
966 | #define KEY__SEARCH 0x00000008UL | 967 | #define KEY__SEARCH 0x00000008UL |
967 | #define KEY__LINK 0x00000010UL | 968 | #define KEY__LINK 0x00000010UL |
968 | #define KEY__SETATTR 0x00000020UL | 969 | #define KEY__SETATTR 0x00000020UL |
969 | 970 | #define KEY__CREATE 0x00000040UL | |
diff --git a/security/selinux/include/objsec.h b/security/selinux/include/objsec.h index 8f5547ad1856..191b3e4484ce 100644 --- a/security/selinux/include/objsec.h +++ b/security/selinux/include/objsec.h | |||
@@ -32,6 +32,7 @@ struct task_security_struct { | |||
32 | u32 sid; /* current SID */ | 32 | u32 sid; /* current SID */ |
33 | u32 exec_sid; /* exec SID */ | 33 | u32 exec_sid; /* exec SID */ |
34 | u32 create_sid; /* fscreate SID */ | 34 | u32 create_sid; /* fscreate SID */ |
35 | u32 keycreate_sid; /* keycreate SID */ | ||
35 | u32 ptrace_sid; /* SID of ptrace parent */ | 36 | u32 ptrace_sid; /* SID of ptrace parent */ |
36 | }; | 37 | }; |
37 | 38 | ||