diff options
| author | elad <elad@NetBSD.org> | 2007-11-21 22:49:05 +0000 |
|---|---|---|
| committer | elad <elad@NetBSD.org> | 2007-11-21 22:49:05 +0000 |
| commit | 6887492c261e6d27ac6fa6294fb8552ffcfd0c49 (patch) | |
| tree | 78d111bde1dabc4e6b5af527827c1adb7b37e3e1 /sys/secmodel | |
| parent | e3e9b753513368b9a76956e04b089d78306a974d (diff) | |
Make securelevel a "secmodel" of its own.
While it's true that it's part of the traditional 4.4BSD security model,
there may come a time where a different "primary" security model used for
fine-grained privileges (ie., splitting root's responsibilities to various
privileges that can be assigned) may want to still have a securelevel
setting.
Idea from Daniel Carosone:
http://mail-index.netbsd.org/tech-security/2006/08/25/0001.html
The location of the removed files, for reference, was:
src/secmodel/bsd44/secmodel_bsd44_securelevel.c
src/secmodel/bsd44/securelevel.h
Diffstat (limited to 'sys/secmodel')
| -rw-r--r-- | sys/secmodel/bsd44/files.bsd44 | 5 | ||||
| -rw-r--r-- | sys/secmodel/bsd44/secmodel_bsd44.c | 12 | ||||
| -rw-r--r-- | sys/secmodel/bsd44/secmodel_bsd44_logic.c | 8 | ||||
| -rw-r--r-- | sys/secmodel/files.secmodel | 7 | ||||
| -rw-r--r-- | sys/secmodel/securelevel/files.securelevel | 5 | ||||
| -rw-r--r-- | sys/secmodel/securelevel/secmodel_securelevel.c (renamed from sys/secmodel/bsd44/secmodel_bsd44_securelevel.c) | 40 | ||||
| -rw-r--r-- | sys/secmodel/securelevel/securelevel.h (renamed from sys/secmodel/bsd44/securelevel.h) | 28 |
7 files changed, 57 insertions, 48 deletions
diff --git a/sys/secmodel/bsd44/files.bsd44 b/sys/secmodel/bsd44/files.bsd44 index 3896b843921..5f006461cb2 100644 --- a/sys/secmodel/bsd44/files.bsd44 +++ b/sys/secmodel/bsd44/files.bsd44 @@ -1,9 +1,8 @@ -# $NetBSD: files.bsd44,v 1.1 2006/09/08 20:58:57 elad Exp $ +# $NetBSD: files.bsd44,v 1.2 2007/11/21 22:49:07 elad Exp $ defflag secmodel_bsd44_logic -defflag secmodel_bsd44 : secmodel_bsd44_logic +defflag secmodel_bsd44 : secmodel_bsd44_logic, secmodel_securelevel file secmodel/bsd44/secmodel_bsd44.c secmodel_bsd44 file secmodel/bsd44/secmodel_bsd44_logic.c secmodel_bsd44_logic file secmodel/bsd44/secmodel_bsd44_suser.c secmodel_bsd44_logic -file secmodel/bsd44/secmodel_bsd44_securelevel.c secmodel_bsd44_logic diff --git a/sys/secmodel/bsd44/secmodel_bsd44.c b/sys/secmodel/bsd44/secmodel_bsd44.c index e27465d1f38..0ea41f658cb 100644 --- a/sys/secmodel/bsd44/secmodel_bsd44.c +++ b/sys/secmodel/bsd44/secmodel_bsd44.c @@ -1,4 +1,4 @@ -/* $NetBSD: secmodel_bsd44.c,v 1.10 2007/01/16 11:53:00 elad Exp $ */ +/* $NetBSD: secmodel_bsd44.c,v 1.11 2007/11/21 22:49:07 elad Exp $ */ /*- * Copyright (c) 2006 Elad Efrat <elad@NetBSD.org> * All rights reserved. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44.c,v 1.10 2007/01/16 11:53:00 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44.c,v 1.11 2007/11/21 22:49:07 elad Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -39,7 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44.c,v 1.10 2007/01/16 11:53:00 elad Exp #include <secmodel/bsd44/bsd44.h> #include <secmodel/bsd44/suser.h> -#include <secmodel/bsd44/securelevel.h> +#include <secmodel/securelevel/securelevel.h> SYSCTL_SETUP(sysctl_security_bsd44_setup, "sysctl security bsd44 setup") @@ -82,7 +82,7 @@ SYSCTL_SETUP(sysctl_security_bsd44_setup, CTLFLAG_PERMANENT|CTLFLAG_READWRITE, CTLTYPE_INT, "securelevel", SYSCTL_DESCR("System security level"), - secmodel_bsd44_sysctl_securelevel, 0, NULL, 0, + secmodel_securelevel_sysctl, 0, NULL, 0, CTL_CREATE, CTL_EOL); sysctl_createv(clog, 0, &rnode, NULL, @@ -100,7 +100,7 @@ secmodel_bsd44_start(void) secmodel_bsd44_init(); secmodel_bsd44_suser_start(); - secmodel_bsd44_securelevel_start(); + secmodel_securelevel_start(); secmodel_register(); } @@ -110,7 +110,7 @@ void secmodel_bsd44_stop(void) { secmodel_bsd44_suser_stop(); - secmodel_bsd44_securelevel_stop(); + secmodel_securelevel_stop(); secmodel_deregister(); } diff --git a/sys/secmodel/bsd44/secmodel_bsd44_logic.c b/sys/secmodel/bsd44/secmodel_bsd44_logic.c index d447294ded6..c13362c9665 100644 --- a/sys/secmodel/bsd44/secmodel_bsd44_logic.c +++ b/sys/secmodel/bsd44/secmodel_bsd44_logic.c @@ -1,4 +1,4 @@ -/* $NetBSD: secmodel_bsd44_logic.c,v 1.3 2007/01/09 12:57:56 elad Exp $ */ +/* $NetBSD: secmodel_bsd44_logic.c,v 1.4 2007/11/21 22:49:07 elad Exp $ */ /*- * Copyright (c) 2006 Elad Efrat <elad@NetBSD.org> * All rights reserved. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44_logic.c,v 1.3 2007/01/09 12:57:56 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44_logic.c,v 1.4 2007/11/21 22:49:07 elad Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -37,7 +37,7 @@ __KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44_logic.c,v 1.3 2007/01/09 12:57:56 ela #include <secmodel/bsd44/bsd44.h> #include <secmodel/bsd44/suser.h> -#include <secmodel/bsd44/securelevel.h> +#include <secmodel/securelevel/securelevel.h> int secmodel_bsd44_curtain; @@ -47,6 +47,6 @@ int secmodel_bsd44_curtain; void secmodel_bsd44_init(void) { - secmodel_bsd44_securelevel_init(); + secmodel_securelevel_init(); secmodel_bsd44_curtain = 0; } diff --git a/sys/secmodel/files.secmodel b/sys/secmodel/files.secmodel index c2eaadc0485..d0f18d67a39 100644 --- a/sys/secmodel/files.secmodel +++ b/sys/secmodel/files.secmodel @@ -1,4 +1,9 @@ -# $NetBSD: files.secmodel,v 1.1 2006/09/08 20:58:56 elad Exp $ +# $NetBSD: files.secmodel,v 1.2 2007/11/21 22:49:07 elad Exp $ + +# +# Traditional 4.4BSD - Securelevel +# +include "secmodel/securelevel/files.securelevel" # # Traditional NetBSD (derived from 4.4BSD) diff --git a/sys/secmodel/securelevel/files.securelevel b/sys/secmodel/securelevel/files.securelevel new file mode 100644 index 00000000000..edaff734e7b --- /dev/null +++ b/sys/secmodel/securelevel/files.securelevel @@ -0,0 +1,5 @@ +# $NetBSD: files.securelevel,v 1.1 2007/11/21 22:49:09 elad Exp $ + +defflag secmodel_securelevel + +file secmodel/securelevel/secmodel_securelevel.c secmodel_securelevel diff --git a/sys/secmodel/bsd44/secmodel_bsd44_securelevel.c b/sys/secmodel/securelevel/secmodel_securelevel.c index fd0a0614295..67d43e31e3c 100644 --- a/sys/secmodel/bsd44/secmodel_bsd44_securelevel.c +++ b/sys/secmodel/securelevel/secmodel_securelevel.c @@ -1,4 +1,4 @@ -/* $NetBSD: secmodel_bsd44_securelevel.c,v 1.30 2007/07/09 21:11:31 ad Exp $ */ +/* $NetBSD: secmodel_securelevel.c,v 1.1 2007/11/21 22:49:09 elad Exp $ */ /*- * Copyright (c) 2006 Elad Efrat <elad@NetBSD.org> * All rights reserved. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44_securelevel.c,v 1.30 2007/07/09 21:11:31 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: secmodel_securelevel.c,v 1.1 2007/11/21 22:49:09 elad Exp $"); #ifdef _KERNEL_OPT #include "opt_insecure.h" @@ -52,7 +52,7 @@ __KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44_securelevel.c,v 1.30 2007/07/09 21:11 #include <miscfs/specfs/specdev.h> -#include <secmodel/bsd44/securelevel.h> +#include <secmodel/securelevel/securelevel.h> static int securelevel; @@ -63,7 +63,7 @@ static kauth_listener_t l_system, l_process, l_network, l_machdep, l_device; * only rises unless the caller has pid 1 (assumed to be init). */ int -secmodel_bsd44_sysctl_securelevel(SYSCTLFN_ARGS) +secmodel_securelevel_sysctl(SYSCTLFN_ARGS) { int newsecurelevel, error; struct sysctlnode node; @@ -84,7 +84,7 @@ secmodel_bsd44_sysctl_securelevel(SYSCTLFN_ARGS) } void -secmodel_bsd44_securelevel_init(void) +secmodel_securelevel_init(void) { #ifdef INSECURE securelevel = -1; @@ -93,8 +93,8 @@ secmodel_bsd44_securelevel_init(void) #endif /* INSECURE */ } -SYSCTL_SETUP(sysctl_security_bsd44_securelevel_setup, - "sysctl security bsd44 securelevel setup") +SYSCTL_SETUP(sysctl_security_securelevel_setup, + "sysctl security securelevel setup") { /* * For compatibility, we create a kern.securelevel variable. @@ -109,28 +109,28 @@ SYSCTL_SETUP(sysctl_security_bsd44_securelevel_setup, CTLFLAG_PERMANENT|CTLFLAG_READWRITE, CTLTYPE_INT, "securelevel", SYSCTL_DESCR("System security level"), - secmodel_bsd44_sysctl_securelevel, 0, NULL, 0, + secmodel_securelevel_sysctl, 0, NULL, 0, CTL_KERN, KERN_SECURELVL, CTL_EOL); } void -secmodel_bsd44_securelevel_start(void) +secmodel_securelevel_start(void) { l_system = kauth_listen_scope(KAUTH_SCOPE_SYSTEM, - secmodel_bsd44_securelevel_system_cb, NULL); + secmodel_securelevel_system_cb, NULL); l_process = kauth_listen_scope(KAUTH_SCOPE_PROCESS, - secmodel_bsd44_securelevel_process_cb, NULL); + secmodel_securelevel_process_cb, NULL); l_network = kauth_listen_scope(KAUTH_SCOPE_NETWORK, - secmodel_bsd44_securelevel_network_cb, NULL); + secmodel_securelevel_network_cb, NULL); l_machdep = kauth_listen_scope(KAUTH_SCOPE_MACHDEP, - secmodel_bsd44_securelevel_machdep_cb, NULL); + secmodel_securelevel_machdep_cb, NULL); l_device = kauth_listen_scope(KAUTH_SCOPE_DEVICE, - secmodel_bsd44_securelevel_device_cb, NULL); + secmodel_securelevel_device_cb, NULL); } #if defined(_LKM) void -secmodel_bsd44_securelevel_stop(void) +secmodel_securelevel_stop(void) { kauth_unlisten_scope(l_system); kauth_unlisten_scope(l_process); @@ -148,7 +148,7 @@ secmodel_bsd44_securelevel_stop(void) * Responsibility: Securelevel */ int -secmodel_bsd44_securelevel_system_cb(kauth_cred_t cred, +secmodel_securelevel_system_cb(kauth_cred_t cred, kauth_action_t action, void *cookie, void *arg0, void *arg1, void *arg2, void *arg3) { @@ -267,7 +267,7 @@ secmodel_bsd44_securelevel_system_cb(kauth_cred_t cred, * Responsibility: Securelevel */ int -secmodel_bsd44_securelevel_process_cb(kauth_cred_t cred, +secmodel_securelevel_process_cb(kauth_cred_t cred, kauth_action_t action, void *cookie, void *arg0, void *arg1, void *arg2, void *arg3) { @@ -335,7 +335,7 @@ secmodel_bsd44_securelevel_process_cb(kauth_cred_t cred, * Responsibility: Securelevel */ int -secmodel_bsd44_securelevel_network_cb(kauth_cred_t cred, +secmodel_securelevel_network_cb(kauth_cred_t cred, kauth_action_t action, void *cookie, void *arg0, void *arg1, void *arg2, void *arg3) { @@ -381,7 +381,7 @@ secmodel_bsd44_securelevel_network_cb(kauth_cred_t cred, * Responsibility: Securelevel */ int -secmodel_bsd44_securelevel_machdep_cb(kauth_cred_t cred, +secmodel_securelevel_machdep_cb(kauth_cred_t cred, kauth_action_t action, void *cookie, void *arg0, void *arg1, void *arg2, void *arg3) { @@ -417,7 +417,7 @@ secmodel_bsd44_securelevel_machdep_cb(kauth_cred_t cred, * Responsibility: Securelevel */ int -secmodel_bsd44_securelevel_device_cb(kauth_cred_t cred, +secmodel_securelevel_device_cb(kauth_cred_t cred, kauth_action_t action, void *cookie, void *arg0, void *arg1, void *arg2, void *arg3) { diff --git a/sys/secmodel/bsd44/securelevel.h b/sys/secmodel/securelevel/securelevel.h index e3162652b7b..f9f98f7f1fc 100644 --- a/sys/secmodel/bsd44/securelevel.h +++ b/sys/secmodel/securelevel/securelevel.h @@ -1,4 +1,4 @@ -/* $NetBSD: securelevel.h,v 1.5 2007/01/09 12:57:56 elad Exp $ */ +/* $NetBSD: securelevel.h,v 1.1 2007/11/21 22:49:09 elad Exp $ */ /*- * Copyright (c) 2006 Elad Efrat <elad@NetBSD.org> * All rights reserved. @@ -26,28 +26,28 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _SECMODEL_BSD44_SECURELEVEL_H_ -#define _SECMODEL_BSD44_SECURELEVEL_H_ +#ifndef _SECMODEL_SECURELEVEL_SECURELEVEL_H_ +#define _SECMODEL_SECURELEVEL_SECURELEVEL_H_ -int secmodel_bsd44_sysctl_securelevel(SYSCTLFN_PROTO); +int secmodel_securelevel_sysctl(SYSCTLFN_PROTO); -void secmodel_bsd44_securelevel_init(void); -void secmodel_bsd44_securelevel_start(void); +void secmodel_securelevel_init(void); +void secmodel_securelevel_start(void); #if defined(_LKM) -void secmodel_bsd44_securelevel_stop(void); -SYSCTL_SETUP_PROTO(sysctl_security_bsd44_securelevel_setup); +void secmodel_securelevel_stop(void); +SYSCTL_SETUP_PROTO(sysctl_security_securelevel_setup); #endif /* _LKM */ -int secmodel_bsd44_securelevel_system_cb(kauth_cred_t, kauth_action_t, void *, +int secmodel_securelevel_system_cb(kauth_cred_t, kauth_action_t, void *, void *, void *, void *, void *); -int secmodel_bsd44_securelevel_process_cb(kauth_cred_t, kauth_action_t, void *, +int secmodel_securelevel_process_cb(kauth_cred_t, kauth_action_t, void *, void *, void *, void *, void *); -int secmodel_bsd44_securelevel_network_cb(kauth_cred_t, kauth_action_t, void *, +int secmodel_securelevel_network_cb(kauth_cred_t, kauth_action_t, void *, void *, void *, void *, void *); -int secmodel_bsd44_securelevel_machdep_cb(kauth_cred_t, kauth_action_t, void *, +int secmodel_securelevel_machdep_cb(kauth_cred_t, kauth_action_t, void *, void *, void *, void *, void *); -int secmodel_bsd44_securelevel_device_cb(kauth_cred_t, kauth_action_t, void *, +int secmodel_securelevel_device_cb(kauth_cred_t, kauth_action_t, void *, void *, void *, void *, void *); -#endif /* !_SECMODEL_BSD44_SECURELEVEL_H_ */ +#endif /* !_SECMODEL_SECURELEVEL_SECURELEVEL_H_ */ |
