Skip to content

Commit

Permalink
Yama: remove needless CONFIG_SECURITY_YAMA_STACKED
Browse files Browse the repository at this point in the history
Now that minor LSMs can cleanly stack with major LSMs, remove the unneeded
config for Yama to be made to explicitly stack. Just selecting the main
Yama CONFIG will allow it to work, regardless of the major LSM. Since
distros using Yama are already forcing it to stack, this is effectively
a no-op change.

Additionally add MAINTAINERS entry.

Signed-off-by: Kees Cook <[email protected]>
Signed-off-by: James Morris <[email protected]>
  • Loading branch information
kees authored and James Morris committed Jul 28, 2015
1 parent fe6c59d commit 730daa1
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 52 deletions.
10 changes: 4 additions & 6 deletions Documentation/security/Yama.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
Yama is a Linux Security Module that collects a number of system-wide DAC
security protections that are not handled by the core kernel itself. To
select it at boot time, specify "security=yama" (though this will disable
any other LSM).

Yama is controlled through sysctl in /proc/sys/kernel/yama:
Yama is a Linux Security Module that collects system-wide DAC security
protections that are not handled by the core kernel itself. This is
selectable at build-time with CONFIG_SECURITY_YAMA, and can be controlled
at run-time through sysctls in /proc/sys/kernel/yama:

- ptrace_scope

Expand Down
6 changes: 6 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -9102,6 +9102,12 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git
S: Supported
F: security/apparmor/

YAMA SECURITY MODULE
M: Kees Cook <[email protected]>
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
S: Supported
F: security/yama/

SENSABLE PHANTOM
M: Jiri Slaby <[email protected]>
S: Maintained
Expand Down
1 change: 0 additions & 1 deletion arch/mips/configs/pistachio_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,6 @@ CONFIG_KEYS=y
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_YAMA=y
CONFIG_SECURITY_YAMA_STACKED=y
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_HMAC=y
Expand Down
6 changes: 4 additions & 2 deletions include/linux/lsm_hooks.h
Original file line number Diff line number Diff line change
Expand Up @@ -1881,8 +1881,10 @@ static inline void security_delete_hooks(struct security_hook_list *hooks,

extern int __init security_module_enable(const char *module);
extern void __init capability_add_hooks(void);
#ifdef CONFIG_SECURITY_YAMA_STACKED
void __init yama_add_hooks(void);
#ifdef CONFIG_SECURITY_YAMA
extern void __init yama_add_hooks(void);
#else
static inline void __init yama_add_hooks(void) { }
#endif

#endif /* ! __LINUX_LSM_HOOKS_H */
5 changes: 0 additions & 5 deletions security/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ choice
default DEFAULT_SECURITY_SMACK if SECURITY_SMACK
default DEFAULT_SECURITY_TOMOYO if SECURITY_TOMOYO
default DEFAULT_SECURITY_APPARMOR if SECURITY_APPARMOR
default DEFAULT_SECURITY_YAMA if SECURITY_YAMA
default DEFAULT_SECURITY_DAC

help
Expand All @@ -151,9 +150,6 @@ choice
config DEFAULT_SECURITY_APPARMOR
bool "AppArmor" if SECURITY_APPARMOR=y

config DEFAULT_SECURITY_YAMA
bool "Yama" if SECURITY_YAMA=y

config DEFAULT_SECURITY_DAC
bool "Unix Discretionary Access Controls"

Expand All @@ -165,7 +161,6 @@ config DEFAULT_SECURITY
default "smack" if DEFAULT_SECURITY_SMACK
default "tomoyo" if DEFAULT_SECURITY_TOMOYO
default "apparmor" if DEFAULT_SECURITY_APPARMOR
default "yama" if DEFAULT_SECURITY_YAMA
default "" if DEFAULT_SECURITY_DAC

endmenu
Expand Down
11 changes: 3 additions & 8 deletions security/security.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,13 @@ int __init security_init(void)
pr_info("Security Framework initialized\n");

/*
* Always load the capability module.
* Load minor LSMs, with the capability module always first.
*/
capability_add_hooks();
#ifdef CONFIG_SECURITY_YAMA_STACKED
/*
* If Yama is configured for stacking load it next.
*/
yama_add_hooks();
#endif

/*
* Load the chosen module if there is one.
* This will also find yama if it is stacking
* Load all the remaining security modules.
*/
do_security_initcalls();

Expand Down
9 changes: 1 addition & 8 deletions security/yama/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,7 @@ config SECURITY_YAMA
This selects Yama, which extends DAC support with additional
system-wide security settings beyond regular Linux discretionary
access controls. Currently available is ptrace scope restriction.
Like capabilities, this security module stacks with other LSMs.
Further information can be found in Documentation/security/Yama.txt.

If you are unsure how to answer this question, answer N.

config SECURITY_YAMA_STACKED
bool "Yama stacked with other LSMs"
depends on SECURITY_YAMA
default n
help
When Yama is built into the kernel, force it to stack with the
selected primary LSM.
32 changes: 10 additions & 22 deletions security/yama/yama_lsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -353,11 +353,6 @@ static struct security_hook_list yama_hooks[] = {
LSM_HOOK_INIT(task_free, yama_task_free),
};

void __init yama_add_hooks(void)
{
security_add_hooks(yama_hooks, ARRAY_SIZE(yama_hooks));
}

#ifdef CONFIG_SYSCTL
static int yama_dointvec_minmax(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
Expand Down Expand Up @@ -396,25 +391,18 @@ static struct ctl_table yama_sysctl_table[] = {
},
{ }
};
#endif /* CONFIG_SYSCTL */

static __init int yama_init(void)
static void __init yama_init_sysctl(void)
{
#ifndef CONFIG_SECURITY_YAMA_STACKED
/*
* If yama is being stacked this is already taken care of.
*/
if (!security_module_enable("yama"))
return 0;
#endif
pr_info("Yama: becoming mindful.\n");

#ifdef CONFIG_SYSCTL
if (!register_sysctl_paths(yama_sysctl_path, yama_sysctl_table))
panic("Yama: sysctl registration failed.\n");
#endif

return 0;
}
#else
static inline void yama_init_sysctl(void) { }
#endif /* CONFIG_SYSCTL */

security_initcall(yama_init);
void __init yama_add_hooks(void)
{
pr_info("Yama: becoming mindful.\n");
security_add_hooks(yama_hooks, ARRAY_SIZE(yama_hooks));
yama_init_sysctl();
}

0 comments on commit 730daa1

Please sign in to comment.