[lxc-devel] [PATCH 2/3] add lsm op for checking if an lsm is present/enabled
Serge Hallyn
serge.hallyn at ubuntu.com
Wed Oct 16 17:03:51 UTC 2013
Quoting Dwight Engen (dwight.engen at oracle.com):
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
I do wonder if the name should be more precise (host_lsm_enabled()
or host_lsm_enforcing() or something). Just the name 'enabled'
could lead some to believe that it means it is enabled for this
container, which is a different question.
> ---
> src/lxc/lsm/apparmor.c | 1 +
> src/lxc/lsm/lsm.c | 7 +++++++
> src/lxc/lsm/lsm.h | 3 +++
> src/lxc/lsm/nop.c | 6 ++++++
> src/lxc/lsm/selinux.c | 1 +
> 5 files changed, 18 insertions(+)
>
> diff --git a/src/lxc/lsm/apparmor.c b/src/lxc/lsm/apparmor.c
> index c13613a..146564f 100644
> --- a/src/lxc/lsm/apparmor.c
> +++ b/src/lxc/lsm/apparmor.c
> @@ -167,6 +167,7 @@ static int apparmor_process_label_set(const char *label, int use_default)
>
> static struct lsm_drv apparmor_drv = {
> .name = "AppArmor",
> + .enabled = apparmor_enabled,
> .process_label_get = apparmor_process_label_get,
> .process_label_set = apparmor_process_label_set,
> };
> diff --git a/src/lxc/lsm/lsm.c b/src/lxc/lsm/lsm.c
> index 3974f11..f022de9 100644
> --- a/src/lxc/lsm/lsm.c
> +++ b/src/lxc/lsm/lsm.c
> @@ -62,6 +62,13 @@ void lsm_init(void)
> INFO("Initialized LSM security driver %s", drv->name);
> }
>
> +int lsm_enabled()
> +{
> + if (drv)
> + return drv->enabled();
> + return 0;
> +}
> +
> char *lsm_process_label_get(pid_t pid)
> {
> if (!drv) {
> diff --git a/src/lxc/lsm/lsm.h b/src/lxc/lsm/lsm.h
> index 2a82c66..ee093da 100644
> --- a/src/lxc/lsm/lsm.h
> +++ b/src/lxc/lsm/lsm.h
> @@ -31,18 +31,21 @@ struct lxc_conf;
> struct lsm_drv {
> const char *name;
>
> + int (*enabled)(void);
> char *(*process_label_get)(pid_t pid);
> int (*process_label_set)(const char *label, int use_default);
> };
>
> #if HAVE_APPARMOR || HAVE_SELINUX
> void lsm_init(void);
> +int lsm_enabled(void);
> char *lsm_process_label_get(pid_t pid);
> int lsm_process_label_set(const char *label, int use_default);
> int lsm_proc_mount(struct lxc_conf *lxc_conf);
> void lsm_proc_unmount(struct lxc_conf *lxc_conf);
> #else
> static inline void lsm_init(void) { }
> +static inline int lsm_enabled(void) { return 0; }
> static inline char *lsm_process_label_get(pid_t pid) { return NULL; }
> static inline int lsm_process_label_set(char *label, int use_default) { return 0; }
> static inline int lsm_proc_mount(struct lxc_conf *lxc_conf) { return 0; }
> diff --git a/src/lxc/lsm/nop.c b/src/lxc/lsm/nop.c
> index 9184e6b..e39b0f5 100644
> --- a/src/lxc/lsm/nop.c
> +++ b/src/lxc/lsm/nop.c
> @@ -34,8 +34,14 @@ static int nop_process_label_set(const char *label, int use_default)
> return 0;
> }
>
> +static int nop_enabled(void)
> +{
> + return 0;
> +}
> +
> static struct lsm_drv nop_drv = {
> .name = "nop",
> + .enabled = nop_enabled,
> .process_label_get = nop_process_label_get,
> .process_label_set = nop_process_label_set,
> };
> diff --git a/src/lxc/lsm/selinux.c b/src/lxc/lsm/selinux.c
> index 6e44e8b..ef5beb0 100644
> --- a/src/lxc/lsm/selinux.c
> +++ b/src/lxc/lsm/selinux.c
> @@ -89,6 +89,7 @@ static int selinux_process_label_set(const char *label, int use_default)
>
> static struct lsm_drv selinux_drv = {
> .name = "SELinux",
> + .enabled = is_selinux_enabled,
> .process_label_get = selinux_process_label_get,
> .process_label_set = selinux_process_label_set,
> };
> --
> 1.8.3.1
>
>
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list