commit: 006bc33c0ddb00e9f9c628a4ea17fe029a51964f
Author: Chris PeBenito <Christopher.PeBenito <AT> microsoft <DOT> com>
AuthorDate: Mon Jan 3 20:12:14 2022 +0000
Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Mon Feb 7 02:08:37 2022 +0000
URL:
https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=006bc33c
systemd: Add systemd-homed and systemd-userdbd.
Systemd-homed does not completely work since the code does not label
the filesystems it creates.
systemd-userdbd partially derived from the Fedora policy.
Signed-off-by: Chris PeBenito <Christopher.PeBenito <AT> microsoft.com>
Signed-off-by: Jason Zaman <perfinion <AT> gentoo.org>
policy/modules/kernel/files.if | 18 ++++
policy/modules/services/mta.if | 1 +
policy/modules/services/ssh.if | 1 +
policy/modules/system/fstools.if | 1 +
policy/modules/system/init.if | 18 ++++
policy/modules/system/init.te | 1 +
policy/modules/system/lvm.te | 4 +
policy/modules/system/systemd.fc | 9 +-
policy/modules/system/systemd.if | 38 +++++--
policy/modules/system/systemd.te | 194 +++++++++++++++++++++++++++++++++++-
policy/modules/system/userdomain.if | 4 +
policy/support/misc_patterns.spt | 28 ++++++
12 files changed, 304 insertions(+), 13 deletions(-)
diff --git a/policy/modules/kernel/files.if b/policy/modules/kernel/files.if
index f772bfe8..ea29fef3 100644
--- a/policy/modules/kernel/files.if
+++ b/policy/modules/kernel/files.if
@@ -3851,6 +3851,24 @@ interface(`files_relabelfrom_home',`
allow $1 home_root_t:dir relabelfrom;
')
+########################################
+## <summary>
+## Watch the user home root (/home).
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`files_watch_home',`
+ gen_require(`
+ type home_root_t;
+ ')
+
+ allow $1 home_root_t:dir watch;
+')
+
########################################
## <summary>
## Create objects in /home.
diff --git a/policy/modules/services/mta.if b/policy/modules/services/mta.if
index 434fa9c2..38c8cdb5 100644
--- a/policy/modules/services/mta.if
+++ b/policy/modules/services/mta.if
@@ -820,6 +820,7 @@ interface(`mta_list_spool',`
')
allow $1 mail_spool_t:dir list_dir_perms;
+ files_search_spool($1)
')
#######################################
diff --git a/policy/modules/services/ssh.if b/policy/modules/services/ssh.if
index ae23e199..b9ed26bc 100644
--- a/policy/modules/services/ssh.if
+++ b/policy/modules/services/ssh.if
@@ -277,6 +277,7 @@ template(`ssh_server_template', `
optional_policy(`
systemd_read_logind_sessions_files($1_t)
+ systemd_stream_connect_userdb($1_t)
')
')
diff --git a/policy/modules/system/fstools.if b/policy/modules/system/fstools.if
index 6ebe3800..f994965a 100644
--- a/policy/modules/system/fstools.if
+++ b/policy/modules/system/fstools.if
@@ -61,6 +61,7 @@ interface(`fstools_exec',`
')
can_exec($1, fsadm_exec_t)
+ corecmd_search_bin($1)
')
########################################
diff --git a/policy/modules/system/init.if b/policy/modules/system/init.if
index dacb8a93..1af2c62f 100644
--- a/policy/modules/system/init.if
+++ b/policy/modules/system/init.if
@@ -1114,6 +1114,24 @@ interface(`init_rw_stream_sockets',`
allow $1 init_t:unix_stream_socket rw_stream_socket_perms;
')
+########################################
+## <summary>
+## Do not audit attempts to search init keys.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`init_dontaudit_search_keys',`
+ gen_require(`
+ type init_t;
+ ')
+
+ dontaudit $1 init_t:key search;
+')
+
########################################
## <summary>
## start service (systemd).
diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te
index 2dfc3ca0..8e7919c1 100644
--- a/policy/modules/system/init.te
+++ b/policy/modules/system/init.te
@@ -514,6 +514,7 @@ ifdef(`init_systemd',`
systemd_filetrans_userdb_runtime_dirs(init_t)
systemd_relabelto_journal_dirs(init_t)
systemd_relabelto_journal_files(init_t)
+ systemd_stream_connect_userdb(init_t)
term_create_devpts_dirs(init_t)
term_create_ptmx(init_t)
diff --git a/policy/modules/system/lvm.te b/policy/modules/system/lvm.te
index cfc4ed10..4d8380c3 100644
--- a/policy/modules/system/lvm.te
+++ b/policy/modules/system/lvm.te
@@ -251,6 +251,10 @@ optional_policy(`
rpm_manage_script_tmp_files(lvm_t)
')
+optional_policy(`
+ systemd_rw_homework_semaphores(lvm_t)
+')
+
optional_policy(`
udev_read_runtime_files(lvm_t)
')
diff --git a/policy/modules/system/systemd.fc b/policy/modules/system/systemd.fc
index 6505951d..5cb24230 100644
--- a/policy/modules/system/systemd.fc
+++ b/policy/modules/system/systemd.fc
@@ -31,6 +31,8 @@
/usr/lib/systemd/systemd-binfmt --
gen_context(system_u:object_r:systemd_binfmt_exec_t,s0)
/usr/lib/systemd/systemd-cgroups-agent --
gen_context(system_u:object_r:systemd_cgroups_exec_t,s0)
/usr/lib/systemd/systemd-coredump --
gen_context(system_u:object_r:systemd_coredump_exec_t,s0)
+/usr/lib/systemd/systemd-homed --
gen_context(system_u:object_r:systemd_homed_exec_t,s0)
+/usr/lib/systemd/systemd-homework --
gen_context(system_u:object_r:systemd_homework_exec_t,s0)
/usr/lib/systemd/systemd-hostnamed --
gen_context(system_u:object_r:systemd_hostnamed_exec_t,s0)
/usr/lib/systemd/systemd-localed --
gen_context(system_u:object_r:systemd_locale_exec_t,s0)
/usr/lib/systemd/systemd-logind --
gen_context(system_u:object_r:systemd_logind_exec_t,s0)
@@ -45,6 +47,8 @@
/usr/lib/systemd/systemd-update-done --
gen_context(system_u:object_r:systemd_update_done_exec_t,s0)
/usr/lib/systemd/systemd-user-runtime-dir --
gen_context(system_u:object_r:systemd_user_runtime_dir_exec_t,s0)
/usr/lib/systemd/systemd-user-sessions --
gen_context(system_u:object_r:systemd_sessions_exec_t,s0)
+/usr/lib/systemd/systemd-userdbd --
gen_context(system_u:object_r:systemd_userdbd_exec_t,s0)
+/usr/lib/systemd/systemd-userwork --
gen_context(system_u:object_r:systemd_userdbd_exec_t,s0)
# Systemd unit files
HOME_DIR/\.config/systemd(/.*)?
gen_context(system_u:object_r:systemd_conf_home_t,s0)
@@ -64,6 +68,7 @@ HOME_DIR/\.local/share/systemd(/.*)?
gen_context(system_u:object_r:systemd_data
/usr/lib/systemd/system/systemd-networkd.*
gen_context(system_u:object_r:systemd_networkd_unit_t,s0)
/usr/lib/systemd/system/systemd-rfkill.* --
gen_context(system_u:object_r:systemd_rfkill_unit_t,s0)
/usr/lib/systemd/system/systemd-socket-proxyd\.service --
gen_context(system_u:object_r:systemd_socket_proxyd_unit_file_t,s0)
+/usr/lib/systemd/system/systemd-userdbd\.(service|socket) --
gen_context(system_u:object_r:systemd_userdbd_unit_t,s0)
/usr/lib/systemd/system/user@\.service --
gen_context(system_u:object_r:systemd_user_manager_unit_t,s0)
/usr/share/factory(/.*)?
gen_context(system_u:object_r:systemd_factory_conf_t,s0)
@@ -72,6 +77,7 @@ HOME_DIR/\.local/share/systemd(/.*)?
gen_context(system_u:object_r:systemd_data
/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)
/var/lib/systemd/linger(/.*)?
gen_context(system_u:object_r:systemd_logind_var_lib_t,s0)
/var/lib/systemd/pstore(/.*)?
gen_context(system_u:object_r:systemd_pstore_var_lib_t,s0)
/var/lib/systemd/rfkill(/.*)?
gen_context(system_u:object_r:systemd_rfkill_var_lib_t,s0)
@@ -89,11 +95,12 @@ HOME_DIR/\.local/share/systemd(/.*)?
gen_context(system_u:object_r:systemd_data
/run/systemd/ask-password(/.*)?
gen_context(system_u:object_r:systemd_passwd_runtime_t,s0)
/run/systemd/ask-password-block(/.*)?
gen_context(system_u:object_r:systemd_passwd_runtime_t,s0)
+/run/systemd/home(/.*)?
gen_context(system_u:object_r:systemd_homed_runtime_t,s0)
/run/systemd/resolve(/.*)?
gen_context(system_u:object_r:systemd_resolved_runtime_t,s0)
/run/systemd/seats(/.*)?
gen_context(system_u:object_r:systemd_sessions_runtime_t,s0)
/run/systemd/sessions(/.*)?
gen_context(system_u:object_r:systemd_sessions_runtime_t,s0)
/run/systemd/users(/.*)?
gen_context(system_u:object_r:systemd_logind_runtime_t,s0)
-/run/systemd/userdb(/.*)?
gen_context(system_u:object_r:systemd_userdb_runtime_t,s0)
+/run/systemd/userdb(/.*)?
gen_context(system_u:object_r:systemd_userdbd_runtime_t,s0)
/run/systemd/inhibit(/.*)?
gen_context(system_u:object_r:systemd_logind_inhibit_runtime_t,s0)
/run/systemd/nspawn(/.*)?
gen_context(system_u:object_r:systemd_nspawn_runtime_t,s0)
/run/systemd/machines(/.*)?
gen_context(system_u:object_r:systemd_machined_runtime_t,s0)
diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if
index e5214124..e68a9b44 100644
--- a/policy/modules/system/systemd.if
+++ b/policy/modules/system/systemd.if
@@ -863,6 +863,24 @@ interface(`systemd_PrivateDevices',`
fs_read_tmpfs_symlinks($1)
')
+######################################
+## <summary>
+## Read and write systemd-homework semaphores.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access
+## </summary>
+## </param>
+#
+interface(`systemd_rw_homework_semaphores',`
+ gen_require(`
+ type systemd_homework_t;
+ ')
+
+ allow $1 systemd_homework_t:sem rw_sem_perms;
+')
+
#######################################
## <summary>
## Allow domain to read udev hwdb file
@@ -1191,10 +1209,10 @@ interface(`systemd_signull_logind',`
#
interface(`systemd_manage_userdb_runtime_dirs', `
gen_require(`
- type systemd_userdb_runtime_t;
+ type systemd_userdbd_runtime_t;
')
- manage_dirs_pattern($1, systemd_userdb_runtime_t,
systemd_userdb_runtime_t)
+ manage_dirs_pattern($1, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t)
')
########################################
@@ -1209,10 +1227,10 @@ interface(`systemd_manage_userdb_runtime_dirs', `
#
interface(`systemd_manage_userdb_runtime_sock_files', `
gen_require(`
- type systemd_userdb_runtime_t;
+ type systemd_userdbd_runtime_t;
')
- manage_sock_files_pattern($1, systemd_userdb_runtime_t,
systemd_userdb_runtime_t)
+ manage_sock_files_pattern($1, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t)
')
########################################
@@ -1227,12 +1245,12 @@ interface(`systemd_manage_userdb_runtime_sock_files', `
#
interface(`systemd_stream_connect_userdb', `
gen_require(`
- type systemd_userdb_runtime_t;
+ type systemd_userdbd_t, systemd_userdbd_runtime_t;
')
init_search_runtime($1)
- allow $1 systemd_userdb_runtime_t:dir list_dir_perms;
- allow $1 systemd_userdb_runtime_t:sock_file write_sock_file_perms;
+ allow $1 systemd_userdbd_runtime_t:dir list_dir_perms;
+ stream_connect_pattern($1, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t, systemd_userdbd_t)
init_unix_stream_socket_connectto($1)
')
@@ -1404,7 +1422,7 @@ interface(`systemd_filetrans_passwd_runtime_dirs',`
########################################
## <summary>
-## Transition to systemd_userdb_runtime_t when
+## Transition to systemd_userdbd_runtime_t when
## creating the userdb directory inside an init runtime
## directory.
## </summary>
@@ -1416,10 +1434,10 @@ interface(`systemd_filetrans_passwd_runtime_dirs',`
#
interface(`systemd_filetrans_userdb_runtime_dirs', `
gen_require(`
- type systemd_userdb_runtime_t;
+ type systemd_userdbd_runtime_t;
')
- init_runtime_filetrans($1, systemd_userdb_runtime_t, dir, "userdb")
+ init_runtime_filetrans($1, systemd_userdbd_runtime_t, dir, "userdb")
')
######################################
diff --git a/policy/modules/system/systemd.te b/policy/modules/system/systemd.te
index 5aa824b2..db8c9979 100644
--- a/policy/modules/system/systemd.te
+++ b/policy/modules/system/systemd.te
@@ -115,6 +115,28 @@ typealias systemd_generator_t alias {
systemd_fstab_generator_t systemd_gpt_gene
typealias systemd_generator_exec_t alias { systemd_fstab_generator_exec_t
systemd_gpt_generator_exec_t };
init_system_domain(systemd_generator_t, systemd_generator_exec_t)
+type systemd_homed_t;
+type systemd_homed_exec_t;
+init_daemon_domain(systemd_homed_t, systemd_homed_exec_t)
+
+type systemd_homework_t;
+type systemd_homework_exec_t;
+domain_type(systemd_homework_t)
+domain_entry_file(systemd_homework_t, systemd_homework_exec_t)
+role system_r types systemd_homework_t;
+
+type systemd_homed_runtime_t;
+files_runtime_file(systemd_homed_runtime_t)
+
+type systemd_homed_storage_t;
+files_type(systemd_homed_storage_t)
+
+type systemd_homed_tmpfs_t;
+files_tmpfs_file(systemd_homed_tmpfs_t)
+
+type systemd_homed_var_lib_t;
+files_type(systemd_homed_var_lib_t)
+
type systemd_hostnamed_t;
type systemd_hostnamed_exec_t;
init_daemon_domain(systemd_hostnamed_t, systemd_hostnamed_exec_t)
@@ -301,8 +323,15 @@ init_system_domain(systemd_user_runtime_dir_t,
systemd_user_runtime_dir_exec_t)
type systemd_user_tmpfs_t;
userdom_user_tmpfs_file(systemd_user_tmpfs_t)
-type systemd_userdb_runtime_t;
-files_runtime_file(systemd_userdb_runtime_t)
+type systemd_userdbd_t;
+type systemd_userdbd_exec_t;
+init_daemon_domain(systemd_userdbd_t, systemd_userdbd_exec_t)
+
+type systemd_userdbd_runtime_t alias systemd_userdb_runtime_t;
+files_runtime_file(systemd_userdbd_runtime_t)
+
+type systemd_userdbd_unit_t;
+init_unit_file(systemd_userdbd_unit_t)
type systemd_user_unit_t;
init_unit_file(systemd_user_unit_t)
@@ -473,6 +502,8 @@ kernel_use_fds(systemd_generator_t)
kernel_read_system_state(systemd_generator_t)
kernel_read_kernel_sysctls(systemd_generator_t)
kernel_dontaudit_getattr_proc(systemd_generator_t)
+# Where an unlabeled mountpoint is encounted:
+kernel_dontaudit_search_unlabeled(systemd_generator_t)
storage_raw_read_fixed_disk(systemd_generator_t)
@@ -497,6 +528,125 @@ optional_policy(`
miscfiles_read_localization(systemd_generator_t)
')
+#######################################
+#
+# systemd-homed policy
+#
+
+dontaudit systemd_homed_t self:capability { sys_resource sys_admin };
+allow systemd_homed_t self:netlink_kobject_uevent_socket create_socket_perms;
+
+nnp_domtrans_pattern(systemd_homed_t, systemd_homework_exec_t,
systemd_homework_t)
+
+allow systemd_homed_t systemd_homed_tmpfs_t:file manage_file_perms;
+fs_tmpfs_filetrans(systemd_homed_t, systemd_homed_tmpfs_t, file)
+
+manage_sock_files_pattern(systemd_homed_t, systemd_userdbd_runtime_t,
systemd_homed_runtime_t)
+manage_dirs_pattern(systemd_homed_t, systemd_homed_runtime_t,
systemd_homed_runtime_t)
+filetrans_pattern(systemd_homed_t, systemd_userdbd_runtime_t,
systemd_homed_runtime_t, sock_file)
+init_runtime_filetrans(systemd_homed_t, systemd_homed_runtime_t, dir)
+
+allow systemd_homed_t systemd_homed_storage_t:file read_file_perms;
+
+allow systemd_homed_t systemd_homed_var_lib_t:dir manage_dir_perms;
+allow systemd_homed_t systemd_homed_var_lib_t:file manage_file_perms;
+init_var_lib_filetrans(systemd_homed_t, systemd_homed_var_lib_t, dir)
+
+# Entries such as /sys/devices/virtual/block/loop1/uevent:
+dev_read_sysfs(systemd_homed_t)
+
+files_list_home(systemd_homed_t)
+files_watch_home(systemd_homed_t)
+files_read_etc_files(systemd_homed_t)
+files_search_tmp(systemd_homed_t)
+
+fs_get_xattr_fs_quotas(systemd_homed_t)
+fs_getattr_all_fs(systemd_homed_t)
+
+kernel_read_kernel_sysctls(systemd_homed_t)
+kernel_read_crypto_sysctls(systemd_homed_t)
+kernel_read_system_state(systemd_homed_t)
+
+systemd_log_parse_environment(systemd_homed_t)
+
+udev_read_runtime_files(systemd_homed_t)
+
+optional_policy(`
+ dbus_system_bus_client(systemd_homed_t)
+ dbus_connect_system_bus(systemd_homed_t)
+
+ init_dbus_chat(systemd_homed_t)
+')
+
+optional_policy(`
+ mta_list_spool(systemd_homed_t)
+')
+
+optional_policy(`
+ unconfined_dbus_send(systemd_homed_t)
+')
+
+#######################################
+#
+# systemd-homework policy
+#
+
+allow systemd_homework_t self:capability { chown fowner fsetid sys_admin };
+dontaudit systemd_homework_t self:capability sys_resource;
+allow systemd_homework_t self:key { search write };
+allow systemd_homework_t self:process getsched;
+allow systemd_homework_t self:sem create_sem_perms;
+
+allow systemd_homework_t systemd_homed_runtime_t:file manage_file_perms;
+allow systemd_homework_t systemd_homed_runtime_t:dir manage_dir_perms;
+files_runtime_filetrans(systemd_homework_t, systemd_homed_runtime_t, file)
+init_runtime_filetrans(systemd_homework_t, systemd_homed_runtime_t, dir)
+
+# mount on /run/systemd/user-home-mount
+allow systemd_homework_t systemd_homed_runtime_t:dir mounton;
+
+allow systemd_homework_t systemd_homed_storage_t:file manage_file_perms;
+files_home_filetrans(systemd_homework_t, systemd_homed_storage_t, file)
+
+allow systemd_homework_t systemd_homed_tmpfs_t:file rw_inherited_file_perms;
+
+dev_rw_loop_control(systemd_homework_t)
+dev_read_rand(systemd_homework_t)
+dev_read_urand(systemd_homework_t)
+dev_rw_lvm_control(systemd_homework_t)
+# Entries such as /sys/devices/virtual/block/loop1/uevent:
+dev_read_sysfs(systemd_homework_t)
+
+files_read_etc_files(systemd_homework_t)
+files_mounton_runtime_dirs(systemd_homework_t)
+
+fs_getattr_all_fs(systemd_homework_t)
+fs_search_all(systemd_homework_t)
+fs_mount_xattr_fs(systemd_homework_t)
+fs_unmount_xattr_fs(systemd_homework_t)
+
+fstools_exec(systemd_homework_t)
+
+init_rw_inherited_stream_socket(systemd_homework_t)
+init_use_fds(systemd_homework_t)
+init_dontaudit_search_keys(systemd_homework_t)
+
+kernel_write_key(systemd_homework_t)
+kernel_get_sysvipc_info(systemd_homework_t)
+kernel_request_load_module(systemd_homework_t)
+
+kernel_read_kernel_sysctls(systemd_homework_t)
+kernel_read_crypto_sysctls(systemd_homework_t)
+kernel_read_system_state(systemd_homework_t)
+
+# loopback:
+storage_raw_read_fixed_disk(systemd_homework_t)
+storage_raw_write_fixed_disk(systemd_homework_t)
+
+systemd_log_parse_environment(systemd_homework_t)
+
+udev_read_runtime_files(systemd_homework_t)
+
#######################################
#
# Hostnamed policy
@@ -630,6 +780,8 @@ allow systemd_logind_t systemd_sessions_runtime_t:dir
manage_dir_perms;
allow systemd_logind_t systemd_sessions_runtime_t:file manage_file_perms;
allow systemd_logind_t systemd_sessions_runtime_t:fifo_file
manage_fifo_file_perms;
+stream_connect_pattern(systemd_logind_t, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t, systemd_userdbd_t)
+
kernel_dontaudit_getattr_proc(systemd_logind_t)
kernel_read_kernel_sysctls(systemd_logind_t)
@@ -814,6 +966,8 @@ allow systemd_machined_t systemd_machined_devpts_t:chr_file
manage_chr_file_perm
manage_files_pattern(systemd_machined_t, systemd_machined_runtime_t,
systemd_machined_runtime_t)
allow systemd_machined_t systemd_machined_runtime_t:lnk_file
manage_lnk_file_perms;
+manage_sock_files_pattern(systemd_machined_t, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t)
+
kernel_read_kernel_sysctls(systemd_machined_t)
kernel_read_system_state(systemd_machined_t)
@@ -1605,6 +1759,42 @@ udev_list_runtime(systemd_user_session_type)
seutil_libselinux_linked(systemd_user_session_type)
+########################################
+#
+# systemd-userdbd local policy
+#
+
+allow systemd_userdbd_t self:capability dac_read_search;
+allow systemd_userdbd_t self:process signal;
+
+stream_connect_pattern(systemd_userdbd_t, systemd_homed_runtime_t,
systemd_homed_runtime_t, systemd_homed_t)
+
+manage_dirs_pattern(systemd_userdbd_t, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t)
+manage_files_pattern(systemd_userdbd_t, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t)
+manage_sock_files_pattern(systemd_userdbd_t, systemd_userdbd_runtime_t,
systemd_userdbd_runtime_t)
+init_runtime_filetrans(systemd_userdbd_t, systemd_userdbd_runtime_t, dir)
+
+can_exec(systemd_userdbd_t, systemd_userdbd_exec_t)
+
+auth_read_shadow(systemd_userdbd_t)
+auth_use_nsswitch(systemd_userdbd_t)
+
+dev_read_urand(systemd_userdbd_t)
+
+files_read_etc_files(systemd_userdbd_t)
+files_read_etc_runtime_files(systemd_userdbd_t)
+files_read_usr_files(systemd_userdbd_t)
+
+fs_read_efivarfs_files(systemd_userdbd_t)
+
+init_stream_connect(systemd_userdbd_t)
+init_search_runtime(systemd_userdbd_t)
+init_read_state(systemd_userdbd_t)
+
+kernel_read_kernel_sysctls(systemd_userdbd_t)
+
+systemd_log_parse_environment(systemd_userdbd_t)
+
#########################################
#
# systemd-user-runtime-dir local policy
diff --git a/policy/modules/system/userdomain.if
b/policy/modules/system/userdomain.if
index 6380e869..0f3bff78 100644
--- a/policy/modules/system/userdomain.if
+++ b/policy/modules/system/userdomain.if
@@ -920,6 +920,10 @@ template(`userdom_common_user_template',`
usernetctl_run($1_t, $1_r)
')
+ optional_policy(`
+ systemd_stream_connect_userdb($1_t)
+ ')
+
optional_policy(`
virt_home_filetrans_virt_home($1_t, dir, ".libvirt")
virt_home_filetrans_virt_home($1_t, dir, ".virtinst")
diff --git a/policy/support/misc_patterns.spt b/policy/support/misc_patterns.spt
index 4b689be9..fea708f9 100644
--- a/policy/support/misc_patterns.spt
+++ b/policy/support/misc_patterns.spt
@@ -60,6 +60,34 @@ define(`domtrans_pattern',`
allow $3 $1:process sigchld;
')
+#
+# Automatic domain transition patterns
+# with NoNewPerms
+#
+# Parameters:
+# 1. source domain
+# 2. entry point file type
+# 3. target domain
+#
+define(`nnp_domtrans_pattern',`
+ domtrans_pattern($1,$2,$3)
+ allow $1 $3:process2 nnp_transition;
+')
+
+#
+# Automatic domain transition patterns
+# on nosuid filesystem
+#
+# Parameters:
+# 1. source domain
+# 2. entry point file type
+# 3. target domain
+#
+define(`nosuid_domtrans_pattern',`
+ domtrans_pattern($1,$2,$3)
+ allow $1 $3:process2 nosuid_transition;
+')
+
#
# Dynamic transition pattern
#