From: cpebenito@tresys.com (Christopher J. PeBenito) Date: Mon, 11 Jan 2016 13:27:23 -0500 Subject: [refpolicy] [PATCH] Allow systemd services to use PrivateNetwork feature In-Reply-To: <1452536095-8579-1-git-send-email-nicolas.iooss@m4x.org> References: <1452536095-8579-1-git-send-email-nicolas.iooss@m4x.org> Message-ID: <5693F40B.9070102@tresys.com> To: refpolicy@oss.tresys.com List-Id: refpolicy.oss.tresys.com On 1/11/2016 1:14 PM, Nicolas Iooss wrote: > systemd creates a new network namespace for services which are using > PrivateNetwork=yes. > > In the implementation, systemd uses a socketpair as a storage buffer for > the namespace reference file descriptor (c.f. > https://github.com/systemd/systemd/blob/v228/src/core/namespace.c#L660). > One end of this socketpair is locked (hence the need of "lock" access to > self:unix_dgram_socket for init_t) while systemd opens > /proc/self/ns/net, which lives in nsfs. > > While at it, add filesystem_type attribute to nsfs_t. Merged. > --- > policy/modules/kernel/filesystem.if | 17 +++++++++++++++++ > policy/modules/kernel/filesystem.te | 1 + > policy/modules/system/init.te | 3 +++ > 3 files changed, 21 insertions(+) > > diff --git a/policy/modules/kernel/filesystem.if b/policy/modules/kernel/filesystem.if > index 99ad71f926b4..3455c2270942 100644 > --- a/policy/modules/kernel/filesystem.if > +++ b/policy/modules/kernel/filesystem.if > @@ -3360,6 +3360,23 @@ interface(`fs_rw_nfsd_fs',` > > ######################################## > ## > +## Read nsfs inodes (e.g. /proc/pid/ns/uts) > +## > +## > +## > +## Domain allowed access. > +## > +## > +# > +interface(`fs_read_nsfs_files',` > + gen_require(` > + type nsfs_t; > + ') > + > + allow $1 nsfs_t:file read_file_perms; > +') > +######################################## > +## > ## Getattr on pstore dirs. > ## > ## > diff --git a/policy/modules/kernel/filesystem.te b/policy/modules/kernel/filesystem.te > index 920527ca9995..ae44d92f4f10 100644 > --- a/policy/modules/kernel/filesystem.te > +++ b/policy/modules/kernel/filesystem.te > @@ -126,6 +126,7 @@ fs_type(nfsd_fs_t) > genfscon nfsd / gen_context(system_u:object_r:nfsd_fs_t,s0) > > type nsfs_t; > +fs_type(nsfs_t) > genfscon nsfs / gen_context(system_u:object_r:nsfs_t,s0) > > type oprofilefs_t; > diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te > index ea5530f55689..78031010d38c 100644 > --- a/policy/modules/system/init.te > +++ b/policy/modules/system/init.te > @@ -199,6 +199,7 @@ ifdef(`init_systemd',` > allow init_t self:netlink_kobject_uevent_socket create_socket_perms; > allow init_t self:netlink_route_socket create_netlink_socket_perms; > allow init_t self:netlink_selinux_socket create_socket_perms; > + allow init_t self:unix_dgram_socket lock; > > manage_files_pattern(init_t, init_var_run_t, init_var_run_t) > manage_lnk_files_pattern(init_t, init_var_run_t, init_var_run_t) > @@ -260,6 +261,8 @@ ifdef(`init_systemd',` > # mount-setup > fs_unmount_autofs(init_t) > fs_getattr_pstore_dirs(init_t) > + # for network namespaces > + fs_read_nsfs_files(init_t) > > # systemd_socket_activated policy > mls_socket_write_all_levels(init_t) > -- Chris PeBenito Tresys Technology, LLC www.tresys.com | oss.tresys.com