commit:     888c1aed22a0f67d4e4bdac540f249c392f27cec
Author:     Kenton Groombridge <me <AT> concord <DOT> sh>
AuthorDate: Sat Apr  2 19:40:07 2022 +0000
Commit:     Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Sat Sep  3 18:41:55 2022 +0000
URL:        
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=888c1aed

init, systemd: allow unpriv users to read the catalog

Label /var/lib/systemd/catalog the journal type, and allow unpriv users
to search /var/lib/systemd. This is to fix this warning when an
unprivileged user uses journalctl:

Failed to find catalog entry: Permission denied

Signed-off-by: Kenton Groombridge <me <AT> concord.sh>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>

 policy/modules/system/init.if    | 19 +++++++++++++++++++
 policy/modules/system/systemd.fc |  2 ++
 policy/modules/system/systemd.if |  1 +
 3 files changed, 22 insertions(+)

diff --git a/policy/modules/system/init.if b/policy/modules/system/init.if
index 8d3eab4a..1ce483da 100644
--- a/policy/modules/system/init.if
+++ b/policy/modules/system/init.if
@@ -1375,6 +1375,25 @@ interface(`init_read_var_lib_links',`
        allow $1 init_var_lib_t:lnk_file read_lnk_file_perms;
 ')
 
+########################################
+## <summary>
+##      Search /var/lib/systemd/ dirs
+## </summary>
+## <param name="domain">
+##     <summary>
+##     Domain allowed access.
+##     </summary>
+## </param>
+#
+interface(`init_search_var_lib_dirs',`
+       gen_require(`
+               type init_var_lib_t;
+       ')
+
+       files_search_var_lib($1)
+       allow $1 init_var_lib_t:dir search_dir_perms;
+')
+
 ########################################
 ## <summary>
 ##      List /var/lib/systemd/ dir

diff --git a/policy/modules/system/systemd.fc b/policy/modules/system/systemd.fc
index 2cbc2e19..cf7ce0c4 100644
--- a/policy/modules/system/systemd.fc
+++ b/policy/modules/system/systemd.fc
@@ -75,6 +75,8 @@ HOME_DIR/\.local/share/systemd(/.*)?          
gen_context(system_u:object_r:systemd_data
 
 /var/\.updated                         --      
gen_context(system_u:object_r:systemd_update_run_t,s0)
 
+/var/lib/systemd/catalog(/.*)? 
gen_context(system_u:object_r:systemd_journal_t,s0)
+
 /var/lib/systemd/backlight(/.*)?       
gen_context(system_u:object_r:systemd_backlight_var_lib_t,s0)
 /var/lib/systemd/coredump(/.*)?        
gen_context(system_u:object_r:systemd_coredump_var_lib_t,s0)
 /var/lib/systemd/home(/.*)?     
gen_context(system_u:object_r:systemd_homed_var_lib_t,s0)

diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if
index c2b6824b..1da951f0 100644
--- a/policy/modules/system/systemd.if
+++ b/policy/modules/system/systemd.if
@@ -160,6 +160,7 @@ template(`systemd_role_template',`
        can_exec($3, { systemd_run_exec_t systemd_analyze_exec_t })
 
        init_dbus_chat($3)
+       init_search_var_lib_dirs($3)
 
        systemd_list_journal_dirs($3)
        systemd_read_journal_files($3)

Reply via email to