## SELinux policy for systemd components
######################################
##
## Creates types and rules for a basic
## systemd domains.
##
##
##
## Prefix for the domain.
##
##
#
template(`systemd_domain_template',`
gen_require(`
attribute systemd_domain;
')
type $1_t, systemd_domain;
type $1_exec_t;
init_daemon_domain($1_t, $1_exec_t)
init_nnp_daemon_domain($1_t)
kernel_read_system_state($1_t)
auth_use_nsswitch($1_t)
selinux_get_enforce_mode($1_t)
')
######################################
##
## Create a domain for processes which are started
## exuting systemctl.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_stub_unit_file',`
gen_require(`
type systemd_unit_file_t;
')
')
########################################
##
## Common permissions for domains executing systemctl. (INTERNAL)
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_systemctl_common',`
fs_list_cgroup_dirs($1)
fs_read_cgroup_files($1)
fs_read_efivarfs_files($1)
systemd_list_unit_dirs($1)
init_list_pid_dirs($1)
init_read_state($1)
init_stream_send($1)
init_stream_connect($1)
# systemctl tries to adjust its RLIMIT_NOFILE right when it is started
dontaudit $1 self:process setrlimit;
dontaudit $1 self:capability sys_resource;
')
#######################################
##
## Create a domain for processes which are started
## exuting systemctl.
##
##
##
## Domain allowed access.
##
##
#
template(`systemd_systemctl_domain',`
gen_require(`
type systemd_systemctl_exec_t;
role system_r;
attribute systemctl_domain;
')
type $1_systemctl_t, systemctl_domain;
domain_type($1_systemctl_t)
domain_entry_file($1_systemctl_t, systemd_systemctl_exec_t)
role system_r types $1_systemctl_t;
domtrans_pattern($1_t, systemd_systemctl_exec_t , $1_systemctl_t)
systemd_systemctl_common($1_systemctl_t)
')
########################################
##
## Execute systemctl in the caller domain.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_exec_systemctl',`
gen_require(`
type systemd_systemctl_exec_t;
')
corecmd_search_bin($1)
can_exec($1, systemd_systemctl_exec_t)
systemd_systemctl_common($1)
systemd_login_list_pid_dirs($1)
systemd_login_read_pid_files($1)
systemd_passwd_agent_exec($1)
dontaudit $1 self:capability { net_admin sys_ptrace };
')
#
########################################
##
## Allow systemd_systemctl_exec_t to be an entrypoint
## of the specified domain
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_systemctl_entrypoint',`
gen_require(`
type systemd_systemctl_exec_t;
')
allow $1 systemd_systemctl_exec_t:file entrypoint;
')
#######################################
##
## Execute systemctl in the specified domain
##
##
##
## Domain allowed access.
##
##
##
##
## Domain to transition to.
##
##
#
interface(`systemd_domtrans_systemctl',`
gen_require(`
type systemd_systemctl_exec_t;
')
domain_auto_transition_pattern($1, systemd_systemctl_exec_t, $2)
')
#######################################
##
## Create a file type used for systemd unit files.
##
##
##
## Type to be used for an unit file.
##
##
#
interface(`systemd_unit_file',`
gen_require(`
attribute systemd_unit_file_type;
')
typeattribute $1 systemd_unit_file_type;
files_type($1)
')
######################################
##
## Allow domain to search systemd unit dirs.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_search_unit_dirs',`
gen_require(`
attribute systemd_unit_file_type;
')
files_search_var_lib($1)
allow $1 systemd_unit_file_type:dir search_dir_perms;
')
######################################
##
## Allow domain to list systemd unit dirs.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_list_unit_dirs',`
gen_require(`
attribute systemd_unit_file_type;
')
files_search_var_lib($1)
allow $1 systemd_unit_file_type:dir list_dir_perms;
')
######################################
##
## Allow domain to list systemd unit dirs.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_create_unit_dirs',`
gen_require(`
attribute systemd_unit_file_type;
')
files_search_var_lib($1)
allow $1 systemd_unit_file_type:dir create;
')
#####################################
##
## Allow domain to getattr all systemd unit files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_getattr_unit_files',`
gen_require(`
attribute systemd_unit_file_type;
')
files_search_var_lib($1)
getattr_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
#####################################
##
## Allow domain to getattr all systemd unit directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_getattr_unit_dirs',`
gen_require(`
attribute systemd_unit_file_type;
')
allow $1 systemd_unit_file_type:dir getattr;
')
######################################
##
## Allow domain to read all systemd unit files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_read_unit_files',`
gen_require(`
attribute systemd_unit_file_type;
')
files_search_var_lib($1)
allow $1 systemd_unit_file_type:file read_file_perms;
allow $1 systemd_unit_file_type:lnk_file read_lnk_file_perms;
allow $1 systemd_unit_file_type:dir list_dir_perms;
')
#####################################
##
## Dontaudit domain to read all systemd unit files.
##
##
##
## Domain to not audit.
##
##
#
interface(`systemd_dontaudit_read_unit_files',`
gen_require(`
attribute systemd_unit_file_type;
')
dontaudit $1 systemd_unit_file_type:file read_file_perms;
dontaudit $1 systemd_unit_file_type:dir list_dir_perms;
')
######################################
##
## Read systemd_login PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_read_pid_files',`
gen_require(`
type systemd_logind_var_run_t;
')
files_search_pids($1)
read_files_pattern($1, systemd_logind_var_run_t, systemd_logind_var_run_t)
')
######################################
##
## Read systemd_resolved PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_resolved_read_pid',`
gen_require(`
type systemd_resolved_var_run_t;
')
files_search_pids($1)
list_dirs_pattern($1, systemd_resolved_var_run_t, systemd_resolved_var_run_t)
read_files_pattern($1, systemd_resolved_var_run_t, systemd_resolved_var_run_t)
read_lnk_files_pattern($1, systemd_resolved_var_run_t, systemd_resolved_var_run_t)
')
######################################
##
## Write to systemd_resolved PID socket files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_resolved_write_pid_sock_files',`
gen_require(`
type systemd_resolved_var_run_t;
')
files_search_pids($1)
write_sock_files_pattern($1, systemd_resolved_var_run_t, systemd_resolved_var_run_t)
')
######################################
##
## Watch systemd_resolved PID directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_resolved_watch_pid_dirs',`
gen_require(`
type systemd_resolved_var_run_t;
')
files_search_pids($1)
allow $1 systemd_resolved_var_run_t:dir watch_dir_perms;
')
########################################
##
## Create objects in /var/run/systemd/resolve with a private
## type using a type_transition.
##
##
##
## Domain allowed access.
##
##
##
##
## Private file type.
##
##
##
##
## Object classes to be created.
##
##
##
##
## The name of the object being created.
##
##
#
interface(`systemd_resolved_pid_filetrans',`
gen_require(`
type systemd_resolved_var_run_t;
')
filetrans_pattern($1, systemd_resolved_var_run_t, $2, $3, $4)
')
######################################
##
## Read systemd_login PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_manage_pid_files',`
gen_require(`
type systemd_logind_var_run_t;
')
files_search_pids($1)
manage_files_pattern($1, systemd_logind_var_run_t, systemd_logind_var_run_t)
')
######################################
##
## Read systemd_login PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_filetrans_pid_files',`
gen_require(`
type systemd_logind_var_run_t;
')
files_pid_filetrans($1, systemd_logind_var_run_t, file, "nologin")
')
######################################
##
## Read systemd_login PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_list_pid_dirs',`
gen_require(`
type systemd_logind_var_run_t;
')
files_search_pids($1)
list_dirs_pattern($1, systemd_logind_var_run_t, systemd_logind_var_run_t)
')
######################################
##
## Watch systemd_login PID directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_watch_pid_dirs',`
gen_require(`
type systemd_logind_var_run_t;
')
files_search_pids($1)
allow $1 systemd_logind_var_run_t:dir watch_dir_perms;
')
######################################
##
## Watch systemd_login session directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_watch_session_dirs',`
gen_require(`
type systemd_logind_sessions_t;
')
init_search_pid_dirs($1)
allow $1 systemd_logind_sessions_t:dir watch_dir_perms;
')
######################################
##
## Mounton systemd_login PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_mounton_pid_dirs',`
gen_require(`
type systemd_logind_var_run_t;
')
allow $1 systemd_logind_var_run_t:dir mounton;
')
######################################
##
## Use and and inherited systemd
## logind file descriptors.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_use_fds_logind',`
gen_require(`
type systemd_logind_t;
')
allow $1 systemd_logind_t:fd use;
')
########################################
##
## Read the process state (/proc/pid) of systemd_logind_t.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_logind_read_state',`
gen_require(`
type systemd_logind_t;
')
allow $1 systemd_logind_t:dir search_dir_perms;
allow $1 systemd_logind_t:file read_file_perms;
allow $1 systemd_logind_t:lnk_file read_lnk_file_perms;
')
######################################
##
## Read logind sessions files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_read_logind_sessions_files',`
gen_require(`
type systemd_logind_sessions_t;
')
init_search_pid_dirs($1)
allow $1 systemd_logind_sessions_t:dir list_dir_perms;
read_files_pattern($1, systemd_logind_sessions_t, systemd_logind_sessions_t)
')
######################################
##
## Mounton inherited logind sessions pipes.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_mounton_inherited_logind_sessions_dirs',`
gen_require(`
type systemd_logind_sessions_t;
')
allow $1 systemd_logind_sessions_t:dir mounton;
')
######################################
##
## Write inherited logind sessions pipes.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_write_inherited_logind_sessions_pipes',`
gen_require(`
type systemd_logind_sessions_t;
type systemd_logind_t;
')
allow $1 systemd_logind_t:fd use;
allow $1 systemd_logind_sessions_t:fifo_file write;
')
######################################
##
## Dontaudit attempts to write inherited logind sessions pipes.
##
##
##
## Domain to not audit.
##
##
#
interface(`systemd_dontaudit_write_inherited_logind_sessions_pipes',`
gen_require(`
type systemd_logind_sessions_t;
')
dontaudit $1 systemd_logind_sessions_t:fifo_file write;
')
######################################
##
## Write systemd inhibit pipes.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_write_inhibit_pipes',`
gen_require(`
type systemd_logind_inhibit_var_run_t;
')
allow $1 systemd_logind_inhibit_var_run_t:fifo_file write;
')
########################################
##
## Allow process to mount directory with inhibit pipes
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_mounton_inhibit_dir',`
gen_require(`
type systemd_logind_inhibit_var_run_t;
')
allow $1 systemd_logind_inhibit_var_run_t:dir mounton;
')
########################################
##
## Send and receive messages from
## systemd logind over dbus.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_dbus_chat_logind',`
gen_require(`
type systemd_logind_t;
class dbus send_msg;
')
allow $1 systemd_logind_t:dbus send_msg;
allow systemd_logind_t $1:dbus send_msg;
ps_process_pattern(systemd_logind_t, $1)
allow systemd_logind_t $1:process signal;
allow $1 systemd_logind_t:fd use;
')
#######################################
##
## Execute a domain transition to run systemd-sysctl.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_domtrans_sysctl',`
gen_require(`
type systemd_sysctl_t, systemd_sysctl_exec_t;
')
domtrans_pattern($1, systemd_sysctl_exec_t, systemd_sysctl_t)
')
#######################################
##
## Allow a domain to execute systemd-sysctl in the caller domain.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_exec_sysctl',`
gen_require(`
type systemd_sysctl_exec_t;
')
can_exec($1,systemd_sysctl_exec_t)
')
#######################################
##
## Allow a domain to execute systemd-sysctl in the caller domain.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_tmpfiles_exec',`
gen_require(`
type systemd_tmpfiles_exec_t;
')
can_exec($1,systemd_tmpfiles_exec_t)
')
#######################################
##
## Execute a domain transition to run systemd-tmpfiles.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_tmpfiles_domtrans',`
gen_require(`
type systemd_tmpfiles_t, systemd_tmpfiles_exec_t;
')
domtrans_pattern($1, systemd_tmpfiles_exec_t, systemd_tmpfiles_t)
')
#######################################
##
## Allow caller nnp_transition to systemd_tmpfiles_t
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_tmpfiles_nnp_domtrans',`
gen_require(`
type systemd_tmpfiles_t;
')
allow $1 systemd_tmpfiles_t:process2 nnp_transition;
')
#######################################
##
## Execute a domain transition to run systemd-localed.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_localed_domtrans',`
gen_require(`
type systemd_localed_t, systemd_localed_exec_t;
')
domtrans_pattern($1, systemd_localed_exec_t, systemd_localed_t)
')
########################################
##
## Execute a domain transition to run systemd-tty-ask-password-agent.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_passwd_agent_domtrans',`
gen_require(`
type systemd_passwd_agent_t, systemd_passwd_agent_exec_t;
')
domtrans_pattern($1, systemd_passwd_agent_exec_t, systemd_passwd_agent_t)
')
#######################################
##
## Execute systemd-tty-ask-password-agent in the caller domain
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_passwd_agent_exec',`
gen_require(`
type systemd_passwd_agent_t, systemd_passwd_agent_exec_t;
')
can_exec($1, systemd_passwd_agent_exec_t)
systemd_manage_passwd_run($1)
')
########################################
##
## Execute a domain transition to run systemd_rfkill.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_rfkill_domtrans',`
gen_require(`
type systemd_rfkill_t, systemd_rfkill_exec_t;
')
domtrans_pattern($1, systemd_rfkill_exec_t, systemd_rfkill_t)
')
########################################
##
## Mounton rfkill lib directory.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_rfkill_mounton_var_lib',`
gen_require(`
type systemd_rfkill_var_lib_t;
')
allow $1 systemd_rfkill_var_lib_t:dir mounton;
')
########################################
##
## Read systemd-rfkill lib files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_rfkill_setattr_lib',`
gen_require(`
type systemd_rfkill_var_lib_t;
')
files_search_var_lib($1)
setattr_dirs_pattern($1, systemd_rfkill_var_lib_t, systemd_rfkill_var_lib_t)
')
########################################
##
## read systemd rfkill dir
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_rfkill_read_lib_dirs',`
gen_require(`
type systemd_rfkill_var_lib_t;
')
list_dirs_pattern($1, systemd_rfkill_var_lib_t, systemd_rfkill_var_lib_t)
')
########################################
##
## manage systemd rfkill dir
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_rfkill_manage_lib_dirs',`
gen_require(`
type systemd_rfkill_var_lib_t;
')
manage_dirs_pattern($1, systemd_rfkill_var_lib_t, systemd_rfkill_var_lib_t)
')
########################################
##
## Mounton systemd timesync directory.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_timedated_mounton_var_lib',`
gen_require(`
type systemd_timedated_var_lib_t;
')
allow $1 systemd_timedated_var_lib_t:dir mounton;
')
#######################################
##
## Get timedated service status
##
##
##
## Domain allowed to transition.
##
##
#
interface(`systemd_timedated_status',`
gen_require(`
type systemd_timedated_unit_file_t;
')
allow $1 systemd_timedated_unit_file_t:service status;
')
########################################
##
## manage systemd timesync dir
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_timedated_manage_lib_dirs',`
gen_require(`
type systemd_timedated_var_lib_t;
')
manage_dirs_pattern($1, systemd_timedated_var_lib_t, systemd_timedated_var_lib_t)
read_lnk_files_pattern($1, systemd_timedated_var_lib_t, systemd_timedated_var_lib_t)
')
########################################
##
## Execute systemd-notify in the caller domain
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_exec_notify',`
gen_require(`
type systemd_notify_exec_t;
')
can_exec($1, systemd_notify_exec_t)
')
########################################
##
## Execute a domain transition to run systemd_notify.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_notify_domtrans',`
gen_require(`
type systemd_notify_t, systemd_notify_exec_t;
')
domtrans_pattern($1, systemd_notify_exec_t, systemd_notify_t)
')
########################################
##
## Execute systemd-tty-ask-password-agent in the systemd_passwd_agent domain, and
## allow the specified role the systemd_passwd_agent domain.
##
##
##
## Domain allowed access
##
##
##
##
## The role to be allowed the systemd_passwd_agent domain.
##
##
#
interface(`systemd_passwd_agent_run',`
gen_require(`
type systemd_passwd_agent_t;
')
systemd_passwd_agent_domtrans($1)
role $2 types systemd_passwd_agent_t;
')
########################################
##
## Execute systemd-tmpfiles in the systemd_tmpfiles_t domain, and
## allow the specified role the systemd_tmpfiles domain.
##
##
##
## Domain allowed access
##
##
##
##
## The role to be allowed the systemd_tmpfiles domain.
##
##
#
interface(`systemd_tmpfiles_run',`
gen_require(`
type systemd_tmpfiles_t;
')
systemd_tmpfiles_domtrans($1)
role $2 types systemd_tmpfiles_t;
')
########################################
##
## Role access for systemd_passwd_agent
##
##
##
## Role allowed access
##
##
##
##
## User domain for the role
##
##
#
interface(`systemd_passwd_agent_role',`
gen_require(`
type systemd_passwd_agent_t;
')
role $1 types systemd_passwd_agent_t;
systemd_passwd_agent_domtrans($2)
ps_process_pattern($2, systemd_passwd_agent_t)
allow $2 systemd_passwd_agent_t:process signal;
')
########################################
##
## Send generic signals to systemd_passwd_agent processes.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_signal_passwd_agent',`
gen_require(`
type systemd_passwd_agent_t;
')
allow $1 systemd_passwd_agent_t:process signal;
')
######################################
##
## Allow to domain to read systemd-passwd pipe
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_read_fifo_file_passwd_run',`
gen_require(`
type systemd_passwd_var_run_t;
')
init_search_pid_dirs($1)
read_sock_files_pattern($1, systemd_passwd_var_run_t, systemd_passwd_var_run_t)
')
########################################
##
## Relabel to user home directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_relabelto_fifo_file_passwd_run',`
gen_require(`
type systemd_passwd_var_run_t;
')
allow $1 systemd_passwd_var_run_t:fifo_file relabelto;
')
########################################
##
## Watch systemd-passwd pid dirs
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_passwd_watch_pid_dirs',`
gen_require(`
type systemd_passwd_var_run_t;
')
allow $1 systemd_passwd_var_run_t:dir watch_dir_perms;
')
#######################################
##
## Relabel systemd unit directories
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_relabel_unit_dirs',`
gen_require(`
attribute systemd_unit_file_type;
')
relabel_dirs_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
#######################################
##
## Relabel systemd unit files
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_relabel_unit_files',`
gen_require(`
attribute systemd_unit_file_type;
')
relabel_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
#######################################
##
## Relabel systemd unit link files
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_relabel_unit_symlinks',`
gen_require(`
attribute systemd_unit_file_type;
')
relabel_lnk_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
#######################################
##
## Send generic signals to systemd_passwd_agent processes.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_passwd_run',`
gen_require(`
type systemd_passwd_agent_t;
type systemd_passwd_var_run_t;
')
init_search_pid_dirs($1)
manage_files_pattern($1, systemd_passwd_var_run_t, systemd_passwd_var_run_t)
manage_sock_files_pattern($1, systemd_passwd_var_run_t, systemd_passwd_var_run_t)
manage_fifo_files_pattern($1, systemd_passwd_var_run_t, systemd_passwd_var_run_t)
allow systemd_passwd_agent_t $1:process signull;
allow systemd_passwd_agent_t $1:unix_dgram_socket sendto;
')
######################################
##
## Template for temporary sockets and files in /dev/.systemd/ask-password
## which are used by systemd-passwd-agent
##
##
##
## The prefix of the domain (e.g., user
## is the prefix for user_t).
##
##
#
interface(`systemd_passwd_agent_dev_template',`
gen_require(`
type systemd_passwd_agent_t;
')
type systemd_$1_device_t;
files_type(systemd_$1_device_t)
dev_associate(systemd_$1_device_t)
dev_filetrans($1_t, systemd_$1_device_t, { file sock_file })
init_pid_filetrans($1_t, systemd_$1_device_t, { file sock_file })
allow $1_t systemd_$1_device_t:file manage_file_perms;
allow $1_t systemd_$1_device_t:sock_file manage_sock_file_perms;
allow systemd_passwd_agent_t $1_t:process signull;
allow systemd_passwd_agent_t $1_t:unix_dgram_socket sendto;
allow systemd_passwd_agent_t systemd_$1_device_t:sock_file write;
allow systemd_passwd_agent_t systemd_$1_device_t:file read_file_perms;
')
########################################
##
## Allow the specified domain to connect to
## systemd_logger with a unix socket.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_logger_stream_connect',`
gen_require(`
type systemd_logger_t;
')
allow $1 systemd_logger_t:unix_stream_socket connectto;
')
########################################
##
## manage systemd unit dirs
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_unit_dirs',`
gen_require(`
attribute systemd_unit_file_type;
')
manage_dirs_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
########################################
##
## manage systemd unit link files
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_unit_symlinks',`
gen_require(`
attribute systemd_unit_file_type;
')
manage_lnk_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
########################################
##
## manage all systemd unit files
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_all_unit_files',`
gen_require(`
attribute systemd_unit_file_type;
')
manage_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
manage_lnk_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
########################################
##
## manage all systemd unit lnk_files
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_all_unit_lnk_files',`
gen_require(`
attribute systemd_unit_file_type;
')
manage_lnk_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type)
')
########################################
##
## Allow the specified domain to start all systemd services.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_start_all_services',`
gen_require(`
attribute systemd_unit_file_type;
')
allow $1 systemd_unit_file_type:service start;
')
#######################################
##
## Allow the specified domain to reload all systemd services.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_reload_all_services',`
gen_require(`
attribute systemd_unit_file_type;
')
allow $1 systemd_unit_file_type:service reload;
')
########################################
##
## Allow the specified domain to modify the systemd configuration of
## all systemd services
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_config_all_services',`
gen_require(`
attribute systemd_unit_file_type;
')
allow $1 systemd_unit_file_type:service all_service_perms;
init_config_all_script_files($1)
')
########################################
##
## Allow the specified domain to start systemd services.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_start_systemd_services',`
gen_require(`
type systemd_unit_file_t;
')
allow $1 systemd_unit_file_t:service start;
')
########################################
##
## Allow the specified domain to stop systemd services.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_stop_systemd_services',`
gen_require(`
type systemd_unit_file_t;
')
allow $1 systemd_unit_file_t:service stop;
')
########################################
##
## Allow the specified domain to status systemd services.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_status_systemd_services',`
gen_require(`
type systemd_unit_file_t;
')
allow $1 systemd_unit_file_t:service status;
')
#######################################
##
## Allow the specified domain to reload all systemd services.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_reload_systemd_services',`
gen_require(`
type systemd_unit_file_t;
')
allow $1 systemd_unit_file_t:service reload;
')
########################################
##
## Allow the specified domain to modify the systemd configuration of
## all systemd services
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_config_systemd_services',`
gen_require(`
type systemd_unit_file_t;
')
allow $1 systemd_unit_file_t:service all_service_perms;
init_config_all_script_files($1)
')
########################################
##
## manage all systemd random seed file
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_random_seed',`
gen_require(`
type random_seed_t;
')
allow $1 random_seed_t:file manage_file_perms;
files_var_lib_filetrans($1, random_seed_t, file, "random_seed")
')
########################################
##
## Allow process to read hostname config file.
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_hostnamed_read_config',`
gen_require(`
type hostname_etc_t;
')
files_search_etc($1)
allow $1 hostname_etc_t:file read_file_perms;
')
########################################
##
## Allow process to manage hostname config file.
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_hostnamed_manage_config',`
gen_require(`
type hostname_etc_t;
')
files_search_etc($1)
allow $1 hostname_etc_t:file manage_file_perms;
files_etc_filetrans($1, hostname_etc_t, file, "hostname")
')
########################################
##
## Allow process to delete hostname config file.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_hostnamed_delete_config',`
gen_require(`
type hostname_etc_t;
')
init_delete_pid_dir_entry($1)
allow $1 hostname_etc_t:file delete_file_perms;
')
#######################################
##
## Create objects in /run/systemd/generator directory
## with an automatic type transition to
## a specified private type.
##
##
##
## Domain allowed access.
##
##
##
##
## The type of the object to create.
##
##
##
##
## The class of the object to be created.
##
##
##
##
## The name of the object being created.
##
##
#
interface(`systemd_unit_file_filetrans',`
gen_require(`
type systemd_unit_file_t;
')
files_search_pids($1)
filetrans_pattern($1, systemd_unit_file_t, $2, $3, $4)
')
#######################################
##
## Get attributes of generic systemd unit files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_getattr_generic_unit_files',`
gen_require(`
type systemd_unit_file_t;
')
getattr_files_pattern($1, systemd_unit_file_t, systemd_unit_file_t)
')
#######################################
##
## Create a directory in the /usr/lib/systemd/system directory.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_create_unit_file_dirs',`
gen_require(`
type systemd_unit_file_t;
')
create_dirs_pattern($1, systemd_unit_file_t, systemd_unit_file_t)
')
#######################################
##
## Create a link in the /usr/lib/systemd/system directory.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_create_unit_file_lnk',`
gen_require(`
type systemd_unit_file_t;
')
create_lnk_files_pattern($1, systemd_unit_file_t, systemd_unit_file_t)
')
########################################
##
## Transition to systemd named content
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_filetrans_named_content',`
gen_require(`
type systemd_passwd_var_run_t;
type systemd_logind_var_run_t;
type hostname_etc_t;
type systemd_home_t;
type systemd_rfkill_var_lib_t;
')
files_pid_filetrans($1, systemd_logind_var_run_t, file, "nologin")
files_pid_filetrans($1, systemd_logind_var_run_t, file, "shutdown")
init_named_pid_filetrans($1, hostname_etc_t, file, "default-hostname")
init_named_pid_filetrans($1, systemd_passwd_var_run_t, dir, "ask-password-block")
init_named_pid_filetrans($1, systemd_passwd_var_run_t, dir, "ask-password")
files_etc_filetrans($1, hostname_etc_t, file, "hostname" )
files_etc_filetrans($1, hostname_etc_t, file, "machine-info" )
init_var_lib_filetrans($1, systemd_rfkill_var_lib_t, dir, "rfkill" )
')
########################################
##
## read systemd homedir content
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_read_home_content',`
gen_require(`
type systemd_home_t;
')
optional_policy(`
gnome_search_gconf_data_dir($1)
')
read_files_pattern($1, systemd_home_t, systemd_home_t)
read_lnk_files_pattern($1, systemd_home_t, systemd_home_t)
')
########################################
##
## Manage systemd homedir content
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_home_content',`
gen_require(`
type systemd_home_t;
')
optional_policy(`
gnome_search_gconf_data_dir($1)
')
manage_dirs_pattern($1, systemd_home_t, systemd_home_t)
manage_files_pattern($1, systemd_home_t, systemd_home_t)
manage_lnk_files_pattern($1, systemd_home_t, systemd_home_t)
systemd_filetrans_home_content($1)
')
########################################
##
## Transition to systemd named content
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_filetrans_home_content',`
gen_require(`
type systemd_home_t;
')
optional_policy(`
gnome_data_filetrans($1, systemd_home_t, dir, "systemd")
')
')
########################################
##
## Transition to systemd named content for /etc/hostname
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_filetrans_named_hostname',`
gen_require(`
type hostname_etc_t;
')
files_etc_filetrans($1, hostname_etc_t, file, "hostname" )
files_etc_filetrans($1, hostname_etc_t, file, "machine-info" )
')
########################################
##
## Get the system status information from systemd_login
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_status',`
gen_require(`
type systemd_logind_t;
')
allow $1 systemd_logind_t:system status;
')
########################################
##
## Send systemd_login a null signal.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_signull',`
gen_require(`
type systemd_logind_t;
')
allow $1 systemd_logind_t:process signull;
')
########################################
##
## Send systemd_hostnamed a null signal.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_hostnamed_signull',`
gen_require(`
type systemd_hostnamed_t;
')
allow $1 systemd_hostnamed_t:process signull;
')
########################################
##
## Tell systemd_login to reboot the system.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_reboot',`
gen_require(`
type systemd_logind_t;
')
allow $1 systemd_logind_t:system reboot;
')
########################################
##
## Tell systemd_login to halt the system.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_halt',`
gen_require(`
type systemd_logind_t;
')
allow $1 systemd_logind_t:system halt;
')
########################################
##
## Tell systemd_login to do an unknown access.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_login_undefined',`
gen_require(`
type systemd_logind_t;
')
allow $1 systemd_logind_t:system undefined;
')
########################################
##
## Configure generic unit files domain.
##
##
##
## Domain allowed to transition.
##
##
#
interface(`systemd_config_generic_services',`
gen_require(`
type systemd_unit_file_t;
')
systemd_exec_systemctl($1)
allow $1 systemd_unit_file_t:file read_file_perms;
allow $1 systemd_unit_file_t:service manage_service_perms;
')
########################################
##
## Configure power unit files domain.
##
##
##
## Domain allowed to transition.
##
##
#
interface(`systemd_config_power_services',`
gen_require(`
type power_unit_file_t;
')
systemd_exec_systemctl($1)
allow $1 power_unit_file_t:file read_file_perms;
allow $1 power_unit_file_t:service manage_service_perms;
')
########################################
##
## Start power unit files domain.
##
##
##
## Domain allowed to transition.
##
##
#
interface(`systemd_start_power_services',`
gen_require(`
type power_unit_file_t;
')
systemd_exec_systemctl($1)
allow $1 power_unit_file_t:service start;
')
########################################
##
## Status power unit files domain.
##
##
##
## Domain allowed to transition.
##
##
#
interface(`systemd_status_power_services',`
gen_require(`
type power_unit_file_t;
')
systemd_exec_systemctl($1)
allow $1 power_unit_file_t:service status;
')
#######################################
##
## Start power unit files domain.
##
##
##
## Domain allowed to transition.
##
##
#
interface(`systemd_start_all_unit_files',`
gen_require(`
attribute systemd_unit_file_type;
')
systemd_exec_systemctl($1)
allow $1 systemd_unit_file_type:service start;
')
#######################################
##
## Start power unit files domain.
##
##
##
## Domain allowed to transition.
##
##
#
interface(`systemd_status_all_unit_files',`
gen_require(`
attribute systemd_unit_file_type;
')
systemd_exec_systemctl($1)
allow $1 systemd_unit_file_type:service status;
')
########################################
##
## Send and receive messages from
## systemd timedated over dbus.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_dbus_chat_timedated',`
gen_require(`
type systemd_timedated_t;
class dbus send_msg;
')
allow $1 systemd_timedated_t:dbus send_msg;
allow systemd_timedated_t $1:dbus send_msg;
ps_process_pattern(systemd_timedated_t, $1)
')
########################################
##
## Send and receive messages from
## systemd hostnamed over dbus.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_dbus_chat_hostnamed',`
gen_require(`
type systemd_hostnamed_t;
class dbus send_msg;
')
allow $1 systemd_hostnamed_t:dbus send_msg;
allow systemd_hostnamed_t $1:dbus send_msg;
ps_process_pattern(systemd_hostnamed_t, $1)
')
########################################
##
## Send and receive messages from
## systemd localed over dbus.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_dbus_chat_localed',`
gen_require(`
type systemd_localed_t;
class dbus send_msg;
')
allow $1 systemd_localed_t:dbus send_msg;
allow systemd_localed_t $1:dbus send_msg;
ps_process_pattern(systemd_localed_t, $1)
')
########################################
##
## Dontaudit attempts to send dbus domains chat messages
##
##
##
## Domain to not audit.
##
##
#
interface(`systemd_dontaudit_dbus_chat',`
gen_require(`
attribute systemd_domain;
class dbus send_msg;
')
dontaudit $1 systemd_domain:dbus send_msg;
')
######################################
##
## Read systemd-machined PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_read_pid_files',`
gen_require(`
type systemd_machined_var_run_t;
')
files_search_pids($1)
list_dirs_pattern($1, systemd_machined_var_run_t, systemd_machined_var_run_t)
read_files_pattern($1, systemd_machined_var_run_t, systemd_machined_var_run_t)
')
######################################
##
## Manage systemd-machined PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_manage_pid_files',`
gen_require(`
type systemd_machined_var_run_t;
')
files_search_pids($1)
manage_dirs_pattern($1, systemd_machined_var_run_t, systemd_machined_var_run_t)
manage_files_pattern($1, systemd_machined_var_run_t, systemd_machined_var_run_t)
')
######################################
##
## List systemd-machined PID files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_list_pid_dirs',`
gen_require(`
type systemd_machined_var_run_t;
')
files_search_pids($1)
list_dirs_pattern($1, systemd_machined_var_run_t, systemd_machined_var_run_t)
')
######################################
##
## Watch systemd-machined PID directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_watch_pid_dirs',`
gen_require(`
type systemd_machined_var_run_t;
')
files_search_pids($1)
allow $1 systemd_machined_var_run_t:dir watch_dir_perms;
')
########################################
##
## Search systemd-machined lib directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_search_lib',`
gen_require(`
type systemd_machined_var_lib_t;
')
allow $1 systemd_machined_var_lib_t:dir search_dir_perms;
files_search_var_lib($1)
')
########################################
##
## Read systemd-machined lib files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_read_lib_files',`
gen_require(`
type systemd_machined_var_lib_t;
')
files_search_var_lib($1)
read_files_pattern($1, systemd_machined_var_lib_t, systemd_machined_var_lib_t)
')
########################################
##
## Manage systemd-machined lib files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_manage_lib_files',`
gen_require(`
type systemd_machined_var_lib_t;
')
files_search_var_lib($1)
manage_dirs_pattern($1, systemd_machined_var_lib_t, systemd_machined_var_lib_t)
manage_files_pattern($1, systemd_machined_var_lib_t, systemd_machined_var_lib_t)
')
########################################
##
## Read and write systemd-machined devpts character nodes.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_rw_devpts_chr_files',`
gen_require(`
type devpts_t, systemd_machined_devpts_t;
')
rw_chr_files_pattern($1, devpts_t, systemd_machined_devpts_t)
')
########################################
##
## Allow the specified domain to connect to
## systemd_machined with a unix socket.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_machined_stream_connect',`
gen_require(`
type systemd_machined_t;
')
allow $1 systemd_machined_t:unix_stream_socket connectto;
')
########################################
##
## Send and receive messages from
## systemd machined over dbus.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_dbus_chat_machined',`
gen_require(`
type systemd_machined_t;
class dbus send_msg;
')
allow $1 systemd_machined_t:dbus send_msg;
allow systemd_machined_t $1:dbus send_msg;
ps_process_pattern(systemd_machined_t, $1)
')
#######################################
##
## Execute a domain transition to run systemd-coredump.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_coredump_domtrans',`
gen_require(`
type systemd_coredump_t, systemd_coredump_exec_t;
')
domtrans_pattern($1, systemd_coredump_exec_t, systemd_coredump_t)
')
########################################
##
## Mmap to systemd-coredump temporary file system.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_map_coredump_tmpfs_files',`
gen_require(`
type systemd_coredump_tmpfs_t;
')
allow $1 systemd_coredump_tmpfs_t:file map;
')
########################################
##
## Read and write to systemd-coredump temporary file system.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_rw_coredump_tmpfs_files',`
gen_require(`
type systemd_coredump_tmpfs_t;
')
allow $1 systemd_coredump_tmpfs_t:file rw_file_perms;
')
########################################
##
## Mmap to systemd-bootchart temporary file system.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_map_bootchart_tmpfs_files',`
gen_require(`
type systemd_bootchart_tmpfs_t;
')
allow $1 systemd_bootchart_tmpfs_t:file map;
')
########################################
##
## Read and write to systemd-bootchart temporary file system.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_rw_bootchart_tmpfs_files',`
gen_require(`
type systemd_bootchart_tmpfs_t;
')
allow $1 systemd_bootchart_tmpfs_t:file rw_file_perms;
')
########################################
##
## Allow process to read hwdb config file.
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_hwdb_read_config',`
gen_require(`
type systemd_hwdb_etc_t;
')
files_search_etc($1)
allow $1 systemd_hwdb_etc_t:file read_file_perms;
')
########################################
##
## Allow process to mmap hwdb config file.
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_hwdb_mmap_config',`
gen_require(`
type systemd_hwdb_etc_t;
')
allow $1 systemd_hwdb_etc_t:file map;
')
########################################
##
## Allow process to manage hwdb config file.
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_hwdb_manage_config',`
gen_require(`
type systemd_hwdb_etc_t;
')
files_search_etc($1)
manage_files_pattern($1, systemd_hwdb_etc_t, systemd_hwdb_etc_t)
mmap_files_pattern($1, systemd_hwdb_etc_t, systemd_hwdb_etc_t)
allow $1 systemd_hwdb_etc_t:file {relabelfrom relabelto};
files_etc_filetrans($1, systemd_hwdb_etc_t, file, "hwdb.bin")
')
########################################
##
## Allow process to mount directory configured in a
## systemd unit as ReadWriteDirectory or ReadOnlyDirectory.
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_allow_mount_dir',`
gen_require(`
attribute systemd_mount_directory;
')
allow $1 systemd_mount_directory:dir { list_dir_perms mounton };
')
########################################
##
## Allow process to create directory configured in a
## systemd unit as ReadWriteDirectory or ReadOnlyDirectory.
##
##
##
## Domain allowed access.
##
##
##
#
interface(`systemd_allow_create_mount_dir',`
gen_require(`
attribute systemd_mount_directory;
')
allow $1 systemd_mount_directory:dir create_dir_perms;
')
########################################
##
## Mark the following type as mountable by systemd.
##
##
##
## Type to be authorized to be mounted
##
##
##
#
interface(`systemd_mount_dir',`
gen_require(`
attribute systemd_mount_directory;
')
files_type($1)
typeattribute $1 systemd_mount_directory;
')
########################################
##
## Mmap systemd_networkd_exec_t files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_map_networkd_exec_files',`
gen_require(`
type systemd_networkd_exec_t;
')
allow $1 systemd_networkd_exec_t:file map;
')
########################################
##
## Watch systemd_networkd PID directories.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_networkd_watch_pid_dirs',`
gen_require(`
type systemd_networkd_var_run_t;
')
init_search_pid_dirs($1)
allow $1 systemd_networkd_var_run_t:dir watch_dir_perms;
')
########################################
##
## Mmap systemd_resolved_exec_t files.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_map_resolved_exec_files',`
gen_require(`
type systemd_resolved_exec_t;
')
allow $1 systemd_resolved_exec_t:file map;
')
########################################
##
## Exchange messages with
## systemd resolved over dbus or varlink.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_chat_resolved',`
gen_require(`
type systemd_resolved_t;
class dbus send_msg;
')
allow $1 systemd_resolved_t:dbus send_msg;
allow $1 systemd_resolved_t:unix_stream_socket connectto;
allow systemd_resolved_t $1:dbus send_msg;
ps_process_pattern(systemd_resolved_t, $1)
')
########################################
##
## Exchange messages with
## systemd resolved over dbus (deprecated)
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_dbus_chat_resolved',`
refpolicywarn(`$0($*) has been deprecated, use systemd_chat_resolved() instead.')
systemd_chat_resolved($1)
')
######################################
##
## Make the specified type usable as a systemd private tmp type.
##
##
##
## Type to be used as a private tmp type.
##
##
#
interface(`systemd_private_tmp',`
gen_require(`
attribute systemd_private_tmp_type;
')
typeattribute $1 systemd_private_tmp_type;
')
#######################################
##
## Delete filesystem objects with systemd_delete_private_tmp attribute
##
##
##
## Domain allowed access
##
##
#
interface(`systemd_delete_private_tmp',`
gen_require(`
attribute systemd_private_tmp_type;
')
delete_dirs_pattern($1, systemd_private_tmp_type, systemd_private_tmp_type)
delete_fifo_files_pattern($1, systemd_private_tmp_type, systemd_private_tmp_type)
delete_files_pattern($1, systemd_private_tmp_type, systemd_private_tmp_type)
delete_lnk_files_pattern($1, systemd_private_tmp_type, systemd_private_tmp_type)
delete_sock_files_pattern($1, systemd_private_tmp_type, systemd_private_tmp_type)
')
#
######################################
##
## Make the specified type usable as a systemd read efivarfs type.
##
##
##
## Type to be used as a read efivarfs type.
##
##
#
interface(`systemd_read_efivarfs',`
gen_require(`
attribute systemd_read_efivarfs_type;
')
typeattribute $1 systemd_read_efivarfs_type;
')
#######################################
##
## Create objects in the pid directory
## with a private type with a type transition.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_userdbd_runtime_filetrans',`
gen_require(`
type init_var_run_t;
type systemd_userdbd_runtime_t;
')
filetrans_pattern($1, init_var_run_t, systemd_userdbd_runtime_t, dir, "userdb")
')
#######################################
##
## Manage systemd-userdbd data symlinks.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_userdbd_runtime_manage_symlinks',`
gen_require(`
type systemd_userdbd_runtime_t;
')
manage_lnk_files_pattern($1, systemd_userdbd_runtime_t, systemd_userdbd_runtime_t);
')
#######################################
##
## Connect to systemd-userdbd with a unix socket.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_userdbd_stream_connect',`
gen_require(`
type systemd_userdbd_t;
type systemd_userdbd_runtime_t;
')
files_search_pids($1)
list_dirs_pattern($1, systemd_userdbd_runtime_t, systemd_userdbd_runtime_t)
read_lnk_files_pattern($1, systemd_userdbd_runtime_t, systemd_userdbd_runtime_t)
write_sock_files_pattern($1, systemd_userdbd_runtime_t, systemd_userdbd_runtime_t)
allow $1 systemd_userdbd_t:unix_stream_socket connectto;
')
#######################################
##
## Manage named sockets in userdbd runtime directory
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_manage_userdbd_runtime_sock_files',`
gen_require(`
type systemd_userdbd_runtime_t;
')
manage_sock_files_pattern($1, systemd_userdbd_runtime_t, systemd_userdbd_runtime_t)
')
#######################################
##
## Allows connections to the systemd-socket-proxyd's socket.
##
##
##
## Domain allowed access.
##
##
#
interface(`systemd_connectto_socket_proxyd_unix_sockets', `
gen_require(`
type systemd_socket_proxyd_t;
')
allow $1 systemd_socket_proxyd_t:unix_stream_socket connectto;
')