diff --git a/policy-F15.patch b/policy-F15.patch index 5b78df21..fd599d39 100644 --- a/policy-F15.patch +++ b/policy-F15.patch @@ -841,10 +841,10 @@ index 0000000..8c2e044 + diff --git a/policy/modules/admin/ncftool.te b/policy/modules/admin/ncftool.te new file mode 100644 -index 0000000..eef0c87 +index 0000000..67296b9 --- /dev/null +++ b/policy/modules/admin/ncftool.te -@@ -0,0 +1,91 @@ +@@ -0,0 +1,89 @@ +policy_module(ncftool, 1.0.0) + +######################################## @@ -859,8 +859,6 @@ index 0000000..eef0c87 +domain_system_change_exemption(ncftool_t) +role system_r types ncftool_t; + -+permissive ncftool_t; -+ +######################################## +# +# ncftool local policy @@ -1184,15 +1182,16 @@ index af55369..bc4ae6d 100644 + ') +') diff --git a/policy/modules/admin/readahead.fc b/policy/modules/admin/readahead.fc -index 7077413..70edcd6 100644 +index 7077413..56d1ecb 100644 --- a/policy/modules/admin/readahead.fc +++ b/policy/modules/admin/readahead.fc -@@ -1,3 +1,5 @@ +@@ -1,3 +1,6 @@ /usr/sbin/readahead.* -- gen_context(system_u:object_r:readahead_exec_t,s0) /sbin/readahead.* -- gen_context(system_u:object_r:readahead_exec_t,s0) /var/lib/readahead(/.*)? gen_context(system_u:object_r:readahead_var_lib_t,s0) +/lib/systemd/systemd-readahead.* -- gen_context(system_u:object_r:readahead_exec_t,s0) + ++/dev/\.systemd/readahead(/.*)? gen_context(system_u:object_r:readahead_var_run_t,s0) diff --git a/policy/modules/admin/readahead.if b/policy/modules/admin/readahead.if index 47c4723..4866a08 100644 --- a/policy/modules/admin/readahead.if @@ -1219,10 +1218,26 @@ index 47c4723..4866a08 100644 + domtrans_pattern($1, readahead_exec_t, readahead_t) +') diff --git a/policy/modules/admin/readahead.te b/policy/modules/admin/readahead.te -index b4ac57e..8fa8451 100644 +index b4ac57e..39fbe42 100644 --- a/policy/modules/admin/readahead.te +++ b/policy/modules/admin/readahead.te -@@ -53,6 +53,7 @@ domain_read_all_domains_state(readahead_t) +@@ -16,6 +16,7 @@ typealias readahead_var_lib_t alias readahead_etc_rw_t; + + type readahead_var_run_t; + files_pid_file(readahead_var_run_t) ++dev_associate(readahead_var_run_t) + + ######################################## + # +@@ -32,6 +33,7 @@ files_search_var_lib(readahead_t) + + manage_files_pattern(readahead_t, readahead_var_run_t, readahead_var_run_t) + files_pid_filetrans(readahead_t, readahead_var_run_t, file) ++dev_filetrans(readahead_t, readahead_var_run_t, { dir file }) + + kernel_read_all_sysctls(readahead_t) + kernel_read_system_state(readahead_t) +@@ -53,6 +55,7 @@ domain_read_all_domains_state(readahead_t) files_list_non_security(readahead_t) files_read_non_security_files(readahead_t) @@ -1230,7 +1245,7 @@ index b4ac57e..8fa8451 100644 files_create_boot_flag(readahead_t) files_getattr_all_pipes(readahead_t) files_dontaudit_getattr_all_sockets(readahead_t) -@@ -66,6 +67,7 @@ fs_read_cgroup_files(readahead_t) +@@ -66,6 +69,7 @@ fs_read_cgroup_files(readahead_t) fs_read_tmpfs_files(readahead_t) fs_read_tmpfs_symlinks(readahead_t) fs_list_inotifyfs(readahead_t) @@ -1558,6 +1573,18 @@ index 47a8f7d..31f474e 100644 optional_policy(` java_domtrans_unconfined(rpm_script_t) +diff --git a/policy/modules/admin/sectoolm.te b/policy/modules/admin/sectoolm.te +index c8ef84b..e241334 100644 +--- a/policy/modules/admin/sectoolm.te ++++ b/policy/modules/admin/sectoolm.te +@@ -84,6 +84,7 @@ logging_send_syslog_msg(sectoolm_t) + sysnet_domtrans_ifconfig(sectoolm_t) + + userdom_manage_user_tmp_sockets(sectoolm_t) ++userdom_dgram_send(sectoolm_t) + + optional_policy(` + mount_exec(sectoolm_t) diff --git a/policy/modules/admin/shorewall.fc b/policy/modules/admin/shorewall.fc index 029cb7e..48d1363 100644 --- a/policy/modules/admin/shorewall.fc @@ -2710,15 +2737,16 @@ index 0000000..0bbd523 +') + diff --git a/policy/modules/apps/gnome.fc b/policy/modules/apps/gnome.fc -index 00a19e3..46db5ff 100644 +index 00a19e3..1aaa958 100644 --- a/policy/modules/apps/gnome.fc +++ b/policy/modules/apps/gnome.fc -@@ -1,9 +1,30 @@ +@@ -1,9 +1,33 @@ -HOME_DIR/\.config/gtk-.* gen_context(system_u:object_r:gnome_home_t,s0) +HOME_DIR/\.cache(/.*)? gen_context(system_u:object_r:cache_home_t,s0) +HOME_DIR/\.config(/.*)? gen_context(system_u:object_r:config_home_t,s0) HOME_DIR/\.gconf(d)?(/.*)? gen_context(system_u:object_r:gconf_home_t,s0) HOME_DIR/\.gnome2(/.*)? gen_context(system_u:object_r:gnome_home_t,s0) ++HOME_DIR/\.gnome2/keyrings(/.*)? gen_context(system_u:object_r:gkeyringd_gnome_home_t,s0) +HOME_DIR/\.gstreamer-.* gen_context(system_u:object_r:gstreamer_home_t,s0) +HOME_DIR/\.local.* gen_context(system_u:object_r:gconf_home_t,s0) +HOME_DIR/\.local/share(.*)? gen_context(system_u:object_r:data_home_t,s0) @@ -2739,6 +2767,8 @@ index 00a19e3..46db5ff 100644 /tmp/gconfd-USER/.* -- gen_context(system_u:object_r:gconf_tmp_t,s0) -/usr/libexec/gconfd-2 -- gen_context(system_u:object_r:gconfd_exec_t,s0) ++#/usr/bin/gnome-keyring-daemon -- gen_context(system_u:object_r:gkeyringd_exec_t,s0) ++ +# Don't use because toolchain is broken +#/usr/libexec/gconfd-2 -- gen_context(system_u:object_r:gconfd_exec_t,s0) + @@ -2747,10 +2777,73 @@ index 00a19e3..46db5ff 100644 +/usr/libexec/gnome-system-monitor-mechanism -- gen_context(system_u:object_r:gnomesystemmm_exec_t,s0) + diff --git a/policy/modules/apps/gnome.if b/policy/modules/apps/gnome.if -index f5afe78..c4df4b9 100644 +index f5afe78..60258d1 100644 --- a/policy/modules/apps/gnome.if +++ b/policy/modules/apps/gnome.if -@@ -37,8 +37,7 @@ interface(`gnome_role',` +@@ -1,24 +1,29 @@ + ## GNU network object model environment (GNOME) + +-############################################################ ++####################################### + ## +-## Role access for gnome ++## The role template for the gnome module. + ## +-## ++## + ## +-## Role allowed access ++## The user role. + ## + ## +-## ++## + ## +-## User domain for the role ++## The user domain associated with the role. + ## + ## + # + interface(`gnome_role',` + gen_require(` ++ type gkeyringd_t; ++ attribute gkeyringd_domain; ++ attribute gnome_domain; + type gconfd_t, gconfd_exec_t; + type gconf_tmp_t; ++ type gnome_home_t; ++ type gkeyringd_exec_t, gkeyringd_tmp_t, gkeyringd_gnome_home_t; + ') + + role $1 types gconfd_t; +@@ -33,12 +38,34 @@ interface(`gnome_role',` + #gnome_stream_connect_gconf_template($1, $2) + read_files_pattern($2, gconf_tmp_t, gconf_tmp_t) + allow $2 gconfd_t:unix_stream_socket connectto; ++ ++ ####################################### ++ # ++ # keyringd policy ++ # ++ role $1 types gkeyringd_t; ++ ++ domtrans_pattern($2, gkeyringd_exec_t, gkeyringd_t) ++ ++ allow $2 gkeyringd_gnome_home_t:dir { relabel_dir_perms manage_dir_perms }; ++ allow $2 gkeyringd_gnome_home_t:file { relabel_file_perms manage_file_perms }; ++ ++ allow $2 gkeyringd_tmp_t:dir { relabel_dir_perms manage_dir_perms }; ++ allow $2 gkeyringd_tmp_t:sock_file { relabel_sock_file_perms manage_sock_file_perms }; ++ ++ ps_process_pattern(gkeyringd_t, $2) ++ ++ ps_process_pattern($2, gkeyringd_t) ++ allow $2 gkeyringd_t:process { ptrace signal_perms }; ++ ++ # Looks like it wants to run gkeyringd in $2 domain using setexeccon or runcon. ++ dontaudit $2 gkeyringd_exec_t:file entrypoint; ++ + ') ######################################## ## @@ -2760,7 +2853,7 @@ index f5afe78..c4df4b9 100644 ## ## ## -@@ -46,25 +45,304 @@ interface(`gnome_role',` +@@ -46,25 +73,353 @@ interface(`gnome_role',` ## ## # @@ -2779,9 +2872,58 @@ index f5afe78..c4df4b9 100644 ######################################## ## -## Read gconf config files. -+## Run gconfd in gconfd domain. ++## Connect to gkeyringd with a unix stream socket. ## -## ++## ++## ++## Role prefix. ++## ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_stream_connect_gkeyringd',` ++ gen_require(` ++ type gkeyringd_t, gkeyringd_tmp_t; ++ ') ++ ++ stream_connect_pattern($2, gkeyringd_tmp_t, gkeyringd_tmp_t, gkeyringd_t) ++ gnome_search_gconf_tmp_dirs($2) ++') ++ ++######################################## ++## ++## Connect to gkeyringd with a unix stream socket. ++## ++## ++## ++## Role prefix. ++## ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_stream_connect_all_gkeyringd',` ++ gen_require(` ++ attribute gkeyringd_domain; ++ type gkeyringd_tmp_t; ++ ') ++ ++ stream_connect_pattern($1, gkeyringd_tmp_t, gkeyringd_tmp_t, gkeyringd_domain) ++ gnome_search_gconf_tmp_dirs($1) ++') ++ ++######################################## ++## ++## Run gconfd in gconfd domain. ++## +## +## +## Domain allowed access. @@ -2847,10 +2989,10 @@ index f5afe78..c4df4b9 100644 +# +interface(`gnome_signal_all',` + gen_require(` -+ attribute gnomedomain; ++ attribute gnome_domain; + ') + -+ allow $1 gnomedomain:process signal; ++ allow $1 gnome_domain:process signal; +') + +######################################## @@ -3071,7 +3213,7 @@ index f5afe78..c4df4b9 100644 gen_require(` type gconf_etc_t; ') -@@ -76,7 +354,27 @@ template(`gnome_read_gconf_config',` +@@ -76,7 +431,27 @@ template(`gnome_read_gconf_config',` ####################################### ## @@ -3100,7 +3242,7 @@ index f5afe78..c4df4b9 100644 ## ## ## -@@ -84,37 +382,40 @@ template(`gnome_read_gconf_config',` +@@ -84,37 +459,36 @@ template(`gnome_read_gconf_config',` ## ## # @@ -3119,7 +3261,7 @@ index f5afe78..c4df4b9 100644 ######################################## ## -## gconf connection template. -+## Read gconf home files ++## Execute gnome keyringd in the caller domain. ## -## +## @@ -3129,52 +3271,90 @@ index f5afe78..c4df4b9 100644 ## # -interface(`gnome_stream_connect_gconf',` -+interface(`gnome_read_gconf_home_files',` ++interface(`gnome_exec_keyringd',` gen_require(` - type gconfd_t, gconf_tmp_t; -+ type gconf_home_t; -+ type data_home_t; ++ type gkeyringd_exec_t; ') - read_files_pattern($1, gconf_tmp_t, gconf_tmp_t) - allow $1 gconfd_t:unix_stream_socket connectto; -+ userdom_search_user_home_dirs($1) -+ allow $1 gconf_home_t:dir list_dir_perms; -+ allow $1 data_home_t:dir list_dir_perms; -+ read_files_pattern($1, gconf_home_t, gconf_home_t) -+ read_files_pattern($1, data_home_t, data_home_t) ++ can_exec($1, gkeyringd_exec_t) ++ corecmd_search_bin($1) ') ######################################## ## -## Run gconfd in gconfd domain. -+## search gconf homedir (.local) ++## Read gconf home files ## ## ## -@@ -122,12 +423,13 @@ interface(`gnome_stream_connect_gconf',` +@@ -122,12 +496,55 @@ interface(`gnome_stream_connect_gconf',` ## ## # -interface(`gnome_domtrans_gconfd',` -+interface(`gnome_search_gconf',` ++interface(`gnome_read_gconf_home_files',` gen_require(` - type gconfd_t, gconfd_exec_t; + type gconf_home_t; ++ type data_home_t; ') - domtrans_pattern($1, gconfd_exec_t, gconfd_t) ++ userdom_search_user_home_dirs($1) ++ allow $1 gconf_home_t:dir list_dir_perms; ++ allow $1 data_home_t:dir list_dir_perms; ++ read_files_pattern($1, gconf_home_t, gconf_home_t) ++ read_files_pattern($1, data_home_t, data_home_t) ++') ++ ++######################################## ++## ++## Search gkeyringd temporary directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_search_gkeyringd_tmp_dirs',` ++ gen_require(` ++ type gkeyringd_tmp_t; ++ ') ++ ++ files_search_tmp($1) ++ allow $1 gkeyringd_tmp_t:dir search_dir_perms; ++') ++ ++######################################## ++## ++## search gconf homedir (.local) ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_search_gconf',` ++ gen_require(` ++ type gconf_home_t; ++ ') ++ + allow $1 gconf_home_t:dir search_dir_perms; + userdom_search_user_home_dirs($1) ') ######################################## -@@ -151,40 +453,174 @@ interface(`gnome_setattr_config_dirs',` +@@ -151,40 +568,257 @@ interface(`gnome_setattr_config_dirs',` ######################################## ## -## Read gnome homedir content (.config) -+## Append gconf home files ++## Manage generic gnome home files. ## -## +## @@ -3184,21 +3364,61 @@ index f5afe78..c4df4b9 100644 ## # -template(`gnome_read_config',` -+interface(`gnome_append_gconf_home_files',` ++interface(`gnome_manage_generic_home_files',` gen_require(` -- type gnome_home_t; -+ type gconf_home_t; + type gnome_home_t; ') - list_dirs_pattern($1, gnome_home_t, gnome_home_t) - read_files_pattern($1, gnome_home_t, gnome_home_t) - read_lnk_files_pattern($1, gnome_home_t, gnome_home_t) -+ append_files_pattern($1, gconf_home_t, gconf_home_t) ++ userdom_search_user_home_dirs($1) ++ manage_files_pattern($1, gnome_home_t, gnome_home_t) ') ######################################## ## -## manage gnome homedir content (.config) ++## Manage generic gnome home directories. + ## +-## ++## + ## + ## Domain allowed access. + ## + ## + # +-interface(`gnome_manage_config',` ++interface(`gnome_manage_generic_home_dirs',` + gen_require(` + type gnome_home_t; + ') + ++ userdom_search_user_home_dirs($1) + allow $1 gnome_home_t:dir manage_dir_perms; +- allow $1 gnome_home_t:file manage_file_perms; ++') ++ ++######################################## ++## ++## Append gconf home files ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_append_gconf_home_files',` ++ gen_require(` ++ type gconf_home_t; ++ ') ++ ++ append_files_pattern($1, gconf_home_t, gconf_home_t) ++') ++ ++######################################## ++## +## manage gconf home files +## +## @@ -3219,14 +3439,14 @@ index f5afe78..c4df4b9 100644 +######################################## +## +## Connect to gnome over an unix stream socket. - ## ++## +## +## +## Domain allowed access. +## +## - ## - ## ++## ++## +## The type of the user domain. +## +## @@ -3246,19 +3466,15 @@ index f5afe78..c4df4b9 100644 +## +## +## - ## Domain allowed access. - ## - ## - # --interface(`gnome_manage_config',` ++## Domain allowed access. ++## ++## ++# +interface(`gnome_list_home_config',` - gen_require(` -- type gnome_home_t; ++ gen_require(` + type config_home_t; - ') - -- allow $1 gnome_home_t:dir manage_dir_perms; -- allow $1 gnome_home_t:file manage_file_perms; ++ ') ++ + allow $1 config_home_t:dir list_dir_perms; +') + @@ -3278,8 +3494,8 @@ index f5afe78..c4df4b9 100644 + ') + + setattr_dirs_pattern($1, config_home_t, config_home_t) - userdom_search_user_home_dirs($1) - ') ++ userdom_search_user_home_dirs($1) ++') + +######################################## +## @@ -3356,14 +3572,61 @@ index f5afe78..c4df4b9 100644 + allow $1 gconfdefaultsm_t:dbus send_msg; + allow gconfdefaultsm_t $1:dbus send_msg; +') ++ ++######################################## ++## ++## Send and receive messages from ++## gkeyringd over dbus. ++## ++## ++## ++## Role prefix. ++## ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_dbus_chat_gkeyringd',` ++ gen_require(` ++ type gkeyringd_t; ++ class dbus send_msg; ++ ') ++ ++ allow $2 gkeyringd_t:dbus send_msg; ++ allow gkeyringd_t $2:dbus send_msg; ++') ++######################################## ++## ++## Create directories in user home directories ++## with the gnome home file type. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_home_dir_filetrans',` ++ gen_require(` ++ type gnome_home_t; ++ ') ++ ++ userdom_user_home_dir_filetrans($1, gnome_home_t, dir) + userdom_search_user_home_dirs($1) + ') diff --git a/policy/modules/apps/gnome.te b/policy/modules/apps/gnome.te -index 2505654..c1f491f 100644 +index 2505654..8e83829 100644 --- a/policy/modules/apps/gnome.te +++ b/policy/modules/apps/gnome.te -@@ -6,11 +6,24 @@ policy_module(gnome, 2.1.0) +@@ -5,12 +5,25 @@ policy_module(gnome, 2.1.0) + # Declarations # - attribute gnomedomain; +-attribute gnomedomain; ++attribute gnome_domain; +attribute gnome_home_type; type gconf_etc_t; @@ -3386,7 +3649,15 @@ index 2505654..c1f491f 100644 typealias gconf_home_t alias { user_gconf_home_t staff_gconf_home_t sysadm_gconf_home_t }; typealias gconf_home_t alias { auditadm_gconf_home_t secadm_gconf_home_t }; typealias gconf_home_t alias unconfined_gconf_home_t; -@@ -30,12 +43,20 @@ typealias gconfd_t alias { auditadm_gconfd_t secadm_gconfd_t }; +@@ -23,19 +36,40 @@ typealias gconf_tmp_t alias unconfined_gconf_tmp_t; + files_tmp_file(gconf_tmp_t) + ubac_constrained(gconf_tmp_t) + +-type gconfd_t, gnomedomain; ++type gconfd_t, gnome_domain; + type gconfd_exec_t; + typealias gconfd_t alias { user_gconfd_t staff_gconfd_t sysadm_gconfd_t }; + typealias gconfd_t alias { auditadm_gconfd_t secadm_gconfd_t }; application_domain(gconfd_t, gconfd_exec_t) ubac_constrained(gconfd_t) @@ -3397,6 +3668,19 @@ index 2505654..c1f491f 100644 typealias gnome_home_t alias unconfined_gnome_home_t; userdom_user_home_content(gnome_home_t) ++attribute gkeyringd_domain; ++type gkeyringd_t, gnome_domain, gkeyringd_domain; ++type gkeyringd_exec_t; ++application_domain(gkeyringd_t, gkeyringd_exec_t) ++ubac_constrained(gkeyringd_t) ++permissive gkeyringd_t; ++ ++type gkeyringd_gnome_home_t; ++userdom_user_home_content(gkeyringd_gnome_home_t) ++ ++type gkeyringd_tmp_t; ++userdom_user_tmp_content(gkeyringd_tmp_t) ++ +type gconfdefaultsm_t; +type gconfdefaultsm_exec_t; +dbus_system_domain(gconfdefaultsm_t, gconfdefaultsm_exec_t) @@ -3408,21 +3692,11 @@ index 2505654..c1f491f 100644 ############################## # # Local Policy -@@ -75,3 +96,91 @@ optional_policy(` +@@ -75,3 +109,148 @@ optional_policy(` xserver_use_xdm_fds(gconfd_t) xserver_rw_xdm_pipes(gconfd_t) ') + -+tunable_policy(`use_nfs_home_dirs',` -+ fs_manage_nfs_dirs(gconfdefaultsm_t) -+ fs_manage_nfs_files(gconfdefaultsm_t) -+') -+ -+tunable_policy(`use_samba_home_dirs',` -+ fs_manage_cifs_dirs(gconfdefaultsm_t) -+ fs_manage_cifs_files(gconfdefaultsm_t) -+') -+ +####################################### +# +# gconf-defaults-mechanisms local policy @@ -3462,6 +3736,16 @@ index 2505654..c1f491f 100644 + policykit_read_reload(gconfdefaultsm_t) +') + ++tunable_policy(`use_nfs_home_dirs',` ++ fs_manage_nfs_dirs(gconfdefaultsm_t) ++ fs_manage_nfs_files(gconfdefaultsm_t) ++') ++ ++tunable_policy(`use_samba_home_dirs',` ++ fs_manage_cifs_dirs(gconfdefaultsm_t) ++ fs_manage_cifs_files(gconfdefaultsm_t) ++') ++ +####################################### +# +# gnome-system-monitor-mechanisms local policy @@ -3500,6 +3784,63 @@ index 2505654..c1f491f 100644 + policykit_read_lib(gnomesystemmm_t) + policykit_read_reload(gnomesystemmm_t) +') ++ ++allow gkeyringd_t self:capability ipc_lock; ++allow gkeyringd_t self:process { getcap getsched signal }; ++allow gkeyringd_t self:fifo_file rw_fifo_file_perms; ++allow gkeyringd_t self:unix_stream_socket { connectto accept listen }; ++ ++userdom_user_home_dir_filetrans(gkeyringd_t, gnome_home_t, dir) ++ ++manage_dirs_pattern(gkeyringd_t, gkeyringd_gnome_home_t, gkeyringd_gnome_home_t) ++manage_files_pattern(gkeyringd_t, gkeyringd_gnome_home_t, gkeyringd_gnome_home_t) ++filetrans_pattern(gkeyringd_t, gnome_home_t, gkeyringd_gnome_home_t, dir) ++ ++manage_dirs_pattern(gkeyringd_t, gkeyringd_tmp_t, gkeyringd_tmp_t) ++manage_sock_files_pattern(gkeyringd_t, gkeyringd_tmp_t, gkeyringd_tmp_t) ++files_tmp_filetrans(gkeyringd_t, gkeyringd_tmp_t, dir) ++ ++kernel_read_crypto_sysctls(gkeyringd_t) ++ ++corecmd_search_bin(gkeyringd_t) ++ ++dev_read_rand(gkeyringd_t) ++dev_read_urand(gkeyringd_t) ++ ++files_read_etc_files(gkeyringd_t) ++files_read_usr_files(gkeyringd_t) ++# for nscd? ++files_search_pids(gkeyringd_t) ++ ++fs_getattr_xattr_fs(gkeyringd_t) ++ ++selinux_getattr_fs(gkeyringd_t) ++ ++logging_send_syslog_msg(gkeyringd_t) ++ ++miscfiles_read_localization(gkeyringd_t) ++ ++xserver_append_xdm_home_files(gkeyringd_t) ++xserver_read_xdm_home_files(gkeyringd_t) ++xserver_use_xdm_fds(gkeyringd_t) ++ ++optional_policy(` ++ dbus_session_domain(gkeyringd_t, gkeyringd_exec_t) ++ ++ dbus_session_bus_client(gkeyringd_t) ++ gnome_home_dir_filetrans(gkeyringd_t) ++ gnome_manage_generic_home_dirs(gkeyringd_t) ++ ++ optional_policy(` ++ telepathy_mission_control_read_state(gkeyringd_t) ++ ') ++') ++ ++optional_policy(` ++ ssh_read_user_home_files(gkeyringd_t) ++') ++ ++userdom_use_user_terminals(gnome_domain) diff --git a/policy/modules/apps/gpg.fc b/policy/modules/apps/gpg.fc index e9853d4..717d163 100644 --- a/policy/modules/apps/gpg.fc @@ -4160,10 +4501,10 @@ index 0000000..1c1d012 +') diff --git a/policy/modules/apps/mediawiki.te b/policy/modules/apps/mediawiki.te new file mode 100644 -index 0000000..b7f569d +index 0000000..d9e51a3 --- /dev/null +++ b/policy/modules/apps/mediawiki.te -@@ -0,0 +1,35 @@ +@@ -0,0 +1,33 @@ + +policy_module(mediawiki, 1.0.0) + @@ -4177,8 +4518,6 @@ index 0000000..b7f569d +type httpd_mediawiki_tmp_t; +files_tmp_file(httpd_mediawiki_tmp_t) + -+permissive httpd_mediawiki_script_t; -+ +######################################## +# +# mediawiki local policy @@ -6147,23 +6486,21 @@ index 7cdac1e..6f9f6e6 100644 + domtrans_pattern($1, rssh_chroot_helper_exec_t, rssh_chroot_helper_t) +') diff --git a/policy/modules/apps/rssh.te b/policy/modules/apps/rssh.te -index c605046..15c17a0 100644 +index c605046..97b3df2 100644 --- a/policy/modules/apps/rssh.te +++ b/policy/modules/apps/rssh.te -@@ -31,6 +31,12 @@ typealias rssh_rw_t alias { user_rssh_rw_t staff_rssh_rw_t sysadm_rssh_rw_t }; +@@ -31,6 +31,10 @@ typealias rssh_rw_t alias { user_rssh_rw_t staff_rssh_rw_t sysadm_rssh_rw_t }; typealias rssh_rw_t alias { auditadm_rssh_rw_t secadm_rssh_rw_t }; userdom_user_home_content(rssh_rw_t) +type rssh_chroot_helper_t; +type rssh_chroot_helper_exec_t; +init_system_domain(rssh_chroot_helper_t, rssh_chroot_helper_exec_t) -+ -+permissive rssh_chroot_helper_t; + ############################## # # Local policy -@@ -78,3 +84,25 @@ ssh_rw_stream_sockets(rssh_t) +@@ -78,3 +82,25 @@ ssh_rw_stream_sockets(rssh_t) optional_policy(` nis_use_ypbind(rssh_t) ') @@ -7043,7 +7380,7 @@ index 1f2cde4..7bb3047 100644 # # /usr diff --git a/policy/modules/apps/screen.if b/policy/modules/apps/screen.if -index 320df26..3312145 100644 +index 320df26..174ca5e 100644 --- a/policy/modules/apps/screen.if +++ b/policy/modules/apps/screen.if @@ -64,6 +64,9 @@ template(`screen_role_template',` @@ -7073,6 +7410,14 @@ index 320df26..3312145 100644 manage_fifo_files_pattern($3, screen_var_run_t, screen_var_run_t) kernel_read_system_state($1_screen_t) +@@ -112,6 +114,7 @@ template(`screen_role_template',` + # for SSP + dev_read_urand($1_screen_t) + ++ domain_sigchld_interactive_fds($1_screen_t) + domain_use_interactive_fds($1_screen_t) + + files_search_tmp($1_screen_t) diff --git a/policy/modules/apps/seunshare.if b/policy/modules/apps/seunshare.if index 1dc7a85..7455c19 100644 --- a/policy/modules/apps/seunshare.if @@ -7229,10 +7574,10 @@ index 0000000..7866118 +/usr/libexec/telepathy-sunshine -- gen_context(system_u:object_r:telepathy_sunshine_exec_t, s0) diff --git a/policy/modules/apps/telepathy.if b/policy/modules/apps/telepathy.if new file mode 100644 -index 0000000..46368cc +index 0000000..6878d68 --- /dev/null +++ b/policy/modules/apps/telepathy.if -@@ -0,0 +1,168 @@ +@@ -0,0 +1,193 @@ + +## Telepathy framework. + @@ -7401,6 +7746,31 @@ index 0000000..46368cc + stream_connect_pattern($1, telepathy_salut_tmp_t, telepathy_salut_tmp_t, telepathy_salut_t) + files_search_tmp($1) +') ++ ++######################################## ++## ++## Read telepathy mission control state. ++## ++## ++## ++## Prefix to be used. ++## ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`telepathy_mission_control_read_state',` ++ gen_require(` ++ type telepathy_mission_control_t; ++ ') ++ ++ kernel_search_proc($1) ++ ps_process_pattern($1, telepathy_mission_control_t) ++') ++ diff --git a/policy/modules/apps/telepathy.te b/policy/modules/apps/telepathy.te new file mode 100644 index 0000000..d4e5e9e @@ -8128,7 +8498,7 @@ index 82842a0..4111a1d 100644 dbus_system_bus_client($1_wm_t) dbus_session_bus_client($1_wm_t) diff --git a/policy/modules/kernel/corecommands.fc b/policy/modules/kernel/corecommands.fc -index 34c9d01..aecd1ff 100644 +index 34c9d01..b25eac7 100644 --- a/policy/modules/kernel/corecommands.fc +++ b/policy/modules/kernel/corecommands.fc @@ -72,7 +72,9 @@ ifdef(`distro_redhat',` @@ -8137,7 +8507,7 @@ index 34c9d01..aecd1ff 100644 /etc/mail/make -- gen_context(system_u:object_r:bin_t,s0) -/etc/mgetty\+sendfax/new_fax -- gen_context(system_u:object_r:bin_t,s0) +/etc/mcelog/cache-error-trigger -- gen_context(system_u:object_r:bin_t,s0) -+/etc/mcelog/triggers(/.*)? gen_context(system_u:object_r:bin_t,s0) ++/etc/mcelog/triggers(/.*)? gen_context(system_u:object_r:bin_t,s0) +etc/mgetty\+sendfax/new_fax -- gen_context(system_u:object_r:bin_t,s0) /etc/netplug\.d(/.*)? gen_context(system_u:object_r:bin_t,s0) @@ -11775,7 +12145,7 @@ index be4de58..cce681a 100644 ######################################## # diff --git a/policy/modules/roles/staff.te b/policy/modules/roles/staff.te -index 2be17d2..5728fc1 100644 +index 2be17d2..dd62b91 100644 --- a/policy/modules/roles/staff.te +++ b/policy/modules/roles/staff.te @@ -8,12 +8,48 @@ policy_module(staff, 2.2.0) @@ -11827,7 +12197,7 @@ index 2be17d2..5728fc1 100644 optional_policy(` apache_role(staff_r, staff_t) ') -@@ -27,25 +63,112 @@ optional_policy(` +@@ -27,25 +63,116 @@ optional_policy(` ') optional_policy(` @@ -11844,6 +12214,10 @@ index 2be17d2..5728fc1 100644 +') + +optional_policy(` ++ gnome_role(staff_r, staff_t) ++') ++ ++optional_policy(` + lpd_list_spool(staff_t) +') + @@ -11942,6 +12316,17 @@ index 2be17d2..5728fc1 100644 optional_policy(` vlock_run(staff_t, staff_r) +@@ -89,10 +216,6 @@ ifndef(`distro_redhat',` + ') + + optional_policy(` +- gnome_role(staff_r, staff_t) +- ') +- +- optional_policy(` + gpg_role(staff_r, staff_t) + ') + @@ -137,10 +260,6 @@ ifndef(`distro_redhat',` ') @@ -13479,10 +13864,10 @@ index 0000000..ec21f9a + +gen_user(unconfined_u, user, unconfined_r system_r, s0, s0 - mls_systemhigh, mcs_allcats) diff --git a/policy/modules/roles/unprivuser.te b/policy/modules/roles/unprivuser.te -index e5bfdd4..f8785a0 100644 +index e5bfdd4..60cc0d5 100644 --- a/policy/modules/roles/unprivuser.te +++ b/policy/modules/roles/unprivuser.te -@@ -12,15 +12,51 @@ role user_r; +@@ -12,15 +12,55 @@ role user_r; userdom_unpriv_user_template(user) @@ -13493,6 +13878,10 @@ index e5bfdd4..f8785a0 100644 ') optional_policy(` ++ gnome_role(user_r, user_t) ++') ++ ++optional_policy(` + oident_manage_user_content(user_t) + oident_relabel_user_content(user_t) +') @@ -13534,6 +13923,17 @@ index e5bfdd4..f8785a0 100644 vlock_run(user_t, user_r) ') +@@ -62,10 +102,6 @@ ifndef(`distro_redhat',` + ') + + optional_policy(` +- gnome_role(user_r, user_t) +- ') +- +- optional_policy(` + gpg_role(user_r, user_t) + ') + @@ -118,7 +154,7 @@ ifndef(`distro_redhat',` ') @@ -13561,7 +13961,7 @@ index 0ecc786..dbf2710 100644 userdom_dontaudit_search_user_home_dirs(webadm_t) diff --git a/policy/modules/roles/xguest.te b/policy/modules/roles/xguest.te -index e88b95f..8929065 100644 +index e88b95f..06b0e48 100644 --- a/policy/modules/roles/xguest.te +++ b/policy/modules/roles/xguest.te @@ -14,14 +14,14 @@ gen_tunable(xguest_mount_media, true) @@ -13630,7 +14030,7 @@ index e88b95f..8929065 100644 ') ') -@@ -76,23 +84,95 @@ optional_policy(` +@@ -76,23 +84,99 @@ optional_policy(` ') optional_policy(` @@ -13648,11 +14048,14 @@ index e88b95f..8929065 100644 +') + +optional_policy(` ++ gnome_role(xguest_r, xguest_t) ++') ++ ++optional_policy(` + gnomeclock_dontaudit_dbus_chat(xguest_t) - ') - - optional_policy(` -- mozilla_role(xguest_r, xguest_t) ++') ++ ++optional_policy(` + java_role_template(xguest, xguest_r, xguest_t) +') + @@ -13666,9 +14069,10 @@ index e88b95f..8929065 100644 + +optional_policy(` + nsplugin_role(xguest_r, xguest_t) -+') -+ -+optional_policy(` + ') + + optional_policy(` +- mozilla_role(xguest_r, xguest_t) + pcscd_read_pub_files(xguest_usertype) + pcscd_stream_connect(xguest_usertype) ') @@ -13713,7 +14117,7 @@ index e88b95f..8929065 100644 + corenet_tcp_connect_speech_port(xguest_usertype) + corenet_tcp_sendrecv_transproxy_port(xguest_usertype) + corenet_tcp_connect_transproxy_port(xguest_usertype) -+ ') + ') + + optional_policy(` + telepathy_dbus_session_role(xguest_r, xguest_t) @@ -13723,7 +14127,7 @@ index e88b95f..8929065 100644 +optional_policy(` + gen_require(` + type mozilla_t; - ') ++ ') + + allow xguest_t mozilla_t:process transition; + role xguest_r types mozilla_t; @@ -14461,10 +14865,10 @@ index 0000000..8e6e2c3 +') diff --git a/policy/modules/services/ajaxterm.te b/policy/modules/services/ajaxterm.te new file mode 100644 -index 0000000..cf6af13 +index 0000000..cee49e3 --- /dev/null +++ b/policy/modules/services/ajaxterm.te -@@ -0,0 +1,56 @@ +@@ -0,0 +1,54 @@ +policy_module(ajaxterm, 1.0.0) + +######################################## @@ -14485,8 +14889,6 @@ index 0000000..cf6af13 +type ajaxterm_devpts_t; +term_login_pty(ajaxterm_devpts_t) + -+permissive ajaxterm_t; -+ +######################################## +# +# ajaxterm local policy @@ -16868,10 +17270,10 @@ index 0000000..fa9b95a +') diff --git a/policy/modules/services/boinc.te b/policy/modules/services/boinc.te new file mode 100644 -index 0000000..6d8fdeb +index 0000000..11ad49a --- /dev/null +++ b/policy/modules/services/boinc.te -@@ -0,0 +1,173 @@ +@@ -0,0 +1,171 @@ +policy_module(boinc, 1.0.0) + +######################################## @@ -16899,8 +17301,6 @@ index 0000000..6d8fdeb +domain_type(boinc_project_t) +role system_r types boinc_project_t; + -+permissive boinc_project_t; -+ +type boinc_project_tmp_t; +files_tmp_file(boinc_project_tmp_t) + @@ -17985,6 +18385,18 @@ index fa82327..db20d26 100644 optional_policy(` gpsd_rw_shm(chronyd_t) ') +diff --git a/policy/modules/services/clamav.fc b/policy/modules/services/clamav.fc +index e8e9a21..0af0260 100644 +--- a/policy/modules/services/clamav.fc ++++ b/policy/modules/services/clamav.fc +@@ -10,6 +10,7 @@ + + /var/clamav(/.*)? gen_context(system_u:object_r:clamd_var_lib_t,s0) + /var/lib/clamav(/.*)? gen_context(system_u:object_r:clamd_var_lib_t,s0) ++/var/lib/clamd.* gen_context(system_u:object_r:clamd_var_lib_t,s0) + /var/log/clamav.* gen_context(system_u:object_r:clamd_var_log_t,s0) + /var/log/clamav/freshclam.* -- gen_context(system_u:object_r:freshclam_var_log_t,s0) + /var/log/clamd.* gen_context(system_u:object_r:clamd_var_log_t,s0) diff --git a/policy/modules/services/clamav.if b/policy/modules/services/clamav.if index 1f11572..7f6a7ab 100644 --- a/policy/modules/services/clamav.if @@ -18426,7 +18838,7 @@ index 1cf6c4e..e4bac67 100644 -/var/lib/cobbler(/.*)? gen_context(system_u:object_r:cobbler_var_lib_t, s0) -/var/log/cobbler(/.*)? gen_context(system_u:object_r:cobbler_var_log_t, s0) diff --git a/policy/modules/services/cobbler.if b/policy/modules/services/cobbler.if -index 293e08d..e3787fb 100644 +index 293e08d..82306eb 100644 --- a/policy/modules/services/cobbler.if +++ b/policy/modules/services/cobbler.if @@ -1,12 +1,12 @@ @@ -18488,7 +18900,7 @@ index 293e08d..e3787fb 100644 ') - read_files_pattern($1, cobbler_etc_t, cobbler_etc_t); -+ list_dirs_pattern($1, cobbler_var_lib_t, cobbler_var_lib_t) ++ list_dirs_pattern($1, cobbler_etc_t, cobbler_etc_t) files_search_etc($1) ') @@ -20269,7 +20681,7 @@ index a8b93c0..831ce70 100644 type dante_var_run_t; files_pid_file(dante_var_run_t) diff --git a/policy/modules/services/dbus.if b/policy/modules/services/dbus.if -index 0d5711c..3874025 100644 +index 0d5711c..bbc1a8f 100644 --- a/policy/modules/services/dbus.if +++ b/policy/modules/services/dbus.if @@ -41,9 +41,9 @@ interface(`dbus_stub',` @@ -20373,7 +20785,51 @@ index 0d5711c..3874025 100644 read_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t) files_search_var_lib($1) -@@ -431,14 +442,28 @@ interface(`dbus_system_domain',` +@@ -197,6 +208,34 @@ interface(`dbus_system_bus_client',` + + ####################################### + ## ++## Creating connections to specified ++## DBUS sessions. ++## ++## ++## ++## The prefix of the user role (e.g., user ++## is the prefix for user_r). ++## ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`dbus_session_client',` ++ gen_require(` ++ class dbus send_msg; ++ type $1_dbusd_t; ++ ') ++ ++ allow $2 $1_dbusd_t:fd use; ++ allow $2 { $1_dbusd_t self }:dbus send_msg; ++ allow $2 $1_dbusd_t:unix_stream_socket connectto; ++') ++ ++####################################### ++## + ## Template for creating connections to + ## a user DBUS. + ## +@@ -217,6 +256,8 @@ interface(`dbus_session_bus_client',` + + # For connecting to the bus + allow $1 session_bus_type:unix_stream_socket connectto; ++ ++ allow session_bus_type $1:process sigkill; + ') + + ######################################## +@@ -431,14 +472,28 @@ interface(`dbus_system_domain',` domtrans_pattern(system_dbusd_t, $2, $1) @@ -20403,7 +20859,7 @@ index 0d5711c..3874025 100644 dontaudit $1 system_dbusd_t:netlink_selinux_socket { read write }; ') ') -@@ -497,3 +522,22 @@ interface(`dbus_unconfined',` +@@ -497,3 +552,22 @@ interface(`dbus_unconfined',` typeattribute $1 dbusd_unconfined; ') @@ -22287,10 +22743,10 @@ index 0000000..63f11d9 + diff --git a/policy/modules/services/drbd.te b/policy/modules/services/drbd.te new file mode 100644 -index 0000000..19a27bc +index 0000000..1453c54 --- /dev/null +++ b/policy/modules/services/drbd.te -@@ -0,0 +1,57 @@ +@@ -0,0 +1,55 @@ + +policy_module(drbd,1.0.0) + @@ -22303,8 +22759,6 @@ index 0000000..19a27bc +type drbd_exec_t; +init_daemon_domain(drbd_t, drbd_exec_t) + -+permissive drbd_t; -+ +type drbd_var_lib_t; +files_type(drbd_var_lib_t) + @@ -24611,7 +25065,7 @@ index 9878499..9167dc9 100644 domain_system_change_exemption($1) role_transition $2 jabberd_initrc_exec_t system_r; diff --git a/policy/modules/services/jabber.te b/policy/modules/services/jabber.te -index da2127e..e184dff 100644 +index da2127e..e141bc5 100644 --- a/policy/modules/services/jabber.te +++ b/policy/modules/services/jabber.te @@ -5,13 +5,19 @@ policy_module(jabber, 1.8.0) @@ -24635,14 +25089,11 @@ index da2127e..e184dff 100644 type jabberd_log_t; logging_log_file(jabberd_log_t) -@@ -21,74 +27,94 @@ files_type(jabberd_var_lib_t) +@@ -21,74 +27,91 @@ files_type(jabberd_var_lib_t) type jabberd_var_run_t; files_pid_file(jabberd_var_run_t) -######################################## -+permissive jabberd_router_t; -+permissive jabberd_t; -+ +###################################### # -# Local policy @@ -24683,34 +25134,34 @@ index da2127e..e184dff 100644 -corenet_sendrecv_jabber_client_server_packets(jabberd_t) -corenet_sendrecv_jabber_interserver_server_packets(jabberd_t) +allow jabberd_router_t self:netlink_route_socket r_netlink_socket_perms; -+ + +-dev_read_sysfs(jabberd_t) +-# For SSL +-dev_read_rand(jabberd_t) +corenet_tcp_bind_jabber_client_port(jabberd_router_t) +corenet_tcp_bind_jabber_router_port(jabberd_router_t) +corenet_tcp_connect_jabber_router_port(jabberd_router_t) +corenet_sendrecv_jabber_router_server_packets(jabberd_router_t) +corenet_sendrecv_jabber_client_server_packets(jabberd_router_t) --dev_read_sysfs(jabberd_t) --# For SSL --dev_read_rand(jabberd_t) -+fs_getattr_all_fs(jabberd_router_t) - -domain_use_interactive_fds(jabberd_t) -+miscfiles_read_certs(jabberd_router_t) ++fs_getattr_all_fs(jabberd_router_t) -files_read_etc_files(jabberd_t) -files_read_etc_runtime_files(jabberd_t) -+optional_policy(` -+ kerberos_use(jabberd_router_t) -+') ++miscfiles_read_certs(jabberd_router_t) -fs_getattr_all_fs(jabberd_t) -fs_search_auto_mountpoints(jabberd_t) +optional_policy(` -+ nis_use_ypbind(jabberd_router_t) ++ kerberos_use(jabberd_router_t) +') -logging_send_syslog_msg(jabberd_t) ++optional_policy(` ++ nis_use_ypbind(jabberd_router_t) ++') ++ +##################################### +# +# Local policy for other jabberd components @@ -26611,10 +27062,10 @@ index 0000000..311aaed +') diff --git a/policy/modules/services/mpd.te b/policy/modules/services/mpd.te new file mode 100644 -index 0000000..d87d442 +index 0000000..0b9257a --- /dev/null +++ b/policy/modules/services/mpd.te -@@ -0,0 +1,143 @@ +@@ -0,0 +1,141 @@ +policy_module(mpd, 1.0.0) + +######################################## @@ -26626,8 +27077,6 @@ index 0000000..d87d442 +type mpd_exec_t; +init_daemon_domain(mpd_t, mpd_exec_t) + -+permissive mpd_t; -+ +type mpd_initrc_exec_t; +init_script_file(mpd_initrc_exec_t) + @@ -28097,7 +28546,7 @@ index 2324d9e..8069487 100644 + append_files_pattern($1, NetworkManager_log_t, NetworkManager_log_t) +') diff --git a/policy/modules/services/networkmanager.te b/policy/modules/services/networkmanager.te -index 0619395..5428249 100644 +index 0619395..cd5c974 100644 --- a/policy/modules/services/networkmanager.te +++ b/policy/modules/services/networkmanager.te @@ -12,6 +12,12 @@ init_daemon_domain(NetworkManager_t, NetworkManager_exec_t) @@ -28184,7 +28633,7 @@ index 0619395..5428249 100644 ') optional_policy(` -@@ -172,12 +198,14 @@ optional_policy(` +@@ -172,14 +198,17 @@ optional_policy(` ') optional_policy(` @@ -28199,8 +28648,11 @@ index 0619395..5428249 100644 + optional_policy(` consolekit_dbus_chat(NetworkManager_t) ++ consolekit_read_pid_files(NetworkManager_t) ') -@@ -202,6 +230,17 @@ optional_policy(` + ') + +@@ -202,6 +231,17 @@ optional_policy(` ') optional_policy(` @@ -28218,7 +28670,7 @@ index 0619395..5428249 100644 iptables_domtrans(NetworkManager_t) ') -@@ -219,6 +258,7 @@ optional_policy(` +@@ -219,6 +259,7 @@ optional_policy(` ') optional_policy(` @@ -28226,7 +28678,7 @@ index 0619395..5428249 100644 openvpn_domtrans(NetworkManager_t) openvpn_kill(NetworkManager_t) openvpn_signal(NetworkManager_t) -@@ -263,6 +303,7 @@ optional_policy(` +@@ -263,6 +304,7 @@ optional_policy(` vpn_kill(NetworkManager_t) vpn_signal(NetworkManager_t) vpn_signull(NetworkManager_t) @@ -36120,7 +36572,7 @@ index c954f31..7f57f22 100644 + admin_pattern($1, spamd_var_run_t) ') diff --git a/policy/modules/services/spamassassin.te b/policy/modules/services/spamassassin.te -index ec1eb1e..9948efa 100644 +index ec1eb1e..3c0c8c8 100644 --- a/policy/modules/services/spamassassin.te +++ b/policy/modules/services/spamassassin.te @@ -6,54 +6,93 @@ policy_module(spamassassin, 2.4.0) @@ -36280,7 +36732,7 @@ index ec1eb1e..9948efa 100644 ') ######################################## -@@ -206,15 +251,30 @@ allow spamc_t self:unix_stream_socket connectto; +@@ -206,15 +251,32 @@ allow spamc_t self:unix_stream_socket connectto; allow spamc_t self:tcp_socket create_stream_socket_perms; allow spamc_t self:udp_socket create_socket_perms; @@ -36308,10 +36760,12 @@ index ec1eb1e..9948efa 100644 kernel_read_kernel_sysctls(spamc_t) +kernel_read_system_state(spamc_t) ++ ++corecmd_exec_bin(spamc_t) corenet_all_recvfrom_unlabeled(spamc_t) corenet_all_recvfrom_netlabel(spamc_t) -@@ -226,6 +286,7 @@ corenet_tcp_sendrecv_all_ports(spamc_t) +@@ -226,6 +288,7 @@ corenet_tcp_sendrecv_all_ports(spamc_t) corenet_udp_sendrecv_all_ports(spamc_t) corenet_tcp_connect_all_ports(spamc_t) corenet_sendrecv_all_client_packets(spamc_t) @@ -36319,7 +36773,7 @@ index ec1eb1e..9948efa 100644 fs_search_auto_mountpoints(spamc_t) -@@ -244,9 +305,14 @@ files_read_usr_files(spamc_t) +@@ -244,9 +307,14 @@ files_read_usr_files(spamc_t) files_dontaudit_search_var(spamc_t) # cjp: this may be removable: files_list_home(spamc_t) @@ -36334,7 +36788,7 @@ index ec1eb1e..9948efa 100644 miscfiles_read_localization(spamc_t) # cjp: this should probably be removed: -@@ -254,27 +320,40 @@ seutil_read_config(spamc_t) +@@ -254,27 +322,40 @@ seutil_read_config(spamc_t) sysnet_read_config(spamc_t) @@ -36381,7 +36835,7 @@ index ec1eb1e..9948efa 100644 ') ######################################## -@@ -286,7 +365,7 @@ optional_policy(` +@@ -286,7 +367,7 @@ optional_policy(` # setuids to the user running spamc. Comment this if you are not # using this ability. @@ -36390,7 +36844,7 @@ index ec1eb1e..9948efa 100644 dontaudit spamd_t self:capability sys_tty_config; allow spamd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; allow spamd_t self:fd use; -@@ -302,10 +381,17 @@ allow spamd_t self:unix_dgram_socket sendto; +@@ -302,10 +383,17 @@ allow spamd_t self:unix_dgram_socket sendto; allow spamd_t self:unix_stream_socket connectto; allow spamd_t self:tcp_socket create_stream_socket_perms; allow spamd_t self:udp_socket create_socket_perms; @@ -36409,7 +36863,7 @@ index ec1eb1e..9948efa 100644 files_spool_filetrans(spamd_t, spamd_spool_t, { file dir }) manage_dirs_pattern(spamd_t, spamd_tmp_t, spamd_tmp_t) -@@ -314,11 +400,15 @@ files_tmp_filetrans(spamd_t, spamd_tmp_t, { file dir }) +@@ -314,11 +402,15 @@ files_tmp_filetrans(spamd_t, spamd_tmp_t, { file dir }) # var/lib files for spamd allow spamd_t spamd_var_lib_t:dir list_dir_perms; @@ -36427,7 +36881,7 @@ index ec1eb1e..9948efa 100644 kernel_read_all_sysctls(spamd_t) kernel_read_system_state(spamd_t) -@@ -367,22 +457,27 @@ files_read_var_lib_files(spamd_t) +@@ -367,22 +459,27 @@ files_read_var_lib_files(spamd_t) init_dontaudit_rw_utmp(spamd_t) @@ -36459,7 +36913,7 @@ index ec1eb1e..9948efa 100644 fs_manage_cifs_files(spamd_t) ') -@@ -399,7 +494,9 @@ optional_policy(` +@@ -399,7 +496,9 @@ optional_policy(` ') optional_policy(` @@ -36469,7 +36923,7 @@ index ec1eb1e..9948efa 100644 dcc_stream_connect_dccifd(spamd_t) ') -@@ -408,25 +505,17 @@ optional_policy(` +@@ -408,25 +507,17 @@ optional_policy(` ') optional_policy(` @@ -36497,7 +36951,7 @@ index ec1eb1e..9948efa 100644 postgresql_stream_connect(spamd_t) ') -@@ -437,6 +526,10 @@ optional_policy(` +@@ -437,6 +528,10 @@ optional_policy(` optional_policy(` razor_domtrans(spamd_t) @@ -38185,10 +38639,10 @@ index 0000000..83336ab + diff --git a/policy/modules/services/vdagent.te b/policy/modules/services/vdagent.te new file mode 100644 -index 0000000..324365e +index 0000000..9fb3ea7 --- /dev/null +++ b/policy/modules/services/vdagent.te -@@ -0,0 +1,50 @@ +@@ -0,0 +1,48 @@ +policy_module(vdagent,1.0.0) + +######################################## @@ -38200,8 +38654,6 @@ index 0000000..324365e +type vdagent_exec_t; +init_daemon_domain(vdagent_t, vdagent_exec_t) + -+permissive vdagent_t; -+ +type vdagent_var_run_t; +files_pid_file(vdagent_var_run_t) + @@ -39382,10 +39834,10 @@ index 0000000..b9104b7 +') diff --git a/policy/modules/services/vnstatd.te b/policy/modules/services/vnstatd.te new file mode 100644 -index 0000000..d861cf6 +index 0000000..ff32e95 --- /dev/null +++ b/policy/modules/services/vnstatd.te -@@ -0,0 +1,72 @@ +@@ -0,0 +1,70 @@ +policy_module(vnstatd, 1.0.0) + +######################################## @@ -39397,8 +39849,6 @@ index 0000000..d861cf6 +type vnstatd_exec_t; +init_daemon_domain(vnstatd_t, vnstatd_exec_t) + -+permissive vnstatd_t; -+ +type vnstatd_var_lib_t; +files_type(vnstatd_var_lib_t) + @@ -39624,7 +40074,7 @@ index 6f1e3c7..ecfe665 100644 +/var/lib/pqsql/\.Xauthority.* -- gen_context(system_u:object_r:xauth_home_t,s0) + diff --git a/policy/modules/services/xserver.if b/policy/modules/services/xserver.if -index da2601a..61bce48 100644 +index da2601a..06e7dd4 100644 --- a/policy/modules/services/xserver.if +++ b/policy/modules/services/xserver.if @@ -19,9 +19,10 @@ @@ -39992,7 +40442,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -724,11 +787,12 @@ interface(`xserver_dontaudit_rw_xdm_pipes',` +@@ -724,11 +787,31 @@ interface(`xserver_dontaudit_rw_xdm_pipes',` # interface(`xserver_stream_connect_xdm',` gen_require(` @@ -40004,10 +40454,29 @@ index da2601a..61bce48 100644 - stream_connect_pattern($1, xdm_tmp_t, xdm_tmp_t, xdm_t) + files_search_pids($1) + stream_connect_pattern($1, { xdm_tmp_t xdm_var_run_t }, { xdm_tmp_t xdm_var_run_t }, xdm_t) ++') ++ ++######################################## ++## ++## Read XDM files in user home directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`xserver_read_xdm_home_files',` ++ gen_require(` ++ type xdm_home_t; ++ ') ++ ++ userdom_search_user_home_dirs($1) ++ allow $1 xdm_home_t:file read_file_perms; ') ######################################## -@@ -765,7 +829,7 @@ interface(`xserver_setattr_xdm_tmp_dirs',` +@@ -765,7 +848,7 @@ interface(`xserver_setattr_xdm_tmp_dirs',` type xdm_tmp_t; ') @@ -40016,7 +40485,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -805,7 +869,25 @@ interface(`xserver_read_xdm_pid',` +@@ -805,7 +888,25 @@ interface(`xserver_read_xdm_pid',` ') files_search_pids($1) @@ -40043,7 +40512,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -897,7 +979,7 @@ interface(`xserver_getattr_log',` +@@ -897,7 +998,7 @@ interface(`xserver_getattr_log',` ') logging_search_logs($1) @@ -40052,7 +40521,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -916,7 +998,7 @@ interface(`xserver_dontaudit_write_log',` +@@ -916,7 +1017,7 @@ interface(`xserver_dontaudit_write_log',` type xserver_log_t; ') @@ -40061,7 +40530,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -963,6 +1045,45 @@ interface(`xserver_read_xkb_libs',` +@@ -963,6 +1064,45 @@ interface(`xserver_read_xkb_libs',` ######################################## ## @@ -40107,7 +40576,7 @@ index da2601a..61bce48 100644 ## Read xdm temporary files. ## ## -@@ -976,7 +1097,7 @@ interface(`xserver_read_xdm_tmp_files',` +@@ -976,7 +1116,7 @@ interface(`xserver_read_xdm_tmp_files',` type xdm_tmp_t; ') @@ -40116,7 +40585,7 @@ index da2601a..61bce48 100644 read_files_pattern($1, xdm_tmp_t, xdm_tmp_t) ') -@@ -1038,6 +1159,42 @@ interface(`xserver_manage_xdm_tmp_files',` +@@ -1038,6 +1178,42 @@ interface(`xserver_manage_xdm_tmp_files',` ######################################## ## @@ -40159,7 +40628,7 @@ index da2601a..61bce48 100644 ## Do not audit attempts to get the attributes of ## xdm temporary named sockets. ## -@@ -1052,7 +1209,7 @@ interface(`xserver_dontaudit_getattr_xdm_tmp_sockets',` +@@ -1052,7 +1228,7 @@ interface(`xserver_dontaudit_getattr_xdm_tmp_sockets',` type xdm_tmp_t; ') @@ -40168,7 +40637,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -1070,8 +1227,10 @@ interface(`xserver_domtrans',` +@@ -1070,8 +1246,10 @@ interface(`xserver_domtrans',` type xserver_t, xserver_exec_t; ') @@ -40180,7 +40649,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -1185,6 +1344,26 @@ interface(`xserver_stream_connect',` +@@ -1185,6 +1363,26 @@ interface(`xserver_stream_connect',` files_search_tmp($1) stream_connect_pattern($1, xserver_tmp_t, xserver_tmp_t, xserver_t) @@ -40207,7 +40676,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -1210,7 +1389,7 @@ interface(`xserver_read_tmp_files',` +@@ -1210,7 +1408,7 @@ interface(`xserver_read_tmp_files',` ## ## Interface to provide X object permissions on a given X server to ## an X client domain. Gives the domain permission to read the @@ -40216,7 +40685,7 @@ index da2601a..61bce48 100644 ## ## ## -@@ -1220,13 +1399,23 @@ interface(`xserver_read_tmp_files',` +@@ -1220,13 +1418,23 @@ interface(`xserver_read_tmp_files',` # interface(`xserver_manage_core_devices',` gen_require(` @@ -40241,7 +40710,7 @@ index da2601a..61bce48 100644 ') ######################################## -@@ -1243,10 +1432,393 @@ interface(`xserver_manage_core_devices',` +@@ -1243,10 +1451,393 @@ interface(`xserver_manage_core_devices',` # interface(`xserver_unconfined',` gen_require(` @@ -40638,7 +41107,7 @@ index da2601a..61bce48 100644 + manage_files_pattern($1, user_fonts_config_t, user_fonts_config_t) +') diff --git a/policy/modules/services/xserver.te b/policy/modules/services/xserver.te -index 145fc4b..f596720 100644 +index 145fc4b..bfb9c7a 100644 --- a/policy/modules/services/xserver.te +++ b/policy/modules/services/xserver.te @@ -26,27 +26,50 @@ gen_require(` @@ -41280,7 +41749,7 @@ index 145fc4b..f596720 100644 ') optional_policy(` -@@ -516,12 +737,49 @@ optional_policy(` +@@ -516,12 +737,50 @@ optional_policy(` ') optional_policy(` @@ -41320,6 +41789,7 @@ index 145fc4b..f596720 100644 ') optional_policy(` ++ gnome_exec_keyringd(xdm_t) + gnome_manage_config(xdm_t) + gnome_manage_gconf_home_files(xdm_t) + gnome_read_config(xdm_t) @@ -41330,7 +41800,7 @@ index 145fc4b..f596720 100644 hostname_exec(xdm_t) ') -@@ -539,28 +797,64 @@ optional_policy(` +@@ -539,28 +798,64 @@ optional_policy(` ') optional_policy(` @@ -41404,7 +41874,7 @@ index 145fc4b..f596720 100644 ') optional_policy(` -@@ -572,6 +866,10 @@ optional_policy(` +@@ -572,6 +867,10 @@ optional_policy(` ') optional_policy(` @@ -41415,7 +41885,7 @@ index 145fc4b..f596720 100644 xfs_stream_connect(xdm_t) ') -@@ -596,7 +894,7 @@ allow xserver_t input_xevent_t:x_event send; +@@ -596,7 +895,7 @@ allow xserver_t input_xevent_t:x_event send; # execheap needed until the X module loader is fixed. # NVIDIA Needs execstack @@ -41424,7 +41894,7 @@ index 145fc4b..f596720 100644 dontaudit xserver_t self:capability chown; allow xserver_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; allow xserver_t self:fd use; -@@ -610,6 +908,14 @@ allow xserver_t self:unix_dgram_socket { create_socket_perms sendto }; +@@ -610,6 +909,14 @@ allow xserver_t self:unix_dgram_socket { create_socket_perms sendto }; allow xserver_t self:unix_stream_socket { create_stream_socket_perms connectto }; allow xserver_t self:tcp_socket create_stream_socket_perms; allow xserver_t self:udp_socket create_socket_perms; @@ -41439,7 +41909,7 @@ index 145fc4b..f596720 100644 manage_dirs_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) manage_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) -@@ -629,12 +935,19 @@ manage_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t) +@@ -629,12 +936,19 @@ manage_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t) manage_lnk_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t) files_search_var_lib(xserver_t) @@ -41461,7 +41931,7 @@ index 145fc4b..f596720 100644 kernel_read_system_state(xserver_t) kernel_read_device_sysctls(xserver_t) -@@ -642,6 +955,7 @@ kernel_read_modprobe_sysctls(xserver_t) +@@ -642,6 +956,7 @@ kernel_read_modprobe_sysctls(xserver_t) # Xorg wants to check if kernel is tainted kernel_read_kernel_sysctls(xserver_t) kernel_write_proc_files(xserver_t) @@ -41469,7 +41939,7 @@ index 145fc4b..f596720 100644 # Run helper programs in xserver_t. corecmd_exec_bin(xserver_t) -@@ -668,7 +982,6 @@ dev_rw_apm_bios(xserver_t) +@@ -668,7 +983,6 @@ dev_rw_apm_bios(xserver_t) dev_rw_agp(xserver_t) dev_rw_framebuffer(xserver_t) dev_manage_dri_dev(xserver_t) @@ -41477,7 +41947,7 @@ index 145fc4b..f596720 100644 dev_create_generic_dirs(xserver_t) dev_setattr_generic_dirs(xserver_t) # raw memory access is needed if not using the frame buffer -@@ -678,11 +991,17 @@ dev_wx_raw_memory(xserver_t) +@@ -678,11 +992,17 @@ dev_wx_raw_memory(xserver_t) dev_rw_xserver_misc(xserver_t) # read events - the synaptics touchpad driver reads raw events dev_rw_input_dev(xserver_t) @@ -41495,7 +41965,7 @@ index 145fc4b..f596720 100644 # brought on by rhgb files_search_mnt(xserver_t) -@@ -693,8 +1012,13 @@ fs_getattr_xattr_fs(xserver_t) +@@ -693,8 +1013,13 @@ fs_getattr_xattr_fs(xserver_t) fs_search_nfs(xserver_t) fs_search_auto_mountpoints(xserver_t) fs_search_ramfs(xserver_t) @@ -41509,7 +41979,7 @@ index 145fc4b..f596720 100644 selinux_validate_context(xserver_t) selinux_compute_access_vector(xserver_t) -@@ -716,11 +1040,14 @@ logging_send_audit_msgs(xserver_t) +@@ -716,11 +1041,14 @@ logging_send_audit_msgs(xserver_t) miscfiles_read_localization(xserver_t) miscfiles_read_fonts(xserver_t) @@ -41524,7 +41994,7 @@ index 145fc4b..f596720 100644 userdom_search_user_home_dirs(xserver_t) userdom_use_user_ttys(xserver_t) -@@ -773,12 +1100,28 @@ optional_policy(` +@@ -773,12 +1101,28 @@ optional_policy(` ') optional_policy(` @@ -41554,7 +42024,7 @@ index 145fc4b..f596720 100644 unconfined_domtrans(xserver_t) ') -@@ -787,6 +1130,10 @@ optional_policy(` +@@ -787,6 +1131,10 @@ optional_policy(` ') optional_policy(` @@ -41565,7 +42035,7 @@ index 145fc4b..f596720 100644 xfs_stream_connect(xserver_t) ') -@@ -802,10 +1149,10 @@ allow xserver_t xdm_t:shm rw_shm_perms; +@@ -802,10 +1150,10 @@ allow xserver_t xdm_t:shm rw_shm_perms; # NB we do NOT allow xserver_t xdm_var_lib_t:dir, only access to an open # handle of a file inside the dir!!! @@ -41579,7 +42049,7 @@ index 145fc4b..f596720 100644 # Label pid and temporary files with derived types. manage_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) -@@ -813,7 +1160,7 @@ manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) +@@ -813,7 +1161,7 @@ manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) manage_sock_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) # Run xkbcomp. @@ -41588,7 +42058,7 @@ index 145fc4b..f596720 100644 can_exec(xserver_t, xkb_var_lib_t) # VNC v4 module in X server -@@ -826,6 +1173,9 @@ init_use_fds(xserver_t) +@@ -826,6 +1174,9 @@ init_use_fds(xserver_t) # to read ROLE_home_t - examine this in more detail # (xauth?) userdom_read_user_home_content_files(xserver_t) @@ -41598,7 +42068,7 @@ index 145fc4b..f596720 100644 tunable_policy(`use_nfs_home_dirs',` fs_manage_nfs_dirs(xserver_t) -@@ -833,6 +1183,11 @@ tunable_policy(`use_nfs_home_dirs',` +@@ -833,6 +1184,11 @@ tunable_policy(`use_nfs_home_dirs',` fs_manage_nfs_symlinks(xserver_t) ') @@ -41610,7 +42080,7 @@ index 145fc4b..f596720 100644 tunable_policy(`use_samba_home_dirs',` fs_manage_cifs_dirs(xserver_t) fs_manage_cifs_files(xserver_t) -@@ -841,11 +1196,14 @@ tunable_policy(`use_samba_home_dirs',` +@@ -841,11 +1197,14 @@ tunable_policy(`use_samba_home_dirs',` optional_policy(` dbus_system_bus_client(xserver_t) @@ -41627,7 +42097,7 @@ index 145fc4b..f596720 100644 ') optional_policy(` -@@ -853,6 +1211,10 @@ optional_policy(` +@@ -853,6 +1212,10 @@ optional_policy(` rhgb_rw_tmpfs_files(xserver_t) ') @@ -41638,7 +42108,7 @@ index 145fc4b..f596720 100644 ######################################## # # Rules common to all X window domains -@@ -896,7 +1258,7 @@ allow x_domain xproperty_t:x_property { getattr create read write append destroy +@@ -896,7 +1259,7 @@ allow x_domain xproperty_t:x_property { getattr create read write append destroy allow x_domain root_xdrawable_t:x_drawable { getattr setattr list_child add_child remove_child send receive hide show }; # operations allowed on my windows allow x_domain self:x_drawable { create destroy getattr setattr read write show hide list_child add_child remove_child manage send receive }; @@ -41647,7 +42117,7 @@ index 145fc4b..f596720 100644 # operations allowed on all windows allow x_domain x_domain:x_drawable { getattr get_property set_property remove_child }; -@@ -950,11 +1312,31 @@ allow x_domain self:x_resource { read write }; +@@ -950,11 +1313,31 @@ allow x_domain self:x_resource { read write }; # can mess with the screensaver allow x_domain xserver_t:x_screen { getattr saver_getattr }; @@ -41679,7 +42149,7 @@ index 145fc4b..f596720 100644 tunable_policy(`! xserver_object_manager',` # should be xserver_unconfined(x_domain), # but typeattribute doesnt work in conditionals -@@ -976,18 +1358,32 @@ tunable_policy(`! xserver_object_manager',` +@@ -976,18 +1359,32 @@ tunable_policy(`! xserver_object_manager',` allow x_domain xevent_type:{ x_event x_synthetic_event } *; ') @@ -41936,10 +42406,10 @@ index 0000000..8a909f5 +') diff --git a/policy/modules/services/zarafa.te b/policy/modules/services/zarafa.te new file mode 100644 -index 0000000..d7c3f51 +index 0000000..6b80580 --- /dev/null +++ b/policy/modules/services/zarafa.te -@@ -0,0 +1,134 @@ +@@ -0,0 +1,127 @@ +policy_module(zarafa, 1.0.0) + +######################################## @@ -41965,13 +42435,6 @@ index 0000000..d7c3f51 +type zarafa_share_t; +files_type(zarafa_share_t) + -+permissive zarafa_server_t; -+permissive zarafa_spooler_t; -+permissive zarafa_gateway_t; -+permissive zarafa_deliver_t; -+permissive zarafa_ical_t; -+permissive zarafa_monitor_t; -+ +######################################## +# +# zarafa-deliver local policy @@ -46798,7 +47261,7 @@ index 2cc4bda..9e81136 100644 +/etc/share/selinux/targeted(/.*)? gen_context(system_u:object_r:semanage_store_t,s0) +/etc/share/selinux/mls(/.*)? gen_context(system_u:object_r:semanage_store_t,s0) diff --git a/policy/modules/system/selinuxutil.if b/policy/modules/system/selinuxutil.if -index 170e2c7..bbaa8cf 100644 +index 170e2c7..d95624d 100644 --- a/policy/modules/system/selinuxutil.if +++ b/policy/modules/system/selinuxutil.if @@ -85,6 +85,10 @@ interface(`seutil_domtrans_loadpolicy',` @@ -46812,7 +47275,18 @@ index 170e2c7..bbaa8cf 100644 ') ######################################## -@@ -361,6 +365,27 @@ interface(`seutil_exec_restorecon',` +@@ -199,6 +203,10 @@ interface(`seutil_run_newrole',` + role $2 types newrole_t; + + auth_run_upd_passwd(newrole_t, $2) ++ ++ optional_policy(` ++ namespace_init_run(newrole_t, $2) ++ ') + ') + + ######################################## +@@ -361,6 +369,27 @@ interface(`seutil_exec_restorecon',` ######################################## ## @@ -46840,7 +47314,7 @@ index 170e2c7..bbaa8cf 100644 ## Execute run_init in the run_init domain. ## ## -@@ -514,6 +539,10 @@ interface(`seutil_domtrans_setfiles',` +@@ -514,6 +543,10 @@ interface(`seutil_domtrans_setfiles',` files_search_usr($1) corecmd_search_bin($1) domtrans_pattern($1, setfiles_exec_t, setfiles_t) @@ -46851,7 +47325,7 @@ index 170e2c7..bbaa8cf 100644 ') ######################################## -@@ -545,6 +574,53 @@ interface(`seutil_run_setfiles',` +@@ -545,6 +578,53 @@ interface(`seutil_run_setfiles',` ######################################## ## @@ -46905,7 +47379,7 @@ index 170e2c7..bbaa8cf 100644 ## Execute setfiles in the caller domain. ## ## -@@ -690,6 +766,7 @@ interface(`seutil_manage_config',` +@@ -690,6 +770,7 @@ interface(`seutil_manage_config',` ') files_search_etc($1) @@ -46913,7 +47387,7 @@ index 170e2c7..bbaa8cf 100644 manage_files_pattern($1, selinux_config_t, selinux_config_t) read_lnk_files_pattern($1, selinux_config_t, selinux_config_t) ') -@@ -1005,6 +1082,30 @@ interface(`seutil_domtrans_semanage',` +@@ -1005,6 +1086,30 @@ interface(`seutil_domtrans_semanage',` files_search_usr($1) corecmd_search_bin($1) domtrans_pattern($1, semanage_exec_t, semanage_t) @@ -46944,7 +47418,7 @@ index 170e2c7..bbaa8cf 100644 ') ######################################## -@@ -1038,6 +1139,54 @@ interface(`seutil_run_semanage',` +@@ -1038,6 +1143,54 @@ interface(`seutil_run_semanage',` ######################################## ## @@ -46999,7 +47473,7 @@ index 170e2c7..bbaa8cf 100644 ## Full management of the semanage ## module store. ## -@@ -1149,3 +1298,194 @@ interface(`seutil_dontaudit_libselinux_linked',` +@@ -1149,3 +1302,194 @@ interface(`seutil_dontaudit_libselinux_linked',` selinux_dontaudit_get_fs_mount($1) seutil_dontaudit_read_config($1) ') @@ -48190,10 +48664,10 @@ index 0000000..5f0352b + diff --git a/policy/modules/system/systemd.te b/policy/modules/system/systemd.te new file mode 100644 -index 0000000..85d3b7a +index 0000000..dae5641 --- /dev/null +++ b/policy/modules/system/systemd.te -@@ -0,0 +1,103 @@ +@@ -0,0 +1,104 @@ + +policy_module(systemd, 1.0.0) + @@ -48223,6 +48697,7 @@ index 0000000..85d3b7a +# +type systemd_device_t; +files_type(systemd_device_t) ++dev_associate(systemd_device_t) + +####################################### +# @@ -49269,7 +49744,7 @@ index db75976..392d1ee 100644 +HOME_DIR/\.gvfs(/.*)? <> +HOME_DIR/\.debug(/.*)? <> diff --git a/policy/modules/system/userdomain.if b/policy/modules/system/userdomain.if -index 28b88de..10340bc 100644 +index 28b88de..4a3297c 100644 --- a/policy/modules/system/userdomain.if +++ b/policy/modules/system/userdomain.if @@ -30,8 +30,9 @@ template(`userdom_base_user_template',` @@ -50480,7 +50955,7 @@ index 28b88de..10340bc 100644 seutil_run_setfiles($1, $2) optional_policy(` -@@ -1279,12 +1514,15 @@ template(`userdom_security_admin_template',` +@@ -1279,11 +1514,37 @@ template(`userdom_security_admin_template',` interface(`userdom_user_home_content',` gen_require(` type user_home_t; @@ -50489,15 +50964,36 @@ index 28b88de..10340bc 100644 allow $1 user_home_t:filesystem associate; files_type($1) -- files_poly_member($1) - ubac_constrained($1) ++ ubac_constrained($1) + -+ files_poly_member($1) + files_poly_member($1) + typeattribute $1 user_home_type; ++') ++ ++######################################## ++## ++## Make the specified type usable in a ++## generic temporary directory. ++## ++## ++## ++## Type to be used as a file in the ++## generic temporary directory. ++## ++## ++# ++interface(`userdom_user_tmp_content',` ++ gen_require(` ++ attribute user_tmp_type; ++ ') ++ ++ typeattribute $1 user_tmp_type; ++ ++ files_tmp_file($1) + ubac_constrained($1) ') - ######################################## -@@ -1395,6 +1633,7 @@ interface(`userdom_search_user_home_dirs',` +@@ -1395,6 +1656,7 @@ interface(`userdom_search_user_home_dirs',` ') allow $1 user_home_dir_t:dir search_dir_perms; @@ -50505,7 +51001,7 @@ index 28b88de..10340bc 100644 files_search_home($1) ') -@@ -1441,6 +1680,14 @@ interface(`userdom_list_user_home_dirs',` +@@ -1441,6 +1703,14 @@ interface(`userdom_list_user_home_dirs',` allow $1 user_home_dir_t:dir list_dir_perms; files_search_home($1) @@ -50520,7 +51016,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -1456,9 +1703,11 @@ interface(`userdom_list_user_home_dirs',` +@@ -1456,9 +1726,11 @@ interface(`userdom_list_user_home_dirs',` interface(`userdom_dontaudit_list_user_home_dirs',` gen_require(` type user_home_dir_t; @@ -50532,7 +51028,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -1515,6 +1764,42 @@ interface(`userdom_relabelto_user_home_dirs',` +@@ -1515,6 +1787,42 @@ interface(`userdom_relabelto_user_home_dirs',` allow $1 user_home_dir_t:dir relabelto; ') @@ -50575,7 +51071,7 @@ index 28b88de..10340bc 100644 ######################################## ## ## Create directories in the home dir root with -@@ -1589,6 +1874,8 @@ interface(`userdom_dontaudit_search_user_home_content',` +@@ -1589,6 +1897,8 @@ interface(`userdom_dontaudit_search_user_home_content',` ') dontaudit $1 user_home_t:dir search_dir_perms; @@ -50584,7 +51080,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -1603,10 +1890,12 @@ interface(`userdom_dontaudit_search_user_home_content',` +@@ -1603,10 +1913,12 @@ interface(`userdom_dontaudit_search_user_home_content',` # interface(`userdom_list_user_home_content',` gen_require(` @@ -50599,64 +51095,33 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -1649,30 +1938,49 @@ interface(`userdom_delete_user_home_content_dirs',` +@@ -1649,6 +1961,25 @@ interface(`userdom_delete_user_home_content_dirs',` ######################################## ## --## Do not audit attempts to set the --## attributes of user home files. +## Set the attributes of user home files. - ## - ## - ## --## Domain to not audit. -+## Domain allowed access. - ## - ## -+## - # --interface(`userdom_dontaudit_setattr_user_home_content_files',` -+interface(`userdom_setattr_user_home_content_files',` - gen_require(` - type user_home_t; - ') - -- dontaudit $1 user_home_t:file setattr_file_perms; -+ allow $1 user_home_t:file setattr; - ') - - ######################################## - ## --## Mmap user home files. -+## Do not audit attempts to set the -+## attributes of user home files. - ## - ## - ## --## Domain allowed access. -+## Domain to not audit. -+## -+## -+# -+interface(`userdom_dontaudit_setattr_user_home_content_files',` -+ gen_require(` -+ type user_home_t; -+ ') -+ -+ dontaudit $1 user_home_t:file setattr_file_perms; -+') -+ -+######################################## -+## -+## Mmap user home files. +## +## +## +## Domain allowed access. - ## - ## - # -@@ -1700,12 +2008,32 @@ interface(`userdom_read_user_home_content_files',` ++## ++## ++## ++# ++interface(`userdom_setattr_user_home_content_files',` ++ gen_require(` ++ type user_home_t; ++ ') ++ ++ allow $1 user_home_t:file setattr; ++') ++ ++######################################## ++## + ## Do not audit attempts to set the + ## attributes of user home files. + ## +@@ -1700,12 +2031,32 @@ interface(`userdom_read_user_home_content_files',` type user_home_dir_t, user_home_t; ') @@ -50689,7 +51154,7 @@ index 28b88de..10340bc 100644 ## Do not audit attempts to read user home files. ## ## -@@ -1716,11 +2044,14 @@ interface(`userdom_read_user_home_content_files',` +@@ -1716,11 +2067,14 @@ interface(`userdom_read_user_home_content_files',` # interface(`userdom_dontaudit_read_user_home_content_files',` gen_require(` @@ -50707,7 +51172,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -1810,8 +2141,7 @@ interface(`userdom_read_user_home_content_symlinks',` +@@ -1810,8 +2164,7 @@ interface(`userdom_read_user_home_content_symlinks',` type user_home_dir_t, user_home_t; ') @@ -50717,7 +51182,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -1827,20 +2157,14 @@ interface(`userdom_read_user_home_content_symlinks',` +@@ -1827,20 +2180,14 @@ interface(`userdom_read_user_home_content_symlinks',` # interface(`userdom_exec_user_home_content_files',` gen_require(` @@ -50742,7 +51207,7 @@ index 28b88de..10340bc 100644 ######################################## ## -@@ -2182,7 +2506,7 @@ interface(`userdom_dontaudit_read_user_tmp_files',` +@@ -2182,7 +2529,7 @@ interface(`userdom_dontaudit_read_user_tmp_files',` type user_tmp_t; ') @@ -50751,7 +51216,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -2435,13 +2759,14 @@ interface(`userdom_read_user_tmpfs_files',` +@@ -2435,13 +2782,14 @@ interface(`userdom_read_user_tmpfs_files',` ') read_files_pattern($1, user_tmpfs_t, user_tmpfs_t) @@ -50767,7 +51232,7 @@ index 28b88de..10340bc 100644 ## ## ## -@@ -2462,26 +2787,6 @@ interface(`userdom_rw_user_tmpfs_files',` +@@ -2462,26 +2810,6 @@ interface(`userdom_rw_user_tmpfs_files',` ######################################## ## @@ -50794,7 +51259,7 @@ index 28b88de..10340bc 100644 ## Get the attributes of a user domain tty. ## ## -@@ -2815,7 +3120,7 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` +@@ -2815,7 +3143,7 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` domain_entry_file_spec_domtrans($1, unpriv_userdomain) allow unpriv_userdomain $1:fd use; @@ -50803,7 +51268,7 @@ index 28b88de..10340bc 100644 allow unpriv_userdomain $1:process sigchld; ') -@@ -2831,11 +3136,13 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` +@@ -2831,11 +3159,13 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` # interface(`userdom_search_user_home_content',` gen_require(` @@ -50819,7 +51284,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -2917,7 +3224,7 @@ interface(`userdom_dontaudit_use_user_ptys',` +@@ -2917,7 +3247,7 @@ interface(`userdom_dontaudit_use_user_ptys',` type user_devpts_t; ') @@ -50828,7 +51293,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -2972,7 +3279,45 @@ interface(`userdom_write_user_tmp_files',` +@@ -2972,7 +3302,45 @@ interface(`userdom_write_user_tmp_files',` type user_tmp_t; ') @@ -50875,7 +51340,7 @@ index 28b88de..10340bc 100644 ') ######################################## -@@ -3009,6 +3354,7 @@ interface(`userdom_read_all_users_state',` +@@ -3009,6 +3377,7 @@ interface(`userdom_read_all_users_state',` ') read_files_pattern($1, userdomain, userdomain) @@ -50883,7 +51348,7 @@ index 28b88de..10340bc 100644 kernel_search_proc($1) ') -@@ -3139,3 +3485,873 @@ interface(`userdom_dbus_send_all_users',` +@@ -3139,3 +3508,1041 @@ interface(`userdom_dbus_send_all_users',` allow $1 userdomain:dbus send_msg; ') @@ -51459,6 +51924,137 @@ index 28b88de..10340bc 100644 + +######################################## +## ++## Do not audit attempts to write all user home content files. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`userdom_dontaudit_write_all_user_home_content_files',` ++ gen_require(` ++ attribute user_home_type; ++ ') ++ ++ dontaudit $1 user_home_type:file write_file_perms; ++') ++ ++######################################## ++## ++## Do not audit attempts to write all user tmp content files. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`userdom_dontaudit_write_all_user_tmp_content_files',` ++ gen_require(` ++ attribute user_tmp_type; ++ ') ++ ++ dontaudit $1 user_tmp_type:file write_file_perms; ++') ++ ++######################################## ++## ++## Manage all user temporary content. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`userdom_manage_all_user_tmp_content',` ++ gen_require(` ++ attribute user_tmp_type; ++ ') ++ ++ manage_dirs_pattern($1, user_tmp_type, user_tmp_type) ++ manage_files_pattern($1, user_tmp_type, user_tmp_type) ++ manage_lnk_files_pattern($1, user_tmp_type, user_tmp_type) ++ manage_sock_files_pattern($1, user_tmp_type, user_tmp_type) ++ manage_fifo_files_pattern($1, user_tmp_type, user_tmp_type) ++ files_search_tmp($1) ++') ++ ++######################################## ++## ++## List all user temporary content. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`userdom_list_all_user_tmp_content',` ++ gen_require(` ++ attribute user_tmp_type; ++ ') ++ ++ list_dirs_pattern($1, user_tmp_type, user_tmp_type) ++ getattr_files_pattern($1, user_tmp_type, user_tmp_type) ++ read_lnk_files_pattern($1, user_tmp_type, user_tmp_type) ++ getattr_sock_files_pattern($1, user_tmp_type, user_tmp_type) ++ getattr_fifo_files_pattern($1, user_tmp_type, user_tmp_type) ++ files_search_var($1) ++ files_search_tmp($1) ++') ++ ++######################################## ++## ++## Manage all user tmpfs content. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`userdom_manage_all_user_tmpfs_content',` ++ gen_require(` ++ attribute user_tmpfs_type; ++ ') ++ ++ manage_dirs_pattern($1, user_tmpfs_type, user_tmpfs_type) ++ manage_files_pattern($1, user_tmpfs_type, user_tmpfs_type) ++ manage_lnk_files_pattern($1, user_tmpfs_type, user_tmpfs_type) ++ manage_sock_files_pattern($1, user_tmpfs_type, user_tmpfs_type) ++ manage_fifo_files_pattern($1, user_tmpfs_type, user_tmpfs_type) ++ fs_search_tmpfs($1) ++') ++ ++######################################## ++## ++## Delete all user temporary content. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`userdom_delete_all_user_tmp_content',` ++ gen_require(` ++ attribute user_tmp_type; ++ ') ++ ++ delete_dirs_pattern($1, user_tmp_type, user_tmp_type) ++ delete_files_pattern($1, user_tmp_type, user_tmp_type) ++ delete_lnk_files_pattern($1, user_tmp_type, user_tmp_type) ++ delete_sock_files_pattern($1, user_tmp_type, user_tmp_type) ++ delete_fifo_files_pattern($1, user_tmp_type, user_tmp_type) ++ # /var/tmp ++ files_search_var($1) ++ files_delete_tmp_dir_entry($1) ++') ++ ++######################################## ++## +## Read system SSL certificates in the users homedir. +## +## @@ -51757,8 +52353,45 @@ index 28b88de..10340bc 100644 + domain_transition_pattern($1, user_tmp_t, $2) + type_transition $1 user_tmp_t:process $2; +') ++ ++######################################## ++## ++## Do not audit attempts to read all user home content files. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`userdom_dontaudit_read_all_user_home_content_files',` ++ gen_require(` ++ attribute user_home_type; ++ ') ++ ++ dontaudit $1 user_home_type:file read_file_perms; ++') ++ ++######################################## ++## ++## Do not audit attempts to read all user tmp content files. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`userdom_dontaudit_read_all_user_tmp_content_files',` ++ gen_require(` ++ attribute user_tmp_type; ++ ') ++ ++ dontaudit $1 user_tmp_type:file read_file_perms; ++') ++ diff --git a/policy/modules/system/userdomain.te b/policy/modules/system/userdomain.te -index df29ca1..b13e0f3 100644 +index df29ca1..2333dd8 100644 --- a/policy/modules/system/userdomain.te +++ b/policy/modules/system/userdomain.te @@ -7,7 +7,7 @@ policy_module(userdomain, 4.5.0) @@ -51784,23 +52417,27 @@ index df29ca1..b13e0f3 100644 ## Allow w to display everyone ##

