From: lvrabec@redhat.com (Lukas Vrabec) Date: Tue, 19 Jan 2016 12:30:48 +0100 Subject: [refpolicy] [PATCH] Allow systemd services to use PrivateNetwork feature In-Reply-To: <5693F4F9.5040703@redhat.com> References: <1452536095-8579-1-git-send-email-nicolas.iooss@m4x.org> <5693F40B.9070102@tresys.com> <5693F4F9.5040703@redhat.com> Message-ID: <569E1E68.40201@redhat.com> To: refpolicy@oss.tresys.com List-Id: refpolicy.oss.tresys.com On 01/11/2016 07:31 PM, Miroslav Grepl wrote: > On 01/11/2016 07:27 PM, Christopher J. PeBenito wrote: >> 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. > > Lukas, > could play around and make this change also for Fedora bugs to see if it > works as expected? > Fixes available for Fedora 23 and Fedora Rawhide here: http://koji.fedoraproject.org/koji/buildinfo?buildID=712094 http://koji.fedoraproject.org/koji/buildinfo?buildID=712091 > Nicolas, > thank you for patches. > >> >> >> >>> --- >>> 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) >>> >> >> > > -- Lukas Vrabec SELinux Solutions Red Hat, Inc.