Re: [PATCH] another systemd misc patch

Chris PeBenito <[email protected]>
Newsgroups org.kernel.vger.selinux-refpolicy
Message-ID <[email protected]>
On 2/2/21 10:31 PM, Russell Coker wrote:
> Lots of littls changes related to systemd.
> 
> Signed-off-by: Russell Coker <[email protected]>
> 

> @@ -296,6 +298,24 @@ interface(`systemd_write_logind_runtime_
>   
>   ######################################
>   ## <summary>
> +##     Watch systemd-logind runtime dirs
> +## </summary>
> +## <param name="domain">
> +##     <summary>
> +##     Domain allowed access.
> +##     </summary>
> +## </param>
> +#
> +interface(`systemd_watch_logind_runtime_dir',`

systemd_watch_logind_runtime_dirs (plural)

> +	gen_require(`
> +		type systemd_logind_runtime_t;
> +	')
> +
> +	allow $1 systemd_logind_runtime_t:dir watch;
> +')
> +
> +######################################
> +## <summary>
>   ##   Use inherited systemd
>   ##   logind file descriptors.
>   ## </summary>
> @@ -356,6 +376,24 @@ interface(`systemd_write_inherited_login
>   
>   ######################################
>   ## <summary>
> +##      Watch logind sessions dirs.
> +## </summary>
> +## <param name="domain">
> +##      <summary>
> +##      Domain allowed access.
> +##      </summary>
> +## </param>
> +#
> +interface(`systemd_watch_logind_sessions_dir',`

systemd_watch_logind_sessions_dirs (plural)

> +	gen_require(`
> +		type systemd_sessions_runtime_t;
> +	')
> +
> +	allow $1 systemd_sessions_runtime_t:dir watch;
> +')
> +
> +######################################
> +## <summary>
>   ##      Write inherited logind inhibit pipes.
>   ## </summary>
>   ## <param name="domain">
> @@ -528,6 +566,24 @@ interface(`systemd_connect_machined',`
>   
>   ########################################
>   ## <summary>
> +##	Allow watching /run/systemd/machines
> +## </summary>
> +## <param name="domain">
> +##	<summary>
> +##	Domain that can watch the machines files
> +##	</summary>
> +## </param>
> +#
> +interface(`systemd_watch_machines_dir',`

systemd_watch_machines_dirs (plural)

> +	gen_require(`
> +		type systemd_machined_runtime_t;
> +	')
> +
> +	allow $1 systemd_machined_runtime_t:dir watch;
> +')
> +
> +########################################
> +## <summary>
>   ##   Send and receive messages from
>   ##   systemd hostnamed over dbus.
>   ## </summary>
> @@ -585,7 +641,7 @@ interface(`systemd_run_passwd_agent',`
>   		type systemd_passwd_agent_t, systemd_passwd_agent_exec_t;
>   	')
>   
> -	domtrans_pattern($1, systemd_passwd_agent_exec_t, systemd_passwd_agent_t)
> +	domain_auto_transition_pattern($1, systemd_passwd_agent_exec_t, systemd_passwd_agent_t)

domtrans_pattern() is the standard pattern.  This change has no effect.



> Index: refpolicy-2.20210203/policy/modules/system/systemd.te
> ===================================================================
> --- refpolicy-2.20210203.orig/policy/modules/system/systemd.te
> +++ refpolicy-2.20210203/policy/modules/system/systemd.te
> @@ -129,6 +129,7 @@ type systemd_logind_t;
>   type systemd_logind_exec_t;
>   init_daemon_domain(systemd_logind_t, systemd_logind_exec_t)
>   init_named_socket_activation(systemd_logind_t, systemd_logind_runtime_t)
> +init_stream_connect(systemd_logind_t)
>   
>   type systemd_logind_inhibit_runtime_t alias systemd_logind_inhibit_var_run_t;
>   files_runtime_file(systemd_logind_inhibit_runtime_t)
> @@ -295,6 +296,8 @@ allow systemd_backlight_t systemd_backli
>   init_var_lib_filetrans(systemd_backlight_t, systemd_backlight_var_lib_t, dir)
>   manage_files_pattern(systemd_backlight_t, systemd_backlight_var_lib_t, systemd_backlight_var_lib_t)
>   
> +kernel_read_kernel_sysctls(systemd_backlight_t)
> +
>   systemd_log_parse_environment(systemd_backlight_t)
>   
>   # Allow systemd-backlight to write to /sys/class/backlight/*/brightness
> @@ -358,13 +361,15 @@ ifdef(`enable_mls',`
>   #
>   
>   allow systemd_coredump_t self:unix_dgram_socket { create write connect getopt setopt };
> -allow systemd_coredump_t self:capability { dac_override dac_read_search setgid setuid setpcap sys_ptrace };
> +allow systemd_coredump_t self:unix_stream_socket connectto;
> +allow systemd_coredump_t self:capability { dac_override dac_read_search setgid setuid setpcap net_admin sys_ptrace };

net_admin? That doesn't seem necessary for core dumping.


[...]
> @@ -393,6 +403,32 @@ logging_send_syslog_msg(systemd_coredump
>   
>   seutil_search_default_contexts(systemd_coredump_t)
>   
> +allow systemd_generator_t self:fifo_file rw_file_perms;
> +allow systemd_generator_t self:process setfscreate;
> +
> +allow systemd_generator_t self:capability dac_override;
> +allow systemd_generator_t self:tcp_socket create;
> +allow systemd_generator_t self:netlink_route_socket { create read bind getattr write nlmsg_read };
> +
> +corecmd_exec_bin(systemd_generator_t)
> +corecmd_exec_shell(systemd_generator_t)
> +files_exec_etc_files(systemd_generator_t)
> +fs_getattr_cgroup(systemd_generator_t)
> +fs_getattr_tmpfs(systemd_generator_t)
> +fs_rw_tmpfs_files(systemd_generator_t)
> +miscfiles_read_localization(systemd_generator_t)
> +
> +optional_policy(`
> +	# for /lib/systemd/system-generators/openvpn-generator
> +	openvpn_read_config(systemd_generator_t)
> +')
> +
> +optional_policy(`
> +	# it runs postconf
> +	# maybe /lib/systemd/system-generators/postfix-instance-generator
> +	postfix_read_config(systemd_generator_t)
> +')

The systemd_generator_t rules need to move to proper places.



> @@ -583,6 +642,8 @@ allow systemd_logind_t systemd_sessions_
>   
>   kernel_read_kernel_sysctls(systemd_logind_t)
>   
> +auth_read_shadow(systemd_logind_t)

If this is necessary, it seems Debian specific.

[...]
> @@ -925,14 +1001,26 @@ allow systemd_nspawn_t systemd_nspawn_tm
>   # for /run/systemd/nspawn/incoming in chroot
>   allow systemd_nspawn_t systemd_nspawn_runtime_t:dir mounton;
>   
> +kernel_getattr_core_if(systemd_nspawn_t)
> +kernel_getattr_proc(systemd_nspawn_t)
> +kernel_getattr_unlabeled_dirs(systemd_nspawn_t)
> +
>   kernel_mount_proc(systemd_nspawn_t)
>   kernel_mounton_sysctl_dirs(systemd_nspawn_t)
>   kernel_mounton_kernel_sysctl_files(systemd_nspawn_t)
>   kernel_mounton_message_if(systemd_nspawn_t)
>   kernel_mounton_proc(systemd_nspawn_t)
> +kernel_mounton_sysctl_files(systemd_nspawn_t)
> +kernel_mounton_unlabeled_dirs(systemd_nspawn_t)

With all of the mounting, perhaps we should consider coalescing on allowing it 
to mount an all init_mountpoint_types.

[..]
> @@ -972,6 +1067,7 @@ term_mount_devpts(systemd_nspawn_t)
>   term_search_ptys(systemd_nspawn_t)
>   term_setattr_generic_ptys(systemd_nspawn_t)
>   term_use_ptmx(systemd_nspawn_t)
> +term_use_generic_ptys(systemd_nspawn_t)

Perhaps this should have a pty type?


> @@ -1519,11 +1627,15 @@ seutil_libselinux_linked(systemd_user_se
>   # systemd-user-runtime-dir local policy
>   #
>   
> -allow systemd_user_runtime_dir_t self:capability { fowner chown sys_admin dac_read_search dac_override };
> +allow systemd_user_runtime_dir_t self:capability { chown dac_override dac_read_search dac_override fowner sys_admin mknod };

sys_admin and mknod?  What is sys_admin used for; also,  I don't see any rules 
for creating devices.

>   allow systemd_user_runtime_dir_t self:process setfscreate;
>   
>   domain_obj_id_change_exemption(systemd_user_runtime_dir_t)
>   
> +allow systemd_user_runtime_dir_t systemd_user_runtime_t:dir manage_dir_perms;
> +allow systemd_user_runtime_dir_t systemd_user_runtime_t:sock_file unlink;
> +allow systemd_user_runtime_dir_t systemd_user_runtime_notify_t:sock_file unlink;
> +
>   files_read_etc_files(systemd_user_runtime_dir_t)
>   
>   fs_mount_tmpfs(systemd_user_runtime_dir_t)
> @@ -1543,7 +1655,10 @@ seutil_read_file_contexts(systemd_user_r
>   seutil_libselinux_linked(systemd_user_runtime_dir_t)
>   
>   userdom_delete_user_tmp_dirs(systemd_user_runtime_dir_t)
> +userdom_delete_user_tmp_files(systemd_user_runtime_dir_t)
>   userdom_delete_user_tmp_named_pipes(systemd_user_runtime_dir_t)
> +userdom_delete_user_tmp_named_sockets(systemd_user_runtime_dir_t)
> +userdom_list_user_tmp(systemd_user_runtime_dir_t)
>   userdom_search_user_runtime_root(systemd_user_runtime_dir_t)
>   userdom_user_runtime_root_filetrans_user_runtime(systemd_user_runtime_dir_t, dir)
>   userdom_manage_user_runtime_dirs(systemd_user_runtime_dir_t)
> Index: refpolicy-2.20210203/policy/modules/admin/dpkg.if
> ===================================================================
> --- refpolicy-2.20210203.orig/policy/modules/admin/dpkg.if
> +++ refpolicy-2.20210203/policy/modules/admin/dpkg.if
> @@ -356,3 +356,40 @@ interface(`dpkg_read_script_tmp_symlinks
>   
>   	allow $1 dpkg_script_tmp_t:lnk_file read_lnk_file_perms;
>   ')
> +
> +########################################
> +## <summary>
> +##	send dbus messages to dpkg_t
> +## </summary>
> +## <param name="domain">
> +##	<summary>
> +##	Domain allowed access.
> +##	</summary>
> +## </param>
> +#
> +interface(`dpkg_dbus_chat',`
> +	gen_require(`
> +		type dpkg_t;
> +	')
> +
> +	allow $1 dpkg_t:dbus send_msg;
> +')

I'd prefer that the dbus chat interfaces are provided by the server process' domain.


-- 
Chris PeBenito
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.