commit:     d63d91588adf55e6867440af9b9f6a4fe6c166f6
Author:     Dave Sugar <dsugar100 <AT> gmail <DOT> com>
AuthorDate: Fri Aug 26 02:45:24 2022 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sat Sep  3 19:07:50 2022 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=d63d9158

systemd: init_t creates systemd-logind 'linger' directory

node=localhost type=AVC msg=audit(1661480051.880:321): avc:  denied  { create } 
for  pid=1027 comm="(d-logind)" name="linger" 
scontext=system_u:system_r:init_t:s0 
tcontext=system_u:object_r:systemd_logind_var_lib_t:s0 tclass=dir permissive=0

Signed-off-by: Dave Sugar <dsugar100 <AT> gmail.com>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 policy/modules/system/init.te    |  1 +
 policy/modules/system/systemd.if | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te
index 285ee5b4..9ecaae54 100644
--- a/policy/modules/system/init.te
+++ b/policy/modules/system/init.te
@@ -551,6 +551,7 @@ ifdef(`init_systemd',`
 
        optional_policy(`
                systemd_dbus_chat_logind(init_t)
+               systemd_create_logind_linger_dir(init_t)
                systemd_search_all_user_keys(init_t)
                systemd_create_all_user_keys(init_t)
                systemd_write_all_user_keys(init_t)

diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if
index f48cc541..2370c729 100644
--- a/policy/modules/system/systemd.if
+++ b/policy/modules/system/systemd.if
@@ -2031,6 +2031,27 @@ interface(`systemd_read_logind_state',`
        allow systemd_logind_t $1:file read_file_perms;
 ')
 
+########################################
+## <summary>
+##     Allow the specified domain to create
+##     the systemd-logind linger directory with
+##     the correct context.
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`systemd_create_logind_linger_dir',`
+       gen_require(`
+               type systemd_logind_var_lib_t;
+       ')
+
+       init_var_lib_filetrans($1, systemd_logind_var_lib_t, dir, "linger")
+       allow $1 systemd_logind_var_lib_t:dir create;
+')
+
 ########################################
 ## <summary>
 ##     Allow the specified domain to start systemd

Reply via email to