From 569208d534e1a53d75b187ec44ecda856ee6139c Mon Sep 17 00:00:00 2001 From: Zdenek Pytela Date: Wed, 26 Jan 2022 14:41:59 +0100 Subject: [PATCH] Allow systemd services watch dbusd pid directory and its parents Reference: https://gitbub.com/fedora-selinux/selinux-policy/commit/569208d534e1a53d75b187ec44ecda856ee6139c Conflict: NA The following services were allowed to watch /run/dbus and all its parents: - systemd-hostnamed - systemd-machined - systemd-networkd - systemd-resolved - systemd-timesyncd and systemd-timedated These permissions are required when the services start earlier than dbus-broker manages to establish the socket communication, e. g. after $ systemctl disable NetworkManager && systemctl enable systemd-networkd The dbus_watch_pid_dir_path() interface was added. The redundant dbus_watch_pid_dirs() calls were removed. Resolves: rhbz#2031668 Signed-off-by: lujie54 --- policy/modules/contrib/dbus.if | 21 +++++++++++++++++++++ policy/modules/system/systemd.te | 7 +++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/policy/modules/contrib/dbus.if b/policy/modules/contrib/dbus.if index deb6f10..7ec03b1 100644 --- a/policy/modules/contrib/dbus.if +++ b/policy/modules/contrib/dbus.if @@ -606,6 +606,27 @@ interface(`dbus_watch_pid_dirs',` ######################################## ## +## Watch system dbusd pid directory and all its parents +## +## +## +## Domain allowed access. +## +## +# +interface(`dbus_watch_pid_dir_path',` + gen_require(` + type system_dbusd_var_run_t; + ') + + files_watch_root_dirs($1) + files_watch_var_run_dirs($1) + files_search_pids($1) + allow $1 system_dbusd_var_run_t:dir watch_dir_perms; +') + +######################################## +## ## Read and write system dbus tmp socket files. ## ## diff --git a/policy/modules/system/systemd.te b/policy/modules/system/systemd.te index ea2b27e..2d8db7e 100644 --- a/policy/modules/system/systemd.te +++ b/policy/modules/system/systemd.te @@ -458,6 +458,7 @@ getty_start_services(systemd_machined_t) optional_policy(` dbus_connect_system_bus(systemd_machined_t) dbus_system_bus_client(systemd_machined_t) + dbus_watch_pid_dir_path(systemd_machined_t) ') optional_policy(` @@ -536,6 +537,7 @@ init_named_pid_filetrans(systemd_logind_t, systemd_networkd_var_run_t, dir, "net optional_policy(` dbus_system_bus_client(systemd_networkd_t) dbus_connect_system_bus(systemd_networkd_t) + dbus_watch_pid_dir_path(systemd_networkd_t) dbus_read_pid_files(systemd_networkd_t) dbus_read_pid_sock_files(systemd_networkd_t) systemd_dbus_chat_logind(systemd_networkd_t) @@ -862,6 +864,7 @@ userdom_dbus_send_all_users(systemd_hostnamed_t) optional_policy(` dbus_system_bus_client(systemd_hostnamed_t) dbus_connect_system_bus(systemd_hostnamed_t) + dbus_watch_pid_dir_path(systemd_hostnamed_t) ') optional_policy(` @@ -978,7 +981,7 @@ optional_policy(` dbus_system_bus_client(systemd_timedated_t) dbus_connect_system_bus(systemd_timedated_t) dbus_read_pid_sock_files(systemd_timedated_t) - dbus_watch_pid_dirs(systemd_timedated_t) + dbus_watch_pid_dir_path(systemd_timedated_t) dbus_watch_pid_sock_files(systemd_timedated_t) ') @@ -1168,8 +1171,8 @@ optional_policy(` dbus_connect_system_bus(systemd_resolved_t) dbus_read_pid_files(systemd_resolved_t) dbus_read_pid_sock_files(systemd_resolved_t) + dbus_watch_pid_dir_path(systemd_resolved_t) dbus_watch_pid_sock_files(systemd_resolved_t) - dbus_watch_pid_dirs(systemd_resolved_t) systemd_dbus_chat_logind(systemd_resolved_t) ') -- 1.8.3.1