commit: 76b213703ff1b7bbcbfb0876388c764918290070
Author: Sven Vermeulen <sven.vermeulen <AT> siphos <DOT> be>
AuthorDate: Sat Jul 11 13:36:30 2015 +0000
Commit: Sven Vermeulen <swift <AT> gentoo <DOT> org>
CommitDate: Sat Jul 11 13:36:30 2015 +0000
URL:
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=76b21370
Allow run_init_t to read all named init scripts
When OpenRC wants to execute a labeled init script, it fails if this is
a symlink:
~$ sudo /etc/init.d/ceph-mon.0 start
openrc-run should not be run directly
The denial shows that a read on the symlink is denied:
type=AVC msg=audit(1436621093.701:1165): avc: denied { read } for
pid=30786 comm="openrc" name="ceph-mon.0" dev="vda3" ino=1966780
scontext=staff_u:staff_r:run_init_t:s0
tcontext=system_u:object_r:ceph_initrc_exec_t:s0 tclass=lnk_file
permissive=0
After granting this, the behavior is as expected:
~$ sudo /etc/init.d/ceph-mon.0 start
* Starting Ceph mon.0 ... [ ok ]
X-Gentoo-Bug: 554514
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=554514
policy/modules/system/init.if | 5 +++++
policy/modules/system/selinuxutil.te | 2 ++
2 files changed, 7 insertions(+)
diff --git a/policy/modules/system/init.if b/policy/modules/system/init.if
index ed65609..211d434 100644
--- a/policy/modules/system/init.if
+++ b/policy/modules/system/init.if
@@ -1195,6 +1195,11 @@ interface(`init_read_all_script_files',`
files_search_etc($1)
allow $1 init_script_file_type:file read_file_perms;
+
+ ifdef(`distro_gentoo',`
+ # Bug 554514
+ allow $1 init_script_file_type:lnk_file read_lnk_file_perms;
+ ')
')
#######################################
diff --git a/policy/modules/system/selinuxutil.te
b/policy/modules/system/selinuxutil.te
index 51c64be..d25a0fd 100644
--- a/policy/modules/system/selinuxutil.te
+++ b/policy/modules/system/selinuxutil.te
@@ -418,6 +418,8 @@ userdom_use_user_terminals(run_init_t)
ifndef(`direct_sysadm_daemon',`
ifdef(`distro_gentoo',`
# Gentoo integrated run_init:
+ # Bug 554514
+ init_read_all_script_files(run_init_t)
init_script_file_entry_type(run_init_t)
init_exec_rc(run_init_t)