commit:     1be54ba357bd1336f0150d5337dedea3b1736421
Author:     cgzones <cgzones <AT> googlemail <DOT> com>
AuthorDate: Fri Jan  6 14:10:04 2017 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Tue Feb 21 06:34:38 2017 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=1be54ba3

selinuxutil: adjustments

* no negative permission matching for newrole_t:process
* do not label /usr/lib/selinux as policy_src_t, otherwise semodule can not run 
/usr/lib/selinux/hll/pp
* reorder label for /run/restorecond.pid
* fix systemd related denials

 policy/modules/system/selinuxutil.fc | 65 ++++++++++++++++++------------------
 policy/modules/system/selinuxutil.te | 25 +++++++++++---
 2 files changed, 52 insertions(+), 38 deletions(-)

diff --git a/policy/modules/system/selinuxutil.fc 
b/policy/modules/system/selinuxutil.fc
index 8159897e..f7b84401 100644
--- a/policy/modules/system/selinuxutil.fc
+++ b/policy/modules/system/selinuxutil.fc
@@ -3,53 +3,52 @@
 #
 # /etc
 #
-/etc/selinux(/.*)?                     
gen_context(system_u:object_r:selinux_config_t,s0)
-/etc/selinux/([^/]*/)?contexts(/.*)?   
gen_context(system_u:object_r:default_context_t,s0)
-/etc/selinux/([^/]*/)?contexts/files(/.*)? 
gen_context(system_u:object_r:file_context_t,s0)
-/etc/selinux/([^/]*/)?policy(/.*)?     
gen_context(system_u:object_r:policy_config_t,mls_systemhigh)
-/etc/selinux/([^/]*/)?setrans\.conf -- 
gen_context(system_u:object_r:selinux_config_t,mls_systemhigh)
-/etc/selinux/([^/]*/)?seusers  --      
gen_context(system_u:object_r:selinux_config_t,mls_systemhigh)
-/etc/selinux/([^/]*/)?modules(/.*)?    
gen_context(system_u:object_r:semanage_store_t,s0)
-/etc/selinux/([^/]*/)?modules/semanage\.read\.LOCK -- 
gen_context(system_u:object_r:semanage_read_lock_t,s0)
-/etc/selinux/([^/]*/)?modules/semanage\.trans\.LOCK -- 
gen_context(system_u:object_r:semanage_trans_lock_t,s0)
-/etc/selinux/([^/]*/)?users(/.*)? --   
gen_context(system_u:object_r:selinux_config_t,mls_systemhigh)
+/etc/selinux(/.*)?                                     
gen_context(system_u:object_r:selinux_config_t,s0)
+/etc/selinux/([^/]*/)?contexts(/.*)?                   
gen_context(system_u:object_r:default_context_t,s0)
+/etc/selinux/([^/]*/)?contexts/files(/.*)?             
gen_context(system_u:object_r:file_context_t,s0)
+/etc/selinux/([^/]*/)?policy(/.*)?                     
gen_context(system_u:object_r:policy_config_t,mls_systemhigh)
+/etc/selinux/([^/]*/)?setrans\.conf            --      
gen_context(system_u:object_r:selinux_config_t,mls_systemhigh)
+/etc/selinux/([^/]*/)?seusers                  --      
gen_context(system_u:object_r:selinux_config_t,mls_systemhigh)
+/etc/selinux/([^/]*/)?modules(/.*)?                    
gen_context(system_u:object_r:semanage_store_t,s0)
+/etc/selinux/([^/]*/)?modules/semanage\.read\.LOCK --  
gen_context(system_u:object_r:semanage_read_lock_t,s0)
+/etc/selinux/([^/]*/)?modules/semanage\.trans\.LOCK -- 
gen_context(system_u:object_r:semanage_trans_lock_t,s0)
+/etc/selinux/([^/]*/)?users(/.*)?              --      
gen_context(system_u:object_r:selinux_config_t,mls_systemhigh)
 
 #
 # /root
 #
-/root/\.default_contexts       --      
gen_context(system_u:object_r:default_context_t,s0)
+/root/\.default_contexts                       --      
gen_context(system_u:object_r:default_context_t,s0)
+
+#
+# /run
+#
+/run/restorecond\.pid                          --      
gen_context(system_u:object_r:restorecond_run_t,s0)
 
 #
 # /usr
 #
-/usr/bin/checkpolicy           --      
gen_context(system_u:object_r:checkpolicy_exec_t,s0)
-/usr/bin/newrole               --      
gen_context(system_u:object_r:newrole_exec_t,s0)
+/usr/bin/checkpolicy                           --      
gen_context(system_u:object_r:checkpolicy_exec_t,s0)
+/usr/bin/newrole                               --      
gen_context(system_u:object_r:newrole_exec_t,s0)
 
-/usr/lib/selinux(/.*)?                 
gen_context(system_u:object_r:policy_src_t,s0)
-/usr/lib/systemd/system/restorecond.*\.service -- 
gen_context(system_u:object_r:restorecond_unit_t,s0)
+/usr/lib/systemd/system/restorecond.*\.service --      
gen_context(system_u:object_r:restorecond_unit_t,s0)
 