## -@@ -59,6 +66,15 @@ attribute unpriv_userdomain; +@@ -59,6 +66,19 @@ attribute unpriv_userdomain; attribute untrusted_content_type; attribute untrusted_content_tmp_type; +# unprivileged user domains +attribute user_home_type; ++attribute user_tmp_type; ++attribute user_tmpfs_type; + +type admin_home_t; +files_type(admin_home_t) +files_associate_tmp(admin_home_t) +fs_associate_tmpfs(admin_home_t) +files_mountpoint(admin_home_t) ++files_poly_member(admin_home_t) ++files_poly_parent(admin_home_t) + type user_home_dir_t alias { staff_home_dir_t sysadm_home_dir_t secadm_home_dir_t auditadm_home_dir_t unconfined_home_dir_t }; fs_associate_tmpfs(user_home_dir_t) files_type(user_home_dir_t) -@@ -71,21 +87,25 @@ ubac_constrained(user_home_dir_t) +@@ -71,26 +91,54 @@ ubac_constrained(user_home_dir_t) type user_home_t alias { staff_home_t sysadm_home_t secadm_home_t auditadm_home_t unconfined_home_t }; typealias user_home_t alias { staff_untrusted_content_t sysadm_untrusted_content_t secadm_untrusted_content_t auditadm_untrusted_content_t unconfined_untrusted_content_t }; @@ -51819,15 +52456,19 @@ index df29ca1..b13e0f3 100644 ubac_constrained(user_devpts_t) -type user_tmp_t alias { staff_tmp_t sysadm_tmp_t secadm_tmp_t auditadm_tmp_t unconfined_tmp_t }; -+type user_tmp_t alias { winbind_tmp_t sshd_tmp_t staff_tmp_t sysadm_tmp_t secadm_tmp_t auditadm_tmp_t unconfined_tmp_t }; ++type user_tmp_t, user_tmp_type; ++typealias user_tmp_t alias { winbind_tmp_t sshd_tmp_t staff_tmp_t sysadm_tmp_t secadm_tmp_t auditadm_tmp_t unconfined_tmp_t }; typealias user_tmp_t alias { staff_untrusted_content_tmp_t sysadm_untrusted_content_tmp_t secadm_untrusted_content_tmp_t auditadm_untrusted_content_tmp_t unconfined_untrusted_content_tmp_t }; files_tmp_file(user_tmp_t) userdom_user_home_content(user_tmp_t) +files_poly_parent(user_tmp_t) - type user_tmpfs_t alias { staff_tmpfs_t sysadm_tmpfs_t secadm_tmpfs_t auditadm_tmpfs_t unconfined_tmpfs_t }; +-type user_tmpfs_t alias { staff_tmpfs_t sysadm_tmpfs_t secadm_tmpfs_t auditadm_tmpfs_t unconfined_tmpfs_t }; ++type user_tmpfs_t, user_tmpfs_type; ++typealias user_tmpfs_t alias { staff_tmpfs_t sysadm_tmpfs_t secadm_tmpfs_t auditadm_tmpfs_t unconfined_tmpfs_t }; files_tmpfs_file(user_tmpfs_t) -@@ -94,3 +114,25 @@ userdom_user_home_content(user_tmpfs_t) + userdom_user_home_content(user_tmpfs_t) + type user_tty_device_t alias { staff_tty_device_t sysadm_tty_device_t secadm_tty_device_t auditadm_tty_device_t unconfined_tty_device_t }; dev_node(user_tty_device_t) ubac_constrained(user_tty_device_t) diff --git a/selinux-policy.spec b/selinux-policy.spec index a65d6d1e..64128736 100644 --- a/selinux-policy.spec +++ b/selinux-policy.spec @@ -472,8 +472,11 @@ exit 0 %endif %changelog -* Tue Jan 18 2011 Dan Walsh 3.9.13-3 -- Add Dgrift policy for gnome-keyring-daemon +* Wed Jan 19 2011 Miroslav Grepl 3.9.13-3 +- NetworkManager wants to read consolekit_var_run_t +- Allow readahead to create /dev/.systemd/readahead +- Remove permissive domains +- Allow newrole to run namespace_init * Tue Jan 18 2011 Miroslav Grepl 3.9.13-2 - Add sepgsql_contexts file