-/usr/sbin/load_policy          --      
gen_context(system_u:object_r:load_policy_exec_t,s0)
-/usr/sbin/restorecon           --      
gen_context(system_u:object_r:setfiles_exec_t,s0)
-/usr/sbin/restorecond          --      
gen_context(system_u:object_r:restorecond_exec_t,s0)
-/usr/sbin/run_init             --      
gen_context(system_u:object_r:run_init_exec_t,s0)
-/usr/sbin/setfiles.*           --      
gen_context(system_u:object_r:setfiles_exec_t,s0)
-/usr/sbin/setsebool            --      
gen_context(system_u:object_r:semanage_exec_t,s0)
-/usr/sbin/semanage             --      
gen_context(system_u:object_r:semanage_exec_t,s0)
-/usr/sbin/semodule             --      
gen_context(system_u:object_r:semanage_exec_t,s0)
-/usr/libexec/selinux/semanage_migrate_store            --      
gen_context(system_u:object_r:semanage_exec_t,s0)
+/usr/sbin/load_policy                          --      
gen_context(system_u:object_r:load_policy_exec_t,s0)
+/usr/sbin/restorecon                           --      
gen_context(system_u:object_r:setfiles_exec_t,s0)
+/usr/sbin/restorecond                          --      
gen_context(system_u:object_r:restorecond_exec_t,s0)
+/usr/sbin/run_init                             --      
gen_context(system_u:object_r:run_init_exec_t,s0)
+/usr/sbin/setfiles.*                           --      
gen_context(system_u:object_r:setfiles_exec_t,s0)
+/usr/sbin/setsebool                            --      
gen_context(system_u:object_r:semanage_exec_t,s0)
+/usr/sbin/semanage                             --      
gen_context(system_u:object_r:semanage_exec_t,s0)
+/usr/sbin/semodule                             --      
gen_context(system_u:object_r:semanage_exec_t,s0)
+/usr/libexec/selinux/semanage_migrate_store    --      
gen_context(system_u:object_r:semanage_exec_t,s0)
 
 #
 # /var/lib
 #
-/var/lib/selinux(/.*)?                 
gen_context(system_u:object_r:semanage_store_t,s0)
-/var/lib/selinux/[^/]+/semanage\.read\.LOCK -- 
gen_context(system_u:object_r:semanage_read_lock_t,s0)
-/var/lib/selinux/[^/]+/semanage\.trans\.LOCK -- 
gen_context(system_u:object_r:semanage_trans_lock_t,s0)
-/usr/lib/selinux/semanage_migrate_store        --      
gen_context(system_u:object_r:semanage_exec_t,s0)
-
-#
-# /var/run
-#
-/run/restorecond\.pid  --      
gen_context(system_u:object_r:restorecond_var_run_t,s0)
+/var/lib/selinux(/.*)?                                 
gen_context(system_u:object_r:semanage_store_t,s0)
+/var/lib/selinux/[^/]+/semanage\.read\.LOCK    --      
gen_context(system_u:object_r:semanage_read_lock_t,s0)
+/var/lib/selinux/[^/]+/semanage\.trans\.LOCK   --      
gen_context(system_u:object_r:semanage_trans_lock_t,s0)
+/usr/lib/selinux/semanage_migrate_store                --      
gen_context(system_u:object_r:semanage_exec_t,s0)
 
 ifdef(`distro_gentoo',`
 # Support for gentoo python switcheridoo

diff --git a/policy/modules/system/selinuxutil.te 
b/policy/modules/system/selinuxutil.te
index dd95cf64..703a4453 100644
--- a/policy/modules/system/selinuxutil.te
+++ b/policy/modules/system/selinuxutil.te
@@ -88,8 +88,9 @@ role system_r types restorecond_t;
 type restorecond_unit_t;
 init_unit_file(restorecond_unit_t)
 
-type restorecond_var_run_t;
-files_pid_file(restorecond_var_run_t)
+type restorecond_run_t;
+typealias restorecond_run_t alias restorecond_var_run_t;
+files_pid_file(restorecond_run_t)
 
 type run_init_t;
 type run_init_exec_t;
@@ -221,7 +222,6 @@ optional_policy(`
 #
 
 allow newrole_t self:capability { dac_override fowner setgid setuid };
-allow newrole_t self:process ~{ ptrace setcurrent setexec setfscreate 
setrlimit execmem execheap execstack };
 allow newrole_t self:process setexec;
 allow newrole_t self:fd use;
 allow newrole_t self:fifo_file rw_fifo_file_perms;
@@ -303,6 +303,21 @@ ifdef(`distro_ubuntu',`
        ')
 ')
 
+ifdef(`init_systemd',`
+       optional_policy(`
+               systemd_use_logind_fds(newrole_t)
+               systemd_dbus_chat_logind(newrole_t)
+       ')
+')
+
+optional_policy(`
+       dbus_system_bus_client(newrole_t)
+
+       optional_policy(`
+               consolekit_dbus_chat(newrole_t)
+       ')
+')
+
 # if secure mode is enabled, then newrole
 # can only transition to unprivileged users
 if(secure_mode) {
@@ -323,8 +338,8 @@ tunable_policy(`allow_polyinstantiation',`
 allow restorecond_t self:capability { dac_override dac_read_search fowner };
 allow restorecond_t self:fifo_file rw_fifo_file_perms;
 
-allow restorecond_t restorecond_var_run_t:file manage_file_perms;
-files_pid_filetrans(restorecond_t, restorecond_var_run_t, file)
+allow restorecond_t restorecond_run_t:file manage_file_perms;
+files_pid_filetrans(restorecond_t, restorecond_run_t, file)
 
 kernel_getattr_debugfs(restorecond_t)
 kernel_read_system_state(restorecond_t)

Reply via email to