From 5b299ca3408da8c06e6b96bb610b47dfc21858dc Mon Sep 17 00:00:00 2001 From: Lukas Vrabec Date: Jun 19 2014 12:16:25 +0000 Subject: * Thu Jun 19 2014 Lukas Vrabec 3.12.1-74.28 - Added docker policy - Allow chrome_sandbox to execute config_home_t - apcupsd will send a wall message to all terminals telling the system is about to go down - If you use ldap you should be able to read certs --- diff --git a/policy-f19-base.patch b/policy-f19-base.patch index 55ccf84..af264ba 100644 --- a/policy-f19-base.patch +++ b/policy-f19-base.patch @@ -3244,7 +3244,7 @@ index 7590165..19aaaed 100644 + fs_mounton_fusefs(seunshare_domain) +') diff --git a/policy/modules/kernel/corecommands.fc b/policy/modules/kernel/corecommands.fc -index 644d4d7..ad789c2 100644 +index 644d4d7..6e7dd83 100644 --- a/policy/modules/kernel/corecommands.fc +++ b/policy/modules/kernel/corecommands.fc @@ -1,9 +1,10 @@ @@ -3556,7 +3556,7 @@ index 644d4d7..ad789c2 100644 /usr/share/system-config-selinux/polgen\.py -- gen_context(system_u:object_r:bin_t,s0) /usr/share/system-config-selinux/system-config-selinux\.py -- gen_context(system_u:object_r:bin_t,s0) /usr/share/system-config-display/system-config-display -- gen_context(system_u:object_r:bin_t,s0) -@@ -383,11 +458,16 @@ ifdef(`distro_suse', ` +@@ -383,11 +458,15 @@ ifdef(`distro_suse', ` # # /var # @@ -3566,7 +3566,6 @@ index 644d4d7..ad789c2 100644 /var/ftp/bin(/.*)? gen_context(system_u:object_r:bin_t,s0) /var/lib/asterisk/agi-bin(/.*)? gen_context(system_u:object_r:bin_t,s0) -+/var/lib/dirsrv/scripts-INSTANCE -- gen_context(system_u:object_r:bin_t,s0) +/var/lib/iscan/interpreter gen_context(system_u:object_r:bin_t,s0) +/usr/lib/ruby/gems(/.*)?/helper-scripts(/.*)? gen_context(system_u:object_r:bin_t,s0) +/usr/share/gems(/.*)?/helper-scripts(/.*)? gen_context(system_u:object_r:bin_t,s0) @@ -3574,7 +3573,7 @@ index 644d4d7..ad789c2 100644 /usr/lib/yp/.+ -- gen_context(system_u:object_r:bin_t,s0) /var/qmail/bin -d gen_context(system_u:object_r:bin_t,s0) -@@ -397,3 +477,12 @@ ifdef(`distro_suse', ` +@@ -397,3 +476,12 @@ ifdef(`distro_suse', ` ifdef(`distro_suse',` /var/lib/samba/bin/.+ gen_context(system_u:object_r:bin_t,s0) ') @@ -9406,7 +9405,7 @@ index c2c6e05..be423a7 100644 +/nsr(/.*)? gen_context(system_u:object_r:var_t,s0) +/nsr/logs(/.*)? gen_context(system_u:object_r:var_log_t,s0) diff --git a/policy/modules/kernel/files.if b/policy/modules/kernel/files.if -index 64ff4d7..48e851f 100644 +index 64ff4d7..9a38351 100644 --- a/policy/modules/kernel/files.if +++ b/policy/modules/kernel/files.if @@ -19,6 +19,136 @@ @@ -10315,12 +10314,12 @@ index 64ff4d7..48e851f 100644 ## Create, read, write, and delete directories ## on new filesystems that have not yet been labeled. ## -@@ -3455,6 +3949,25 @@ interface(`files_rw_isid_type_blk_files',` +@@ -3227,6 +3721,25 @@ interface(`files_manage_isid_type_dirs',` ######################################## ## -+## rw any files inherited from another process -+## on new filesystems that have not yet been labeled. ++## Moundon directories on new filesystems ++## that have not yet been labeled. +## +## +## @@ -10328,20 +10327,195 @@ index 64ff4d7..48e851f 100644 +## +## +# -+interface(`files_rw_inherited_isid_type_files',` ++interface(`files_mounton_isid',` + gen_require(` + type file_t; + ') + -+ allow $1 file_t:file rw_inherited_file_perms; ++ allow $1 file_t:dir mounton; +') + +######################################## +## - ## Create, read, write, and delete block device nodes + ## Mount a filesystem on a directory on new filesystems + ## that has not yet been labeled. + ## +@@ -3455,8 +3968,8 @@ interface(`files_rw_isid_type_blk_files',` + + ######################################## + ## +-## Create, read, write, and delete block device nodes +-## on new filesystems that have not yet been labeled. ++## Mount a filesystem on a new chr_file ++## that has not yet been labeled. + ## + ## + ## +@@ -3464,17 +3977,17 @@ interface(`files_rw_isid_type_blk_files',` + ## + ## + # +-interface(`files_manage_isid_type_blk_files',` ++interface(`files_mounton_isid_type_chr_file',` + gen_require(` +- type file_t; ++ type unlabeled_t; + ') + +- allow $1 file_t:blk_file manage_blk_file_perms; ++ allow $1 unlabeled_t:chr_file mounton; + ') + + ######################################## + ## +-## Create, read, write, and delete character device nodes ++## rw any files inherited from another process ## on new filesystems that have not yet been labeled. ## -@@ -3796,20 +4309,38 @@ interface(`files_list_mnt',` + ## +@@ -3483,18 +3996,18 @@ interface(`files_manage_isid_type_blk_files',` + ## + ## + # +-interface(`files_manage_isid_type_chr_files',` ++interface(`files_rw_inherited_isid_type_files',` + gen_require(` + type file_t; + ') + +- allow $1 file_t:chr_file manage_chr_file_perms; ++ allow $1 file_t:file rw_inherited_file_perms; + ') + + ######################################## + ## +-## Get the attributes of the home directories root +-## (/home). ++## Create, read, write, and delete block device nodes ++## on new filesystems that have not yet been labeled. + ## + ## + ## +@@ -3502,39 +4015,37 @@ interface(`files_manage_isid_type_chr_files',` + ## + ## + # +-interface(`files_getattr_home_dir',` ++interface(`files_manage_isid_type_blk_files',` + gen_require(` +- type home_root_t; ++ type file_t; + ') + +- allow $1 home_root_t:dir getattr; +- allow $1 home_root_t:lnk_file getattr; ++ allow $1 file_t:blk_file manage_blk_file_perms; + ') + + ######################################## + ## +-## Do not audit attempts to get the +-## attributes of the home directories root +-## (/home). ++## Create, read, write, and delete character device nodes ++## on new filesystems that have not yet been labeled. + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_getattr_home_dir',` ++interface(`files_manage_isid_type_chr_files',` + gen_require(` +- type home_root_t; ++ type file_t; + ') + +- dontaudit $1 home_root_t:dir getattr; +- dontaudit $1 home_root_t:lnk_file getattr; ++ allow $1 file_t:chr_file manage_chr_file_perms; + ') + + ######################################## + ## +-## Search home directories root (/home). ++## Execute files on new filesystems ++## that have not yet been labeled. + ## + ## + ## +@@ -3542,7 +4053,66 @@ interface(`files_dontaudit_getattr_home_dir',` + ## + ## + # +-interface(`files_search_home',` ++interface(`files_exec_isid_files',` ++ gen_require(` ++ type file_t; ++ ') ++ ++ can_exec($1, file_t) ++') ++ ++######################################## ++## ++## Get the attributes of the home directories root ++## (/home). ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_getattr_home_dir',` ++ gen_require(` ++ type home_root_t; ++ ') ++ ++ allow $1 home_root_t:dir getattr; ++ allow $1 home_root_t:lnk_file getattr; ++') ++ ++######################################## ++## ++## Do not audit attempts to get the ++## attributes of the home directories root ++## (/home). ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_getattr_home_dir',` ++ gen_require(` ++ type home_root_t; ++ ') ++ ++ dontaudit $1 home_root_t:dir getattr; ++ dontaudit $1 home_root_t:lnk_file getattr; ++') ++ ++######################################## ++## ++## Search home directories root (/home). ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_search_home',` + gen_require(` + type home_root_t; + ') +@@ -3796,20 +4366,38 @@ interface(`files_list_mnt',` ###################################### ## @@ -10385,59 +10559,40 @@ index 64ff4d7..48e851f 100644 ') ######################################## -@@ -4199,52 +4730,219 @@ interface(`files_read_world_readable_sockets',` +@@ -4199,6 +4787,133 @@ interface(`files_read_world_readable_sockets',` allow $1 readable_t:sock_file read_sock_file_perms; ') --######################################## +####################################### - ## --## Allow the specified type to associate --## to a filesystem with the type of the --## temporary directory (/tmp). ++## +## Read manageable system configuration files in /etc - ## --## --## --## Type of the file to associate. --## ++## +## +## +## Domain allowed access. +## - ## - # --interface(`files_associate_tmp',` -- gen_require(` -- type tmp_t; -- ') ++## ++# +interface(`files_read_system_conf_files',` + gen_require(` + type etc_t, system_conf_t; + ') - -- allow $1 tmp_t:filesystem associate; ++ + allow $1 etc_t:dir list_dir_perms; + read_files_pattern($1, etc_t, system_conf_t) + read_lnk_files_pattern($1, etc_t, system_conf_t) - ') - --######################################## ++') ++ +###################################### - ## --## Get the attributes of the tmp directory (/tmp). ++## +## Manage manageable system configuration files in /etc. - ## - ## --## --## Domain allowed access. --## ++## ++## +## +## Domain allowed access. +## - ## - # --interface(`files_getattr_tmp_dirs',` ++## ++# +interface(`files_manage_system_conf_files',` + gen_require(` + type etc_t, system_conf_t; @@ -10535,28 +10690,13 @@ index 64ff4d7..48e851f 100644 + filetrans_pattern($1, etc_t, system_conf_t, file) +') + -+######################################## -+## -+## Allow the specified type to associate -+## to a filesystem with the type of the -+## temporary directory (/tmp). -+## -+## -+## -+## Type of the file to associate. -+## -+## -+# -+interface(`files_associate_tmp',` -+ gen_require(` -+ type tmp_t; -+ ') -+ -+ allow $1 tmp_t:filesystem associate; -+') -+ -+######################################## -+## + ######################################## + ## + ## Allow the specified type to associate +@@ -4221,6 +4936,26 @@ interface(`files_associate_tmp',` + + ######################################## + ## +## Allow the specified type to associate +## to a filesystem with the type of the +## / file system @@ -10577,16 +10717,10 @@ index 64ff4d7..48e851f 100644 + +######################################## +## -+## Get the attributes of the tmp directory (/tmp). -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_getattr_tmp_dirs',` - gen_require(` + ## Get the attributes of the tmp directory (/tmp). + ## + ## +@@ -4234,17 +4969,37 @@ interface(`files_getattr_tmp_dirs',` type tmp_t; ') @@ -10625,7 +10759,7 @@ index 64ff4d7..48e851f 100644 ## ## # -@@ -4271,6 +4969,7 @@ interface(`files_search_tmp',` +@@ -4271,6 +5026,7 @@ interface(`files_search_tmp',` type tmp_t; ') @@ -10633,7 +10767,7 @@ index 64ff4d7..48e851f 100644 allow $1 tmp_t:dir search_dir_perms; ') -@@ -4307,6 +5006,7 @@ interface(`files_list_tmp',` +@@ -4307,6 +5063,7 @@ interface(`files_list_tmp',` type tmp_t; ') @@ -10641,7 +10775,7 @@ index 64ff4d7..48e851f 100644 allow $1 tmp_t:dir list_dir_perms; ') -@@ -4316,7 +5016,7 @@ interface(`files_list_tmp',` +@@ -4316,7 +5073,7 @@ interface(`files_list_tmp',` ## ## ## @@ -10650,7 +10784,7 @@ index 64ff4d7..48e851f 100644 ## ## # -@@ -4328,6 +5028,25 @@ interface(`files_dontaudit_list_tmp',` +@@ -4328,6 +5085,25 @@ interface(`files_dontaudit_list_tmp',` dontaudit $1 tmp_t:dir list_dir_perms; ') @@ -10676,7 +10810,7 @@ index 64ff4d7..48e851f 100644 ######################################## ## ## Remove entries from the tmp directory. -@@ -4343,6 +5062,7 @@ interface(`files_delete_tmp_dir_entry',` +@@ -4343,6 +5119,7 @@ interface(`files_delete_tmp_dir_entry',` type tmp_t; ') @@ -10684,7 +10818,7 @@ index 64ff4d7..48e851f 100644 allow $1 tmp_t:dir del_entry_dir_perms; ') -@@ -4384,6 +5104,32 @@ interface(`files_manage_generic_tmp_dirs',` +@@ -4384,6 +5161,32 @@ interface(`files_manage_generic_tmp_dirs',` ######################################## ## @@ -10717,29 +10851,222 @@ index 64ff4d7..48e851f 100644 ## Manage temporary files and directories in /tmp. ## ## -@@ -4438,6 +5184,42 @@ interface(`files_rw_generic_tmp_sockets',` +@@ -4438,7 +5241,7 @@ interface(`files_rw_generic_tmp_sockets',` ######################################## ## +-## Set the attributes of all tmp directories. +## Relabel a dir from the type used in /tmp. -+## -+## -+## + ## + ## + ## +@@ -4446,17 +5249,17 @@ interface(`files_rw_generic_tmp_sockets',` + ## + ## + # +-interface(`files_setattr_all_tmp_dirs',` ++interface(`files_relabelfrom_tmp_dirs',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; + ') + +- allow $1 tmpfile:dir { search_dir_perms setattr }; ++ relabelfrom_dirs_pattern($1, tmp_t, tmp_t) + ') + + ######################################## + ## +-## List all tmp directories. ++## Relabel a file from the type used in /tmp. + ## + ## + ## +@@ -4464,59 +5267,53 @@ interface(`files_setattr_all_tmp_dirs',` + ## + ## + # +-interface(`files_list_all_tmp',` ++interface(`files_relabelfrom_tmp_files',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; + ') + +- allow $1 tmpfile:dir list_dir_perms; ++ relabelfrom_files_pattern($1, tmp_t, tmp_t) + ') + + ######################################## + ## +-## Relabel to and from all temporary +-## directory types. ++## Set the attributes of all tmp directories. + ## + ## + ## + ## Domain allowed access. + ## + ## +-## + # +-interface(`files_relabel_all_tmp_dirs',` ++interface(`files_setattr_all_tmp_dirs',` + gen_require(` + attribute tmpfile; +- type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- relabel_dirs_pattern($1, tmpfile, tmpfile) ++ allow $1 tmpfile:dir { search_dir_perms setattr }; + ') + + ######################################## + ## +-## Do not audit attempts to get the attributes +-## of all tmp files. ++## Allow caller to read inherited tmp files. + ## + ## + ## +-## Domain not to audit. +## Domain allowed access. -+## -+## + ## + ## + # +-interface(`files_dontaudit_getattr_all_tmp_files',` ++interface(`files_read_inherited_tmp_files',` + gen_require(` + attribute tmpfile; + ') + +- dontaudit $1 tmpfile:file getattr; ++ allow $1 tmpfile:file { append read_inherited_file_perms }; + ') + + ######################################## + ## +-## Allow attempts to get the attributes +-## of all tmp files. ++## Allow caller to append inherited tmp files. + ## + ## + ## +@@ -4524,84 +5321,218 @@ interface(`files_dontaudit_getattr_all_tmp_files',` + ## + ## + # +-interface(`files_getattr_all_tmp_files',` ++interface(`files_append_inherited_tmp_files',` + gen_require(` + attribute tmpfile; + ') + +- allow $1 tmpfile:file getattr; ++ allow $1 tmpfile:file append_inherited_file_perms; + ') + + ######################################## + ## +-## Relabel to and from all temporary +-## file types. ++## Allow caller to read and write inherited tmp files. + ## + ## + ## + ## Domain allowed access. + ## + ## +-## + # +-interface(`files_relabel_all_tmp_files',` ++interface(`files_rw_inherited_tmp_file',` + gen_require(` + attribute tmpfile; +- type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- relabel_files_pattern($1, tmpfile, tmpfile) ++ allow $1 tmpfile:file rw_inherited_file_perms; + ') + + ######################################## + ## +-## Do not audit attempts to get the attributes +-## of all tmp sock_file. ++## List all tmp directories. + ## + ## + ## +-## Domain not to audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_getattr_all_tmp_sockets',` ++interface(`files_list_all_tmp',` + gen_require(` + attribute tmpfile; + ') + +- dontaudit $1 tmpfile:sock_file getattr; ++ allow $1 tmpfile:dir list_dir_perms; + ') + + ######################################## + ## +-## Read all tmp files. ++## Relabel to and from all temporary ++## directory types. + ## + ## + ## + ## Domain allowed access. + ## + ## ++## + # +-interface(`files_read_all_tmp_files',` ++interface(`files_relabel_all_tmp_dirs',` + gen_require(` + attribute tmpfile; ++ type var_t; + ') + +- read_files_pattern($1, tmpfile, tmpfile) ++ allow $1 var_t:dir search_dir_perms; ++ relabel_dirs_pattern($1, tmpfile, tmpfile) + ') + + ######################################## + ## +-## Create an object in the tmp directories, with a private +-## type using a type transition. ++## Do not audit attempts to get the attributes ++## of all tmp files. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## +-## +# -+interface(`files_relabelfrom_tmp_dirs',` ++interface(`files_dontaudit_getattr_all_tmp_files',` + gen_require(` -+ type tmp_t; ++ attribute tmpfile; + ') + -+ relabelfrom_dirs_pattern($1, tmp_t, tmp_t) ++ dontaudit $1 tmpfile:file getattr; +') + +######################################## +## -+## Relabel a file from the type used in /tmp. ++## Allow attempts to get the attributes ++## of all tmp files. +## +## +## @@ -10747,60 +11074,58 @@ index 64ff4d7..48e851f 100644 +## +## +# -+interface(`files_relabelfrom_tmp_files',` ++interface(`files_getattr_all_tmp_files',` + gen_require(` -+ type tmp_t; ++ attribute tmpfile; + ') + -+ relabelfrom_files_pattern($1, tmp_t, tmp_t) ++ allow $1 tmpfile:file getattr; +') + +######################################## +## - ## Set the attributes of all tmp directories. - ## - ## -@@ -4456,6 +5238,60 @@ interface(`files_setattr_all_tmp_dirs',` - - ######################################## - ## -+## Allow caller to read inherited tmp files. ++## Relabel to and from all temporary ++## file types. +## +## +## +## Domain allowed access. +## +## ++## +# -+interface(`files_read_inherited_tmp_files',` ++interface(`files_relabel_all_tmp_files',` + gen_require(` + attribute tmpfile; ++ type var_t; + ') + -+ allow $1 tmpfile:file { append read_inherited_file_perms }; ++ allow $1 var_t:dir search_dir_perms; ++ relabel_files_pattern($1, tmpfile, tmpfile) +') + +######################################## +## -+## Allow caller to append inherited tmp files. ++## Do not audit attempts to get the attributes ++## of all tmp sock_file. +## +## +## -+## Domain allowed access. ++## Domain to not audit. +## +## +# -+interface(`files_append_inherited_tmp_files',` ++interface(`files_dontaudit_getattr_all_tmp_sockets',` + gen_require(` + attribute tmpfile; + ') + -+ allow $1 tmpfile:file append_inherited_file_perms; ++ dontaudit $1 tmpfile:sock_file getattr; +') + +######################################## +## -+## Allow caller to read and write inherited tmp files. ++## Read all tmp files. +## +## +## @@ -10808,41 +11133,16 @@ index 64ff4d7..48e851f 100644 +## +## +# -+interface(`files_rw_inherited_tmp_file',` ++interface(`files_read_all_tmp_files',` + gen_require(` + attribute tmpfile; + ') + -+ allow $1 tmpfile:file rw_inherited_file_perms; ++ read_files_pattern($1, tmpfile, tmpfile) +') + +######################################## +## - ## List all tmp directories. - ## - ## -@@ -4501,7 +5337,7 @@ interface(`files_relabel_all_tmp_dirs',` - ## - ## - ## --## Domain not to audit. -+## Domain to not audit. - ## - ## - # -@@ -4561,7 +5397,7 @@ interface(`files_relabel_all_tmp_files',` - ## - ## - ## --## Domain not to audit. -+## Domain to not audit. - ## - ## - # -@@ -4593,6 +5429,44 @@ interface(`files_read_all_tmp_files',` - - ######################################## - ## +## Do not audit attempts to read or write +## all leaked tmpfiles files. +## @@ -10881,10 +11181,19 @@ index 64ff4d7..48e851f 100644 + +######################################## +## - ## Create an object in the tmp directories, with a private - ## type using a type transition. - ## -@@ -4646,6 +5520,16 @@ interface(`files_purge_tmp',` ++## Create an object in the tmp directories, with a private ++## type using a type transition. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## + ## + ## The type of the object to be created. + ## +@@ -4646,6 +5577,16 @@ interface(`files_purge_tmp',` delete_lnk_files_pattern($1, tmpfile, tmpfile) delete_fifo_files_pattern($1, tmpfile, tmpfile) delete_sock_files_pattern($1, tmpfile, tmpfile) @@ -10901,67 +11210,32 @@ index 64ff4d7..48e851f 100644 ') ######################################## -@@ -5223,26 +6107,26 @@ interface(`files_list_var',` +@@ -5223,6 +6164,24 @@ interface(`files_list_var',` ######################################## ## --## Create, read, write, and delete directories --## in the /var directory. +## Do not audit listing of the var directory (/var). - ## - ## - ## --## Domain allowed access. ++## ++## ++## +## Domain to not audit. - ## - ## - # --interface(`files_manage_var_dirs',` ++## ++## ++# +interface(`files_dontaudit_list_var',` - gen_require(` - type var_t; - ') - -- allow $1 var_t:dir manage_dir_perms; -+ dontaudit $1 var_t:dir list_dir_perms; - ') - - ######################################## - ## --## Read files in the /var directory. -+## Create, read, write, and delete directories -+## in the /var directory. - ## - ## - ## -@@ -5250,7 +6134,25 @@ interface(`files_manage_var_dirs',` - ## - ## - # --interface(`files_read_var_files',` -+interface(`files_manage_var_dirs',` + gen_require(` + type var_t; + ') + -+ allow $1 var_t:dir manage_dir_perms; ++ dontaudit $1 var_t:dir list_dir_perms; +') + +######################################## +## -+## Read files in the /var directory. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_read_var_files',` - gen_require(` - type var_t; - ') -@@ -5578,6 +6480,25 @@ interface(`files_read_var_lib_symlinks',` + ## Create, read, write, and delete directories + ## in the /var directory. + ## +@@ -5578,6 +6537,25 @@ interface(`files_read_var_lib_symlinks',` read_lnk_files_pattern($1, { var_t var_lib_t }, var_lib_t) ') @@ -10987,7 +11261,7 @@ index 64ff4d7..48e851f 100644 # cjp: the next two interfaces really need to be fixed # in some way. They really neeed their own types. -@@ -5623,7 +6544,7 @@ interface(`files_manage_mounttab',` +@@ -5623,7 +6601,7 @@ interface(`files_manage_mounttab',` ######################################## ## @@ -10996,7 +11270,7 @@ index 64ff4d7..48e851f 100644 ## ## ## -@@ -5631,12 +6552,13 @@ interface(`files_manage_mounttab',` +@@ -5631,12 +6609,13 @@ interface(`files_manage_mounttab',` ## ## # @@ -11012,7 +11286,7 @@ index 64ff4d7..48e851f 100644 ') ######################################## -@@ -5654,6 +6576,7 @@ interface(`files_search_locks',` +@@ -5654,6 +6633,7 @@ interface(`files_search_locks',` type var_t, var_lock_t; ') @@ -11020,7 +11294,7 @@ index 64ff4d7..48e851f 100644 allow $1 var_lock_t:lnk_file read_lnk_file_perms; search_dirs_pattern($1, var_t, var_lock_t) ') -@@ -5680,7 +6603,26 @@ interface(`files_dontaudit_search_locks',` +@@ -5680,7 +6660,26 @@ interface(`files_dontaudit_search_locks',` ######################################## ## @@ -11048,7 +11322,7 @@ index 64ff4d7..48e851f 100644 ## ## ## -@@ -5688,13 +6630,12 @@ interface(`files_dontaudit_search_locks',` +@@ -5688,13 +6687,12 @@ interface(`files_dontaudit_search_locks',` ## ## # @@ -11065,7 +11339,7 @@ index 64ff4d7..48e851f 100644 ') ######################################## -@@ -5713,7 +6654,7 @@ interface(`files_rw_lock_dirs',` +@@ -5713,7 +6711,7 @@ interface(`files_rw_lock_dirs',` type var_t, var_lock_t; ') @@ -11074,7 +11348,7 @@ index 64ff4d7..48e851f 100644 rw_dirs_pattern($1, var_t, var_lock_t) ') -@@ -5746,7 +6687,6 @@ interface(`files_create_lock_dirs',` +@@ -5746,7 +6744,6 @@ interface(`files_create_lock_dirs',` ## Domain allowed access. ## ## @@ -11082,7 +11356,7 @@ index 64ff4d7..48e851f 100644 # interface(`files_relabel_all_lock_dirs',` gen_require(` -@@ -5761,7 +6701,7 @@ interface(`files_relabel_all_lock_dirs',` +@@ -5761,7 +6758,7 @@ interface(`files_relabel_all_lock_dirs',` ######################################## ## @@ -11091,7 +11365,7 @@ index 64ff4d7..48e851f 100644 ## ## ## -@@ -5769,13 +6709,33 @@ interface(`files_relabel_all_lock_dirs',` +@@ -5769,13 +6766,33 @@ interface(`files_relabel_all_lock_dirs',` ## ## # @@ -11126,7 +11400,7 @@ index 64ff4d7..48e851f 100644 allow $1 var_lock_t:dir list_dir_perms; getattr_files_pattern($1, var_lock_t, var_lock_t) ') -@@ -5791,13 +6751,12 @@ interface(`files_getattr_generic_locks',` +@@ -5791,13 +6808,12 @@ interface(`files_getattr_generic_locks',` ## # interface(`files_delete_generic_locks',` @@ -11144,7 +11418,7 @@ index 64ff4d7..48e851f 100644 ') ######################################## -@@ -5816,9 +6775,7 @@ interface(`files_manage_generic_locks',` +@@ -5816,9 +6832,7 @@ interface(`files_manage_generic_locks',` type var_t, var_lock_t; ') @@ -11155,7 +11429,7 @@ index 64ff4d7..48e851f 100644 manage_files_pattern($1, var_lock_t, var_lock_t) ') -@@ -5860,8 +6817,7 @@ interface(`files_read_all_locks',` +@@ -5860,8 +6874,7 @@ interface(`files_read_all_locks',` type var_t, var_lock_t; ') @@ -11165,7 +11439,7 @@ index 64ff4d7..48e851f 100644 allow $1 lockfile:dir list_dir_perms; read_files_pattern($1, lockfile, lockfile) read_lnk_files_pattern($1, lockfile, lockfile) -@@ -5883,8 +6839,7 @@ interface(`files_manage_all_locks',` +@@ -5883,8 +6896,7 @@ interface(`files_manage_all_locks',` type var_t, var_lock_t; ') @@ -11175,7 +11449,7 @@ index 64ff4d7..48e851f 100644 manage_dirs_pattern($1, lockfile, lockfile) manage_files_pattern($1, lockfile, lockfile) manage_lnk_files_pattern($1, lockfile, lockfile) -@@ -5921,8 +6876,7 @@ interface(`files_lock_filetrans',` +@@ -5921,8 +6933,7 @@ interface(`files_lock_filetrans',` type var_t, var_lock_t; ') @@ -11185,7 +11459,7 @@ index 64ff4d7..48e851f 100644 filetrans_pattern($1, var_lock_t, $2, $3, $4) ') -@@ -5961,7 +6915,7 @@ interface(`files_setattr_pid_dirs',` +@@ -5961,7 +6972,7 @@ interface(`files_setattr_pid_dirs',` type var_run_t; ') @@ -11194,7 +11468,7 @@ index 64ff4d7..48e851f 100644 allow $1 var_run_t:dir setattr; ') -@@ -5981,10 +6935,48 @@ interface(`files_search_pids',` +@@ -5981,10 +6992,48 @@ interface(`files_search_pids',` type var_t, var_run_t; ') @@ -11243,7 +11517,7 @@ index 64ff4d7..48e851f 100644 ######################################## ## ## Do not audit attempts to search -@@ -6007,6 +6999,25 @@ interface(`files_dontaudit_search_pids',` +@@ -6007,6 +7056,25 @@ interface(`files_dontaudit_search_pids',` ######################################## ## @@ -11269,7 +11543,7 @@ index 64ff4d7..48e851f 100644 ## List the contents of the runtime process ## ID directories (/var/run). ## -@@ -6021,7 +7032,7 @@ interface(`files_list_pids',` +@@ -6021,7 +7089,7 @@ interface(`files_list_pids',` type var_t, var_run_t; ') @@ -11278,7 +11552,7 @@ index 64ff4d7..48e851f 100644 list_dirs_pattern($1, var_t, var_run_t) ') -@@ -6040,7 +7051,7 @@ interface(`files_read_generic_pids',` +@@ -6040,7 +7108,7 @@ interface(`files_read_generic_pids',` type var_t, var_run_t; ') @@ -11287,7 +11561,7 @@ index 64ff4d7..48e851f 100644 list_dirs_pattern($1, var_t, var_run_t) read_files_pattern($1, var_run_t, var_run_t) ') -@@ -6060,7 +7071,7 @@ interface(`files_write_generic_pid_pipes',` +@@ -6060,7 +7128,7 @@ interface(`files_write_generic_pid_pipes',` type var_run_t; ') @@ -11296,7 +11570,7 @@ index 64ff4d7..48e851f 100644 allow $1 var_run_t:fifo_file write; ') -@@ -6122,7 +7133,6 @@ interface(`files_pid_filetrans',` +@@ -6122,7 +7190,6 @@ interface(`files_pid_filetrans',` ') allow $1 var_t:dir search_dir_perms; @@ -11304,7 +11578,7 @@ index 64ff4d7..48e851f 100644 filetrans_pattern($1, var_run_t, $2, $3, $4) ') -@@ -6151,6 +7161,24 @@ interface(`files_pid_filetrans_lock_dir',` +@@ -6151,6 +7218,24 @@ interface(`files_pid_filetrans_lock_dir',` ######################################## ## @@ -11329,7 +11603,7 @@ index 64ff4d7..48e851f 100644 ## Read and write generic process ID files. ## ## -@@ -6164,7 +7192,7 @@ interface(`files_rw_generic_pids',` +@@ -6164,7 +7249,7 @@ interface(`files_rw_generic_pids',` type var_t, var_run_t; ') @@ -11338,332 +11612,196 @@ index 64ff4d7..48e851f 100644 list_dirs_pattern($1, var_t, var_run_t) rw_files_pattern($1, var_run_t, var_run_t) ') -@@ -6231,55 +7259,43 @@ interface(`files_dontaudit_ioctl_all_pids',` +@@ -6231,6 +7316,116 @@ interface(`files_dontaudit_ioctl_all_pids',` ######################################## ## --## Read all process ID files. +## Relable all pid directories - ## - ## - ## - ## Domain allowed access. - ## - ## --## - # --interface(`files_read_all_pids',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_relabel_all_pid_dirs',` - gen_require(` - attribute pidfile; -- type var_t, var_run_t; - ') - -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -- list_dirs_pattern($1, var_t, pidfile) -- read_files_pattern($1, pidfile, pidfile) ++ gen_require(` ++ attribute pidfile; ++ ') ++ + relabel_dirs_pattern($1, pidfile, pidfile) - ') - - ######################################## - ## --## Delete all process IDs. ++') ++ ++######################################## ++## +## Delete all pid sockets - ## - ## - ## - ## Domain allowed access. - ## - ## --## - # --interface(`files_delete_all_pids',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_delete_all_pid_sockets',` - gen_require(` - attribute pidfile; -- type var_t, var_run_t; - ') - -- allow $1 var_t:dir search_dir_perms; -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -- allow $1 var_run_t:dir rmdir; -- allow $1 var_run_t:lnk_file delete_lnk_file_perms; -- delete_files_pattern($1, pidfile, pidfile) -- delete_fifo_files_pattern($1, pidfile, pidfile) -- delete_sock_files_pattern($1, pidfile, { pidfile var_run_t }) ++ gen_require(` ++ attribute pidfile; ++ ') ++ + allow $1 pidfile:sock_file delete_sock_file_perms; - ') - - ######################################## - ## --## Delete all process ID directories. ++') ++ ++######################################## ++## +## Create all pid sockets - ## - ## - ## -@@ -6287,42 +7303,35 @@ interface(`files_delete_all_pids',` - ## - ## - # --interface(`files_delete_all_pid_dirs',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_create_all_pid_sockets',` - gen_require(` - attribute pidfile; -- type var_t, var_run_t; - ') - -- allow $1 var_t:dir search_dir_perms; -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -- delete_dirs_pattern($1, pidfile, pidfile) ++ gen_require(` ++ attribute pidfile; ++ ') ++ + allow $1 pidfile:sock_file create_sock_file_perms; - ') - - ######################################## - ## --## Create, read, write and delete all --## var_run (pid) content ++') ++ ++######################################## ++## +## Create all pid named pipes - ## - ## - ## --## Domain alloed access. ++## ++## ++## +## Domain allowed access. - ## - ## - # --interface(`files_manage_all_pids',` ++## ++## ++# +interface(`files_create_all_pid_pipes',` - gen_require(` - attribute pidfile; - ') - -- manage_dirs_pattern($1, pidfile, pidfile) -- manage_files_pattern($1, pidfile, pidfile) -- manage_lnk_files_pattern($1, pidfile, pidfile) ++ gen_require(` ++ attribute pidfile; ++ ') ++ + allow $1 pidfile:fifo_file create_fifo_file_perms; - ') - - ######################################## - ## --## Mount filesystems on all polyinstantiation --## member directories. ++') ++ ++######################################## ++## +## Delete all pid named pipes - ## - ## - ## -@@ -6330,18 +7339,18 @@ interface(`files_manage_all_pids',` - ## - ## - # --interface(`files_mounton_all_poly_members',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_delete_all_pid_pipes',` - gen_require(` -- attribute polymember; ++ gen_require(` + attribute pidfile; - ') - -- allow $1 polymember:dir mounton; ++ ') ++ + allow $1 pidfile:fifo_file delete_fifo_file_perms; - ') - - ######################################## - ## --## Search the contents of generic spool --## directories (/var/spool). ++') ++ ++######################################## ++## +## manage all pidfile directories +## in the /var/run directory. - ## - ## - ## -@@ -6349,37 +7358,40 @@ interface(`files_mounton_all_poly_members',` - ## - ## - # --interface(`files_search_spool',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_manage_all_pid_dirs',` - gen_require(` -- type var_t, var_spool_t; ++ gen_require(` + attribute pidfile; - ') - -- search_dirs_pattern($1, var_t, var_spool_t) ++ ') ++ + manage_dirs_pattern($1,pidfile,pidfile) - ') - ++') + - ######################################## - ## --## Do not audit attempts to search generic --## spool directories. -+## Read all process ID files. ++ ++######################################## ++## + ## Read all process ID files. ## ## - ## --## Domain to not audit. -+## Domain allowed access. - ## - ## -+## - # --interface(`files_dontaudit_search_spool',` -+interface(`files_read_all_pids',` +@@ -6243,12 +7438,86 @@ interface(`files_dontaudit_ioctl_all_pids',` + interface(`files_read_all_pids',` gen_require(` -- type var_spool_t; -+ attribute pidfile; + attribute pidfile; +- type var_t, var_run_t; + type var_t; ') -- dontaudit $1 var_spool_t:dir search_dir_perms; -+ list_dirs_pattern($1, var_t, pidfile) -+ read_files_pattern($1, pidfile, pidfile) +- allow $1 var_run_t:lnk_file read_lnk_file_perms; + list_dirs_pattern($1, var_t, pidfile) + read_files_pattern($1, pidfile, pidfile) + read_lnk_files_pattern($1, pidfile, pidfile) - ') - - ######################################## - ## --## List the contents of generic spool --## (/var/spool) directories. ++') ++ ++######################################## ++## +## Relable all pid files - ## - ## - ## -@@ -6387,18 +7399,17 @@ interface(`files_dontaudit_search_spool',` - ## - ## - # --interface(`files_list_spool',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_relabel_all_pid_files',` - gen_require(` -- type var_t, var_spool_t; ++ gen_require(` + attribute pidfile; - ') - -- list_dirs_pattern($1, var_t, var_spool_t) ++ ') ++ + relabel_files_pattern($1, pidfile, pidfile) - ') - - ######################################## - ## --## Create, read, write, and delete generic --## spool directories (/var/spool). ++') ++ ++######################################## ++## +## Execute generic programs in /var/run in the caller domain. - ## - ## - ## -@@ -6406,18 +7417,18 @@ interface(`files_list_spool',` - ## - ## - # --interface(`files_manage_generic_spool_dirs',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_exec_generic_pid_files',` - gen_require(` -- type var_t, var_spool_t; ++ gen_require(` + type var_run_t; - ') - -- allow $1 var_t:dir search_dir_perms; -- manage_dirs_pattern($1, var_spool_t, var_spool_t) ++ ') ++ + exec_files_pattern($1, var_run_t, var_run_t) - ') - - ######################################## - ## --## Read generic spool files. ++') ++ ++######################################## ++## +## manage all pidfiles +## in the /var/run directory. - ## - ## - ## -@@ -6425,19 +7436,18 @@ interface(`files_manage_generic_spool_dirs',` - ## - ## - # --interface(`files_read_generic_spool',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`files_manage_all_pids',` - gen_require(` -- type var_t, var_spool_t; -+ attribute pidfile; - ') - -- list_dirs_pattern($1, var_t, var_spool_t) -- read_files_pattern($1, var_spool_t, var_spool_t) -+ manage_files_pattern($1,pidfile,pidfile) - ') - - ######################################## - ## --## Create, read, write, and delete generic --## spool files. -+## Mount filesystems on all polyinstantiation -+## member directories. - ## - ## - ## -@@ -6445,45 +7455,312 @@ interface(`files_read_generic_spool',` - ## - ## - # --interface(`files_manage_generic_spool',` -+interface(`files_mounton_all_poly_members',` - gen_require(` -- type var_t, var_spool_t; -+ attribute polymember; - ') - -- allow $1 var_t:dir search_dir_perms; -- manage_files_pattern($1, var_spool_t, var_spool_t) -+ allow $1 polymember:dir mounton; - ') - - ######################################## - ## --## Create objects in the spool directory --## with a private type with a type transition. -+## Delete all process IDs. - ## - ## - ## - ## Domain allowed access. - ## - ## --## --## --## Type to which the created node will be transitioned. --## --## --## --## --## Object class(es) (single or set including {}) for which this --## the transition will occur. --## --## --## --## --## The name of the object being created. --## --## -+## - # --interface(`files_spool_filetrans',` -+interface(`files_delete_all_pids',` - gen_require(` -- type var_t, var_spool_t; ++ gen_require(` + attribute pidfile; -+ type var_t, var_run_t; + ') + -+ files_search_pids($1) -+ allow $1 var_t:dir search_dir_perms; -+ allow $1 var_run_t:dir rmdir; -+ allow $1 var_run_t:lnk_file delete_lnk_file_perms; -+ delete_files_pattern($1, pidfile, pidfile) -+ delete_fifo_files_pattern($1, pidfile, pidfile) -+ delete_sock_files_pattern($1, pidfile, { pidfile var_run_t }) ++ manage_files_pattern($1,pidfile,pidfile) +') + +######################################## +## -+## Delete all process ID directories. ++## Mount filesystems on all polyinstantiation ++## member directories. +## +## +## @@ -11671,19 +11809,39 @@ index 64ff4d7..48e851f 100644 +## +## +# -+interface(`files_delete_all_pid_dirs',` ++interface(`files_mounton_all_poly_members',` + gen_require(` -+ attribute pidfile; -+ type var_t, var_run_t; ++ attribute polymember; + ') + ++ allow $1 polymember:dir mounton; + ') + + ######################################## +@@ -6268,8 +7537,8 @@ interface(`files_delete_all_pids',` + type var_t, var_run_t; + ') + + files_search_pids($1) -+ allow $1 var_t:dir search_dir_perms; -+ delete_dirs_pattern($1, pidfile, pidfile) -+') -+ -+######################################## -+## + allow $1 var_t:dir search_dir_perms; +- allow $1 var_run_t:lnk_file read_lnk_file_perms; + allow $1 var_run_t:dir rmdir; + allow $1 var_run_t:lnk_file delete_lnk_file_perms; + delete_files_pattern($1, pidfile, pidfile) +@@ -6293,36 +7562,80 @@ interface(`files_delete_all_pid_dirs',` + type var_t, var_run_t; + ') + ++ files_search_pids($1) + allow $1 var_t:dir search_dir_perms; +- allow $1 var_run_t:lnk_file read_lnk_file_perms; + delete_dirs_pattern($1, pidfile, pidfile) + ') + + ######################################## + ## +-## Create, read, write and delete all +-## var_run (pid) content +## Make the specified type a file +## used for spool files. +## @@ -11733,36 +11891,47 @@ index 64ff4d7..48e851f 100644 +######################################## +## +## Create all spool sockets -+## -+## -+## + ## + ## + ## +-## Domain alloed access. +## Domain allowed access. -+## -+## -+# + ## + ## + # +-interface(`files_manage_all_pids',` +interface(`files_create_all_spool_sockets',` -+ gen_require(` + gen_require(` +- attribute pidfile; + attribute spoolfile; -+ ') -+ + ') + +- manage_dirs_pattern($1, pidfile, pidfile) +- manage_files_pattern($1, pidfile, pidfile) +- manage_lnk_files_pattern($1, pidfile, pidfile) + allow $1 spoolfile:sock_file create_sock_file_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Mount filesystems on all polyinstantiation +-## member directories. +## Delete all spool sockets -+## -+## -+## -+## Domain allowed access. -+## -+## -+# + ## + ## + ## +@@ -6330,12 +7643,33 @@ interface(`files_manage_all_pids',` + ## + ## + # +-interface(`files_mounton_all_poly_members',` +interface(`files_delete_all_spool_sockets',` -+ gen_require(` + gen_require(` +- attribute polymember; + attribute spoolfile; -+ ') -+ + ') + +- allow $1 polymember:dir mounton; + allow $1 spoolfile:sock_file delete_sock_file_perms; +') + @@ -11785,158 +11954,10 @@ index 64ff4d7..48e851f 100644 + ') + + relabel_dirs_pattern($1, spoolfile, spoolfile) -+') -+ -+######################################## -+## -+## Search the contents of generic spool -+## directories (/var/spool). -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_search_spool',` -+ gen_require(` -+ type var_t, var_spool_t; -+ ') -+ -+ search_dirs_pattern($1, var_t, var_spool_t) -+') -+ -+######################################## -+## -+## Do not audit attempts to search generic -+## spool directories. -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_dontaudit_search_spool',` -+ gen_require(` -+ type var_spool_t; -+ ') -+ -+ dontaudit $1 var_spool_t:dir search_dir_perms; -+') -+ -+######################################## -+## -+## List the contents of generic spool -+## (/var/spool) directories. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_list_spool',` -+ gen_require(` -+ type var_t, var_spool_t; -+ ') -+ -+ list_dirs_pattern($1, var_t, var_spool_t) -+') -+ -+######################################## -+## -+## Create, read, write, and delete generic -+## spool directories (/var/spool). -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_manage_generic_spool_dirs',` -+ gen_require(` -+ type var_t, var_spool_t; -+ ') -+ -+ allow $1 var_t:dir search_dir_perms; -+ manage_dirs_pattern($1, var_spool_t, var_spool_t) -+') -+ -+######################################## -+## -+## Read generic spool files. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_read_generic_spool',` -+ gen_require(` -+ type var_t, var_spool_t; -+ ') -+ -+ list_dirs_pattern($1, var_t, var_spool_t) -+ read_files_pattern($1, var_spool_t, var_spool_t) -+') -+ -+######################################## -+## -+## Create, read, write, and delete generic -+## spool files. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_manage_generic_spool',` -+ gen_require(` -+ type var_t, var_spool_t; -+ ') -+ -+ allow $1 var_t:dir search_dir_perms; -+ manage_files_pattern($1, var_spool_t, var_spool_t) -+') -+ -+######################################## -+## -+## Create objects in the spool directory -+## with a private type with a type transition. -+## -+## -+## -+## Domain allowed access. -+## -+## -+## -+## -+## Type to which the created node will be transitioned. -+## -+## -+## -+## -+## Object class(es) (single or set including {}) for which this -+## the transition will occur. -+## -+## -+## -+## -+## The name of the object being created. -+## -+## -+# -+interface(`files_spool_filetrans',` -+ gen_require(` -+ type var_t, var_spool_t; - ') + ') - allow $1 var_t:dir search_dir_perms; -@@ -6562,3 +7839,509 @@ interface(`files_unconfined',` + ######################################## +@@ -6562,3 +7896,509 @@ interface(`files_unconfined',` typeattribute $1 files_unconfined_type; ') @@ -14147,7 +14168,7 @@ index 7be4ddf..f7021a0 100644 + +/sys/class/net/ib.* gen_context(system_u:object_r:sysctl_net_t,s0) diff --git a/policy/modules/kernel/kernel.if b/policy/modules/kernel/kernel.if -index 649e458..bb7d1a2 100644 +index 649e458..dcb1def 100644 --- a/policy/modules/kernel/kernel.if +++ b/policy/modules/kernel/kernel.if @@ -286,7 +286,7 @@ interface(`kernel_rw_unix_dgram_sockets',` @@ -14489,7 +14510,7 @@ index 649e458..bb7d1a2 100644 ## Unconfined access to kernel module resources. ## ## -@@ -2975,5 +3182,300 @@ interface(`kernel_unconfined',` +@@ -2975,5 +3182,319 @@ interface(`kernel_unconfined',` ') typeattribute $1 kern_unconfined; @@ -14790,6 +14811,25 @@ index 649e458..bb7d1a2 100644 + kernel_search_vm_sysctl($1) + rw_files_pattern($1, sysctl_vm_overcommit_t, sysctl_vm_overcommit_t) + list_dirs_pattern($1, sysctl_vm_overcommit_t, sysctl_vm_overcommit_t) ++') ++ ++######################################## ++## ++## Allow caller to read kernel messages ++## using the /proc/kmsg interface. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`kernel_mounton_messages',` ++ gen_require(` ++ type proc_kmsg_t, proc_t; ++ ') ++ ++ allow $1 proc_kmsg_t:dir mounton; ') diff --git a/policy/modules/kernel/kernel.te b/policy/modules/kernel/kernel.te index 6fac350..5a087a7 100644 @@ -16154,7 +16194,7 @@ index 7d45d15..22c9cfe 100644 + +/usr/lib/udev/devices/pts -d gen_context(system_u:object_r:devpts_t,s0-mls_systemhigh) diff --git a/policy/modules/kernel/terminal.if b/policy/modules/kernel/terminal.if -index 771bce1..5bbf50b 100644 +index 771bce1..e3722ab 100644 --- a/policy/modules/kernel/terminal.if +++ b/policy/modules/kernel/terminal.if @@ -124,7 +124,7 @@ interface(`term_user_tty',` @@ -16381,7 +16421,33 @@ index 771bce1..5bbf50b 100644 ## ## # -@@ -1259,7 +1376,47 @@ interface(`term_dontaudit_use_unallocated_ttys',` +@@ -1165,6 +1282,25 @@ interface(`term_relabel_unallocated_ttys',` + + ######################################## + ## ++## Mounton unallocated tty device nodes. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`term_mounton_unallocated_ttys',` ++ gen_require(` ++ type tty_device_t; ++ ') ++ ++ allow $1 tty_device_t:chr_file mounton; ++') ++ ++######################################## ++## + ## Relabel from all user tty types to + ## the unallocated tty type. + ## +@@ -1259,7 +1395,47 @@ interface(`term_dontaudit_use_unallocated_ttys',` type tty_device_t; ') @@ -16430,7 +16496,7 @@ index 771bce1..5bbf50b 100644 ') ######################################## -@@ -1275,11 +1432,13 @@ interface(`term_dontaudit_use_unallocated_ttys',` +@@ -1275,11 +1451,13 @@ interface(`term_dontaudit_use_unallocated_ttys',` # interface(`term_getattr_all_ttys',` gen_require(` @@ -16444,7 +16510,7 @@ index 771bce1..5bbf50b 100644 ') ######################################## -@@ -1296,10 +1455,12 @@ interface(`term_getattr_all_ttys',` +@@ -1296,10 +1474,12 @@ interface(`term_getattr_all_ttys',` interface(`term_dontaudit_getattr_all_ttys',` gen_require(` attribute ttynode; @@ -16457,7 +16523,7 @@ index 771bce1..5bbf50b 100644 ') ######################################## -@@ -1377,7 +1538,27 @@ interface(`term_use_all_ttys',` +@@ -1377,7 +1557,27 @@ interface(`term_use_all_ttys',` ') dev_list_all_dev_nodes($1) @@ -16486,7 +16552,7 @@ index 771bce1..5bbf50b 100644 ') ######################################## -@@ -1396,7 +1577,7 @@ interface(`term_dontaudit_use_all_ttys',` +@@ -1396,7 +1596,7 @@ interface(`term_dontaudit_use_all_ttys',` attribute ttynode; ') @@ -16495,7 +16561,7 @@ index 771bce1..5bbf50b 100644 ') ######################################## -@@ -1504,7 +1685,7 @@ interface(`term_use_all_user_ttys',` +@@ -1504,7 +1704,7 @@ interface(`term_use_all_user_ttys',` ## ## ## @@ -16504,7 +16570,7 @@ index 771bce1..5bbf50b 100644 ## ## # -@@ -1512,3 +1693,436 @@ interface(`term_dontaudit_use_all_user_ttys',` +@@ -1512,3 +1712,436 @@ interface(`term_dontaudit_use_all_user_ttys',` refpolicywarn(`$0() is deprecated, use term_dontaudit_use_all_ttys() instead.') term_dontaudit_use_all_ttys($1) ') @@ -17062,7 +17128,7 @@ index 234a940..d340f20 100644 ######################################## ## diff --git a/policy/modules/roles/staff.te b/policy/modules/roles/staff.te -index 5da7870..834a511 100644 +index 5da7870..ac03ca2 100644 --- a/policy/modules/roles/staff.te +++ b/policy/modules/roles/staff.te @@ -8,12 +8,70 @@ policy_module(staff, 2.3.1) @@ -17136,7 +17202,7 @@ index 5da7870..834a511 100644 optional_policy(` apache_role(staff_r, staff_t) ') -@@ -23,11 +81,106 @@ optional_policy(` +@@ -23,11 +81,111 @@ optional_policy(` ') optional_policy(` @@ -17169,6 +17235,11 @@ index 5da7870..834a511 100644 +') + +optional_policy(` ++ docker_stream_connect(staff_t) ++ docker_exec(staff_t) ++') ++ ++optional_policy(` + dmesg_exec(staff_t) +') + @@ -17244,7 +17315,7 @@ index 5da7870..834a511 100644 ') optional_policy(` -@@ -35,15 +188,31 @@ optional_policy(` +@@ -35,15 +193,31 @@ optional_policy(` ') optional_policy(` @@ -17278,7 +17349,7 @@ index 5da7870..834a511 100644 ') optional_policy(` -@@ -52,10 +221,55 @@ optional_policy(` +@@ -52,10 +226,55 @@ optional_policy(` ') optional_policy(` @@ -17334,7 +17405,7 @@ index 5da7870..834a511 100644 xserver_role(staff_r, staff_t) ') -@@ -65,10 +279,6 @@ ifndef(`distro_redhat',` +@@ -65,10 +284,6 @@ ifndef(`distro_redhat',` ') optional_policy(` @@ -17345,7 +17416,7 @@ index 5da7870..834a511 100644 cdrecord_role(staff_r, staff_t) ') -@@ -78,10 +288,6 @@ ifndef(`distro_redhat',` +@@ -78,10 +293,6 @@ ifndef(`distro_redhat',` optional_policy(` dbus_role_template(staff, staff_r, staff_t) @@ -17356,7 +17427,7 @@ index 5da7870..834a511 100644 ') optional_policy(` -@@ -101,10 +307,6 @@ ifndef(`distro_redhat',` +@@ -101,10 +312,6 @@ ifndef(`distro_redhat',` ') optional_policy(` @@ -17367,7 +17438,7 @@ index 5da7870..834a511 100644 java_role(staff_r, staff_t) ') -@@ -125,10 +327,6 @@ ifndef(`distro_redhat',` +@@ -125,10 +332,6 @@ ifndef(`distro_redhat',` ') optional_policy(` @@ -17378,7 +17449,7 @@ index 5da7870..834a511 100644 pyzor_role(staff_r, staff_t) ') -@@ -141,10 +339,6 @@ ifndef(`distro_redhat',` +@@ -141,10 +344,6 @@ ifndef(`distro_redhat',` ') optional_policy(` @@ -17389,7 +17460,7 @@ index 5da7870..834a511 100644 spamassassin_role(staff_r, staff_t) ') -@@ -176,3 +370,22 @@ ifndef(`distro_redhat',` +@@ -176,3 +375,22 @@ ifndef(`distro_redhat',` wireshark_role(staff_r, staff_t) ') ') @@ -18075,10 +18146,10 @@ index 0000000..0e8654b +/usr/sbin/xrdp-sesman -- gen_context(system_u:object_r:unconfined_exec_t,s0) diff --git a/policy/modules/roles/unconfineduser.if b/policy/modules/roles/unconfineduser.if new file mode 100644 -index 0000000..cf6582f +index 0000000..1e950b2 --- /dev/null +++ b/policy/modules/roles/unconfineduser.if -@@ -0,0 +1,613 @@ +@@ -0,0 +1,637 @@ +## Unconfiend user role + +######################################## @@ -18692,6 +18763,30 @@ index 0000000..cf6582f + allow $1 self:tun_socket relabelto; +') + ++######################################## ++## ++## Allow domain to transition to unconfined_t user ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`unconfined_transition',` ++ gen_require(` ++ type unconfined_t; ++ ') ++ ++ domtrans_pattern($1,$2,unconfined_t) ++ allow unconfined_t $2:file entrypoint; ++ allow $1 unconfined_t:process signal_perms; ++') diff --git a/policy/modules/roles/unconfineduser.te b/policy/modules/roles/unconfineduser.te new file mode 100644 index 0000000..f312edf @@ -25425,7 +25520,7 @@ index 3efd5b6..f0151a8 100644 +') + diff --git a/policy/modules/system/authlogin.te b/policy/modules/system/authlogin.te -index 104037e..f263075 100644 +index 104037e..2e237d6 100644 --- a/policy/modules/system/authlogin.te +++ b/policy/modules/system/authlogin.te @@ -5,6 +5,19 @@ policy_module(authlogin, 2.4.2) @@ -25690,17 +25785,36 @@ index 104037e..f263075 100644 files_list_var_lib(nsswitch_domain) # read /etc/nsswitch.conf -@@ -417,15 +447,21 @@ files_read_etc_files(nsswitch_domain) +@@ -417,15 +447,41 @@ files_read_etc_files(nsswitch_domain) sysnet_dns_name_resolve(nsswitch_domain) --tunable_policy(`authlogin_nsswitch_use_ldap',` -- files_list_var_lib(nsswitch_domain) +systemd_hostnamed_read_config(nsswitch_domain) ++ ++tunable_policy(`authlogin_nsswitch_use_ldap',` ++ allow nsswitch_domain self:tcp_socket create_socket_perms; ++') ++ + tunable_policy(`authlogin_nsswitch_use_ldap',` +- files_list_var_lib(nsswitch_domain) ++ corenet_tcp_sendrecv_generic_if(nsswitch_domain) ++ corenet_tcp_sendrecv_generic_node(nsswitch_domain) ++ corenet_tcp_sendrecv_ldap_port(nsswitch_domain) ++ corenet_tcp_connect_ldap_port(nsswitch_domain) ++ corenet_sendrecv_ldap_client_packets(nsswitch_domain) ++') +tunable_policy(`authlogin_nsswitch_use_ldap',` ++ # Support for LDAPS ++ dev_read_rand(nsswitch_domain) ++ # LDAP Configuration using encrypted requires ++ dev_read_urand(nsswitch_domain) ++ sysnet_read_config(nsswitch_domain) ++') ++ ++tunable_policy(`authlogin_nsswitch_use_ldap',` miscfiles_read_generic_certs(nsswitch_domain) - sysnet_use_ldap(nsswitch_domain) +- sysnet_use_ldap(nsswitch_domain) ') optional_policy(` @@ -25711,10 +25825,11 @@ index 104037e..f263075 100644 + +optional_policy(` + tunable_policy(`authlogin_nsswitch_use_ldap',` ++ ldap_read_certs(nsswitch_domain) ldap_stream_connect(nsswitch_domain) ') ') -@@ -438,6 +474,7 @@ optional_policy(` +@@ -438,6 +494,7 @@ optional_policy(` likewise_stream_connect_lsassd(nsswitch_domain) ') @@ -25722,7 +25837,7 @@ index 104037e..f263075 100644 optional_policy(` kerberos_use(nsswitch_domain) ') -@@ -456,6 +493,8 @@ optional_policy(` +@@ -456,6 +513,8 @@ optional_policy(` optional_policy(` sssd_stream_connect(nsswitch_domain) @@ -25731,7 +25846,7 @@ index 104037e..f263075 100644 ') optional_policy(` -@@ -463,3 +502,133 @@ optional_policy(` +@@ -463,3 +522,133 @@ optional_policy(` samba_read_var_files(nsswitch_domain) samba_dontaudit_write_var_files(nsswitch_domain) ') @@ -31822,7 +31937,7 @@ index 58bc27f..51e9872 100644 + allow $1 lvm_var_run_t:fifo_file rw_inherited_fifo_file_perms; +') diff --git a/policy/modules/system/lvm.te b/policy/modules/system/lvm.te -index e8c59a5..d2df072 100644 +index e8c59a5..b22837c 100644 --- a/policy/modules/system/lvm.te +++ b/policy/modules/system/lvm.te @@ -12,6 +12,9 @@ init_daemon_domain(clvmd_t, clvmd_exec_t) @@ -32050,10 +32165,14 @@ index e8c59a5..d2df072 100644 bootloader_rw_tmp_files(lvm_t) ') -@@ -333,14 +374,26 @@ optional_policy(` +@@ -333,14 +374,30 @@ optional_policy(` ') optional_policy(` ++ docker_rw_sem(lvm_t) ++') ++ ++optional_policy(` + livecd_rw_semaphores(lvm_t) +') + @@ -35254,7 +35373,7 @@ index 346a7cc..42a48b6 100644 +/var/run/netns(/.*)? gen_context(system_u:object_r:ifconfig_var_run_t,s0) +/etc/firestarter/firestarter\.sh gen_context(system_u:object_r:dhcpc_helper_exec_t,s0) diff --git a/policy/modules/system/sysnetwork.if b/policy/modules/system/sysnetwork.if -index 6944526..a76e22c 100644 +index 6944526..1714f5b 100644 --- a/policy/modules/system/sysnetwork.if +++ b/policy/modules/system/sysnetwork.if @@ -38,11 +38,30 @@ interface(`sysnet_domtrans_dhcpc',` @@ -35511,17 +35630,21 @@ index 6944526..a76e22c 100644 corenet_tcp_sendrecv_generic_if($1) corenet_tcp_sendrecv_generic_node($1) corenet_tcp_sendrecv_ldap_port($1) -@@ -733,6 +883,9 @@ interface(`sysnet_use_ldap',` +@@ -733,6 +883,13 @@ interface(`sysnet_use_ldap',` dev_read_urand($1) sysnet_read_config($1) + + # LDAP Configuration using encrypted requires + dev_read_urand($1) ++ ++ optional_policy(` ++ ldap_read_certs($1) ++ ') ') ######################################## -@@ -754,7 +907,6 @@ interface(`sysnet_use_portmap',` +@@ -754,7 +911,6 @@ interface(`sysnet_use_portmap',` allow $1 self:udp_socket create_socket_perms; corenet_all_recvfrom_unlabeled($1) @@ -35529,7 +35652,7 @@ index 6944526..a76e22c 100644 corenet_tcp_sendrecv_generic_if($1) corenet_udp_sendrecv_generic_if($1) corenet_tcp_sendrecv_generic_node($1) -@@ -766,3 +918,114 @@ interface(`sysnet_use_portmap',` +@@ -766,3 +922,114 @@ interface(`sysnet_use_portmap',` sysnet_read_config($1) ') @@ -39442,7 +39565,7 @@ index db75976..65191bd 100644 + +/var/run/user(/.*)? gen_context(system_u:object_r:user_tmp_t,s0) diff --git a/policy/modules/system/userdomain.if b/policy/modules/system/userdomain.if -index 3c5dba7..0aa6db0 100644 +index 3c5dba7..a44c781 100644 --- a/policy/modules/system/userdomain.if +++ b/policy/modules/system/userdomain.if @@ -30,9 +30,11 @@ template(`userdom_base_user_template',` @@ -40079,7 +40202,7 @@ index 3c5dba7..0aa6db0 100644 # cjp: some of this probably can be removed selinux_get_fs_mount($1_t) -@@ -546,93 +687,124 @@ template(`userdom_common_user_template',` +@@ -546,93 +687,120 @@ template(`userdom_common_user_template',` selinux_compute_user_contexts($1_t) # for eject @@ -40192,10 +40315,6 @@ index 3c5dba7..0aa6db0 100644 + kde_dbus_chat_backlighthelper($1_usertype) + ') + -+ optional_policy(` -+ memcached_stream_connect($1_usertype) -+ ') -+ + optional_policy(` + modemmanager_dbus_chat($1_usertype) + ') @@ -40242,7 +40361,7 @@ index 3c5dba7..0aa6db0 100644 ') optional_policy(` -@@ -642,23 +814,21 @@ template(`userdom_common_user_template',` +@@ -642,23 +810,21 @@ template(`userdom_common_user_template',` optional_policy(` mpd_manage_user_data_content($1_t) mpd_relabel_user_data_content($1_t) @@ -40271,7 +40390,7 @@ index 3c5dba7..0aa6db0 100644 mysql_stream_connect($1_t) ') ') -@@ -671,7 +841,7 @@ template(`userdom_common_user_template',` +@@ -671,7 +837,7 @@ template(`userdom_common_user_template',` optional_policy(` # to allow monitoring of pcmcia status @@ -40280,7 +40399,7 @@ index 3c5dba7..0aa6db0 100644 ') optional_policy(` -@@ -680,9 +850,9 @@ template(`userdom_common_user_template',` +@@ -680,9 +846,9 @@ template(`userdom_common_user_template',` ') optional_policy(` @@ -40293,7 +40412,7 @@ index 3c5dba7..0aa6db0 100644 ') ') -@@ -693,32 +863,35 @@ template(`userdom_common_user_template',` +@@ -693,32 +859,35 @@ template(`userdom_common_user_template',` ') optional_policy(` @@ -40340,7 +40459,7 @@ index 3c5dba7..0aa6db0 100644 ') ') -@@ -743,17 +916,33 @@ template(`userdom_common_user_template',` +@@ -743,17 +912,33 @@ template(`userdom_common_user_template',` template(`userdom_login_user_template', ` gen_require(` class context contains; @@ -40378,7 +40497,7 @@ index 3c5dba7..0aa6db0 100644 userdom_change_password_template($1) -@@ -761,82 +950,101 @@ template(`userdom_login_user_template', ` +@@ -761,82 +946,101 @@ template(`userdom_login_user_template', ` # # User domain Local policy # @@ -40516,7 +40635,7 @@ index 3c5dba7..0aa6db0 100644 ') ') -@@ -868,6 +1076,12 @@ template(`userdom_restricted_user_template',` +@@ -868,6 +1072,12 @@ template(`userdom_restricted_user_template',` typeattribute $1_t unpriv_userdomain; domain_interactive_fd($1_t) @@ -40529,7 +40648,7 @@ index 3c5dba7..0aa6db0 100644 ############################## # # Local policy -@@ -907,42 +1121,99 @@ template(`userdom_restricted_xwindows_user_template',` +@@ -907,42 +1117,99 @@ template(`userdom_restricted_xwindows_user_template',` # # Local policy # @@ -40618,31 +40737,31 @@ index 3c5dba7..0aa6db0 100644 + consolekit_dontaudit_read_log($1_usertype) + consolekit_dbus_chat($1_usertype) + ') - - optional_policy(` -- consolekit_dbus_chat($1_t) ++ ++ optional_policy(` + cups_dbus_chat($1_usertype) + cups_dbus_chat_config($1_usertype) - ') ++ ') optional_policy(` -- cups_dbus_chat($1_t) +- consolekit_dbus_chat($1_t) + devicekit_dbus_chat($1_usertype) + devicekit_dbus_chat_disk($1_usertype) + devicekit_dbus_chat_power($1_usertype) ') optional_policy(` -- gnome_role_template($1, $1_r, $1_t) +- cups_dbus_chat($1_t) + fprintd_dbus_chat($1_t) -+ ') -+ -+ optional_policy(` + ') + + optional_policy(` +- gnome_role_template($1, $1_r, $1_t) + realmd_dbus_chat($1_t) ') optional_policy(` -@@ -951,12 +1222,29 @@ template(`userdom_restricted_xwindows_user_template',` +@@ -951,12 +1218,29 @@ template(`userdom_restricted_xwindows_user_template',` ') optional_policy(` @@ -40673,7 +40792,7 @@ index 3c5dba7..0aa6db0 100644 ') ####################################### -@@ -990,27 +1278,33 @@ template(`userdom_unpriv_user_template', ` +@@ -990,27 +1274,33 @@ template(`userdom_unpriv_user_template', ` # # Inherit rules for ordinary users. @@ -40711,7 +40830,7 @@ index 3c5dba7..0aa6db0 100644 fs_manage_noxattr_fs_files($1_t) fs_manage_noxattr_fs_dirs($1_t) # Write floppies -@@ -1021,55 +1315,94 @@ template(`userdom_unpriv_user_template', ` +@@ -1021,23 +1311,60 @@ template(`userdom_unpriv_user_template', ` ') ') @@ -40737,46 +40856,20 @@ index 3c5dba7..0aa6db0 100644 + + tunable_policy(`selinuxuser_tcp_server',` + corenet_tcp_bind_all_unreserved_ports($1_usertype) - ') - - optional_policy(` -- netutils_run_ping_cond($1_t, $1_r) -- netutils_run_traceroute_cond($1_t, $1_r) ++ ') ++ ++ optional_policy(` + cdrecord_role($1_r, $1_t) - ') - -- # Run pppd in pppd_t by default for user - optional_policy(` -- ppp_run_cond($1_t, $1_r) ++ ') ++ ++ optional_policy(` + cron_role($1_r, $1_t) - ') - - optional_policy(` -- setroubleshoot_stream_connect($1_t) ++ ') ++ ++ optional_policy(` + games_rw_data($1_usertype) - ') --') - --####################################### --## --## The template for creating an administrative user. --## --## --##

--## This template creates a user domain, types, and --## rules for the user's tty, pty, home directories, --## tmp, and tmpfs files. --##

--##

--## The privileges given to administrative users are: --##

    --##
  • Raw disk access
  • --##
  • Set all sysctls
  • --##
  • All kernel ring buffer controls
  • --##
  • Create, read, write, and delete all files but shadow
  • --##
  • Manage source and binary format SELinux policy
  • --##
  • Run insmod
  • --##
++ ') ++ + optional_policy(` + gpg_role($1_r, $1_usertype) + ') @@ -40798,49 +40891,28 @@ index 3c5dba7..0aa6db0 100644 + + optional_policy(` + wine_role_template($1, $1_r, $1_t) -+ ') -+ -+ optional_policy(` + ') + + optional_policy(` +- netutils_run_ping_cond($1_t, $1_r) +- netutils_run_traceroute_cond($1_t, $1_r) + postfix_run_postdrop($1_t, $1_r) + postfix_search_spool($1_t) -+ ') -+ -+ # Run pppd in pppd_t by default for user -+ optional_policy(` -+ ppp_run_cond($1_t, $1_r) -+ ') -+ -+ optional_policy(` + ') + + # Run pppd in pppd_t by default for user +@@ -1046,7 +1373,9 @@ template(`userdom_unpriv_user_template', ` + ') + + optional_policy(` +- setroubleshoot_stream_connect($1_t) + vdagent_getattr_log($1_t) + vdagent_getattr_exec_files($1_t) + vdagent_stream_connect($1_t) -+ ') -+') -+ -+####################################### -+## -+## The template for creating an administrative user. -+## -+## -+##

-+## This template creates a user domain, types, and -+## rules for the user's tty, pty, home directories, -+## tmp, and tmpfs files. -+##

-+##

-+## The privileges given to administrative users are: -+##

    -+##
  • Raw disk access
  • -+##
  • Set all sysctls
  • -+##
  • All kernel ring buffer controls
  • -+##
  • Create, read, write, and delete all files but shadow
  • -+##
  • Manage source and binary format SELinux policy
  • -+##
  • Run insmod
  • -+##
- ##

- ##
- ## -@@ -1082,7 +1415,7 @@ template(`userdom_unpriv_user_template', ` + ') + ') + +@@ -1082,7 +1411,7 @@ template(`userdom_unpriv_user_template', ` template(`userdom_admin_user_template',` gen_require(` attribute admindomain; @@ -40849,7 +40921,7 @@ index 3c5dba7..0aa6db0 100644 ') ############################## -@@ -1109,6 +1442,7 @@ template(`userdom_admin_user_template',` +@@ -1109,6 +1438,7 @@ template(`userdom_admin_user_template',` # allow $1_t self:capability ~{ sys_module audit_control audit_write }; @@ -40857,7 +40929,7 @@ index 3c5dba7..0aa6db0 100644 allow $1_t self:process { setexec setfscreate }; allow $1_t self:netlink_audit_socket nlmsg_readpriv; allow $1_t self:tun_socket create; -@@ -1117,6 +1451,9 @@ template(`userdom_admin_user_template',` +@@ -1117,6 +1447,9 @@ template(`userdom_admin_user_template',` # Skip authentication when pam_rootok is specified. allow $1_t self:passwd rootok; @@ -40867,7 +40939,7 @@ index 3c5dba7..0aa6db0 100644 kernel_read_software_raid_state($1_t) kernel_getattr_core_if($1_t) kernel_getattr_message_if($1_t) -@@ -1131,6 +1468,7 @@ template(`userdom_admin_user_template',` +@@ -1131,6 +1464,7 @@ template(`userdom_admin_user_template',` kernel_sigstop_unlabeled($1_t) kernel_signull_unlabeled($1_t) kernel_sigchld_unlabeled($1_t) @@ -40875,7 +40947,7 @@ index 3c5dba7..0aa6db0 100644 corenet_tcp_bind_generic_port($1_t) # allow setting up tunnels -@@ -1148,10 +1486,14 @@ template(`userdom_admin_user_template',` +@@ -1148,10 +1482,14 @@ template(`userdom_admin_user_template',` dev_rename_all_blk_files($1_t) dev_rename_all_chr_files($1_t) dev_create_generic_symlinks($1_t) @@ -40890,7 +40962,7 @@ index 3c5dba7..0aa6db0 100644 domain_dontaudit_ptrace_all_domains($1_t) # signal all domains: domain_kill_all_domains($1_t) -@@ -1162,29 +1504,38 @@ template(`userdom_admin_user_template',` +@@ -1162,29 +1500,38 @@ template(`userdom_admin_user_template',` domain_sigchld_all_domains($1_t) # for lsof domain_getattr_all_sockets($1_t) @@ -40933,7 +41005,7 @@ index 3c5dba7..0aa6db0 100644 # The following rule is temporary until such time that a complete # policy management infrastructure is in place so that an administrator -@@ -1194,6 +1545,8 @@ template(`userdom_admin_user_template',` +@@ -1194,6 +1541,8 @@ template(`userdom_admin_user_template',` # But presently necessary for installing the file_contexts file. seutil_manage_bin_policy($1_t) @@ -40942,7 +41014,7 @@ index 3c5dba7..0aa6db0 100644 userdom_manage_user_home_content_dirs($1_t) userdom_manage_user_home_content_files($1_t) userdom_manage_user_home_content_symlinks($1_t) -@@ -1201,13 +1554,17 @@ template(`userdom_admin_user_template',` +@@ -1201,13 +1550,17 @@ template(`userdom_admin_user_template',` userdom_manage_user_home_content_sockets($1_t) userdom_user_home_dir_filetrans_user_home_content($1_t, { dir file lnk_file fifo_file sock_file }) @@ -40961,7 +41033,7 @@ index 3c5dba7..0aa6db0 100644 optional_policy(` postgresql_unconfined($1_t) ') -@@ -1253,6 +1610,8 @@ template(`userdom_security_admin_template',` +@@ -1253,6 +1606,8 @@ template(`userdom_security_admin_template',` dev_relabel_all_dev_nodes($1) files_create_boot_flag($1) @@ -40970,7 +41042,7 @@ index 3c5dba7..0aa6db0 100644 # Necessary for managing /boot/efi fs_manage_dos_files($1) -@@ -1265,8 +1624,10 @@ template(`userdom_security_admin_template',` +@@ -1265,8 +1620,10 @@ template(`userdom_security_admin_template',` selinux_set_enforce_mode($1) selinux_set_all_booleans($1) selinux_set_parameters($1) @@ -40982,7 +41054,7 @@ index 3c5dba7..0aa6db0 100644 auth_relabel_shadow($1) init_exec($1) -@@ -1277,29 +1638,31 @@ template(`userdom_security_admin_template',` +@@ -1277,29 +1634,31 @@ template(`userdom_security_admin_template',` logging_read_audit_config($1) seutil_manage_bin_policy($1) @@ -41025,7 +41097,7 @@ index 3c5dba7..0aa6db0 100644 ') optional_policy(` -@@ -1360,14 +1723,17 @@ interface(`userdom_user_home_content',` +@@ -1360,14 +1719,17 @@ interface(`userdom_user_home_content',` gen_require(` attribute user_home_content_type; type user_home_t; @@ -41044,7 +41116,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -1408,6 +1774,51 @@ interface(`userdom_user_tmpfs_file',` +@@ -1408,6 +1770,51 @@ interface(`userdom_user_tmpfs_file',` ## ## Allow domain to attach to TUN devices created by administrative users. ## @@ -41096,7 +41168,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## Domain allowed access. -@@ -1512,11 +1923,31 @@ interface(`userdom_search_user_home_dirs',` +@@ -1512,11 +1919,31 @@ interface(`userdom_search_user_home_dirs',` ') allow $1 user_home_dir_t:dir search_dir_perms; @@ -41128,7 +41200,7 @@ index 3c5dba7..0aa6db0 100644 ## Do not audit attempts to search user home directories. ## ## -@@ -1558,6 +1989,14 @@ interface(`userdom_list_user_home_dirs',` +@@ -1558,6 +1985,14 @@ interface(`userdom_list_user_home_dirs',` allow $1 user_home_dir_t:dir list_dir_perms; files_search_home($1) @@ -41143,7 +41215,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -1573,9 +2012,11 @@ interface(`userdom_list_user_home_dirs',` +@@ -1573,9 +2008,11 @@ interface(`userdom_list_user_home_dirs',` interface(`userdom_dontaudit_list_user_home_dirs',` gen_require(` type user_home_dir_t; @@ -41155,7 +41227,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -1632,6 +2073,42 @@ interface(`userdom_relabelto_user_home_dirs',` +@@ -1632,6 +2069,42 @@ interface(`userdom_relabelto_user_home_dirs',` allow $1 user_home_dir_t:dir relabelto; ') @@ -41198,7 +41270,7 @@ index 3c5dba7..0aa6db0 100644 ######################################## ## ## Create directories in the home dir root with -@@ -1711,6 +2188,8 @@ interface(`userdom_dontaudit_search_user_home_content',` +@@ -1711,6 +2184,8 @@ interface(`userdom_dontaudit_search_user_home_content',` ') dontaudit $1 user_home_t:dir search_dir_perms; @@ -41207,7 +41279,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -1744,10 +2223,12 @@ interface(`userdom_list_all_user_home_content',` +@@ -1744,10 +2219,12 @@ interface(`userdom_list_all_user_home_content',` # interface(`userdom_list_user_home_content',` gen_require(` @@ -41222,7 +41294,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -1772,7 +2253,25 @@ interface(`userdom_manage_user_home_content_dirs',` +@@ -1772,7 +2249,25 @@ interface(`userdom_manage_user_home_content_dirs',` ######################################## ## @@ -41249,7 +41321,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## -@@ -1782,49 +2281,67 @@ interface(`userdom_manage_user_home_content_dirs',` +@@ -1782,49 +2277,67 @@ interface(`userdom_manage_user_home_content_dirs',` # interface(`userdom_delete_all_user_home_content_dirs',` gen_require(` @@ -41329,7 +41401,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -1848,6 +2365,25 @@ interface(`userdom_dontaudit_setattr_user_home_content_files',` +@@ -1848,6 +2361,25 @@ interface(`userdom_dontaudit_setattr_user_home_content_files',` ######################################## ## @@ -41355,7 +41427,7 @@ index 3c5dba7..0aa6db0 100644 ## Mmap user home files. ## ## -@@ -1878,14 +2414,36 @@ interface(`userdom_mmap_user_home_content_files',` +@@ -1878,14 +2410,36 @@ interface(`userdom_mmap_user_home_content_files',` interface(`userdom_read_user_home_content_files',` gen_require(` type user_home_dir_t, user_home_t; @@ -41393,7 +41465,7 @@ index 3c5dba7..0aa6db0 100644 ## Do not audit attempts to read user home files. ## ## -@@ -1896,11 +2454,14 @@ interface(`userdom_read_user_home_content_files',` +@@ -1896,11 +2450,14 @@ interface(`userdom_read_user_home_content_files',` # interface(`userdom_dontaudit_read_user_home_content_files',` gen_require(` @@ -41411,148 +41483,89 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -1941,7 +2502,7 @@ interface(`userdom_dontaudit_write_user_home_content_files',` +@@ -1941,7 +2498,25 @@ interface(`userdom_dontaudit_write_user_home_content_files',` ######################################## ## -## Delete all user home content files. +## Delete files in a user home subdirectory. - ## - ## - ## -@@ -1949,19 +2510,17 @@ interface(`userdom_dontaudit_write_user_home_content_files',` - ## - ## - # --interface(`userdom_delete_all_user_home_content_files',` ++## ++## ++## ++## Domain allowed access. ++## ++## ++# +interface(`userdom_delete_user_home_content_files',` - gen_require(` -- attribute user_home_content_type; -- type user_home_dir_t; ++ gen_require(` + type user_home_t; - ') - -- userdom_search_user_home_content($1) -- delete_files_pattern($1 { user_home_dir_t user_home_content_type }, user_home_content_type) ++ ') ++ + allow $1 user_home_t:file delete_file_perms; - ') - - ######################################## - ## --## Delete files in a user home subdirectory. ++') ++ ++######################################## ++## +## Delete all files in a user home subdirectory. ## ## ## -@@ -1969,35 +2528,35 @@ interface(`userdom_delete_all_user_home_content_files',` - ## - ## +@@ -1951,17 +2526,15 @@ interface(`userdom_dontaudit_write_user_home_content_files',` # --interface(`userdom_delete_user_home_content_files',` -+interface(`userdom_delete_all_user_home_content_files',` + interface(`userdom_delete_all_user_home_content_files',` gen_require(` -- type user_home_t; +- attribute user_home_content_type; +- type user_home_dir_t; + attribute user_home_type; ') -- allow $1 user_home_t:file delete_file_perms; +- userdom_search_user_home_content($1) +- delete_files_pattern($1 { user_home_dir_t user_home_content_type }, user_home_content_type) + allow $1 user_home_type:file delete_file_perms; ') ######################################## ## --## Do not audit attempts to write user home files. +-## Delete files in a user home subdirectory. +## Delete sock files in a user home subdirectory. ## ## ## --## Domain to not audit. -+## Domain allowed access. +@@ -1969,12 +2542,48 @@ interface(`userdom_delete_all_user_home_content_files',` ## ## # --interface(`userdom_dontaudit_relabel_user_home_content_files',` +-interface(`userdom_delete_user_home_content_files',` +interface(`userdom_delete_user_home_content_sock_files',` gen_require(` type user_home_t; ') -- dontaudit $1 user_home_t:file relabel_file_perms; +- allow $1 user_home_t:file delete_file_perms; + allow $1 user_home_t:sock_file delete_file_perms; - ') - - ######################################## - ## --## Read user home subdirectory symbolic links. -+## Delete all sock files in a user home subdirectory. - ## - ## - ## -@@ -2005,45 +2564,92 @@ interface(`userdom_dontaudit_relabel_user_home_content_files',` - ## - ## - # --interface(`userdom_read_user_home_content_symlinks',` -+interface(`userdom_delete_all_user_home_content_sock_files',` - gen_require(` -- type user_home_dir_t, user_home_t; -+ attribute user_home_type; - ') - -- read_lnk_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t) -- files_search_home($1) -+ allow $1 user_home_type:sock_file delete_file_perms; - ') - - ######################################## - ## --## Execute user home files. -+## Delete all files in a user home subdirectory. - ## - ## - ## - ## Domain allowed access. - ## - ## --## - # --interface(`userdom_exec_user_home_content_files',` -+interface(`userdom_delete_all_user_home_content',` - gen_require(` -- type user_home_dir_t, user_home_t; -+ attribute user_home_type; - ') - -- files_search_home($1) -- exec_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t) -+ allow $1 user_home_type:dir_file_class_set delete_file_perms; +') - -- tunable_policy(`use_nfs_home_dirs',` -- fs_exec_nfs_files($1) ++ +######################################## +## -+## Do not audit attempts to write user home files. ++## Delete all sock files in a user home subdirectory. +## +## +## -+## Domain to not audit. ++## Domain allowed access. +## +## +# -+interface(`userdom_dontaudit_relabel_user_home_content_files',` ++interface(`userdom_delete_all_user_home_content_sock_files',` + gen_require(` -+ type user_home_t; - ') - -- tunable_policy(`use_samba_home_dirs',` -- fs_exec_cifs_files($1) -+ dontaudit $1 user_home_t:file relabel_file_perms; ++ attribute user_home_type; ++ ') ++ ++ allow $1 user_home_type:sock_file delete_file_perms; +') + +######################################## +## -+## Read user home subdirectory symbolic links. ++## Delete all files in a user home subdirectory. +## +## +## @@ -41560,42 +41573,51 @@ index 3c5dba7..0aa6db0 100644 +## +## +# -+interface(`userdom_read_user_home_content_symlinks',` ++interface(`userdom_delete_all_user_home_content',` + gen_require(` -+ type user_home_dir_t, user_home_t; - ') ++ attribute user_home_type; ++ ') + ++ allow $1 user_home_type:dir_file_class_set delete_file_perms; + ') + + ######################################## +@@ -2010,8 +2619,7 @@ interface(`userdom_read_user_home_content_symlinks',` + type user_home_dir_t, user_home_t; + ') + +- read_lnk_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t) +- files_search_home($1) + allow $1 { user_home_dir_t user_home_t }:lnk_file read_lnk_file_perms; ') ######################################## - ## -+## Execute user home files. -+## -+## -+## -+## Domain allowed access. -+## -+## -+## -+# -+interface(`userdom_exec_user_home_content_files',` -+ gen_require(` +@@ -2027,20 +2635,14 @@ interface(`userdom_read_user_home_content_symlinks',` + # + interface(`userdom_exec_user_home_content_files',` + gen_require(` +- type user_home_dir_t, user_home_t; + type user_home_dir_t; + attribute user_home_type; -+ ') -+ -+ files_search_home($1) + ') + + files_search_home($1) +- exec_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t) +- +- tunable_policy(`use_nfs_home_dirs',` +- fs_exec_nfs_files($1) +- ') +- +- tunable_policy(`use_samba_home_dirs',` +- fs_exec_cifs_files($1) + exec_files_pattern($1, { user_home_dir_t user_home_type }, user_home_type) + dontaudit $1 user_home_type:sock_file execute; -+ ') -+ -+######################################## -+## - ## Do not audit attempts to execute user home files. - ## - ## -@@ -2123,7 +2729,7 @@ interface(`userdom_manage_user_home_content_symlinks',` + ') +-') + + ######################################## + ## +@@ -2123,7 +2725,7 @@ interface(`userdom_manage_user_home_content_symlinks',` ######################################## ## @@ -41604,7 +41626,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## -@@ -2131,19 +2737,17 @@ interface(`userdom_manage_user_home_content_symlinks',` +@@ -2131,19 +2733,17 @@ interface(`userdom_manage_user_home_content_symlinks',` ## ## # @@ -41628,7 +41650,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## -@@ -2151,12 +2755,12 @@ interface(`userdom_delete_all_user_home_content_symlinks',` +@@ -2151,12 +2751,12 @@ interface(`userdom_delete_all_user_home_content_symlinks',` ## ## # @@ -41644,7 +41666,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -2393,11 +2997,11 @@ interface(`userdom_dontaudit_manage_user_tmp_dirs',` +@@ -2393,11 +2993,11 @@ interface(`userdom_dontaudit_manage_user_tmp_dirs',` # interface(`userdom_read_user_tmp_files',` gen_require(` @@ -41659,7 +41681,7 @@ index 3c5dba7..0aa6db0 100644 files_search_tmp($1) ') -@@ -2417,7 +3021,7 @@ interface(`userdom_dontaudit_read_user_tmp_files',` +@@ -2417,7 +3017,7 @@ interface(`userdom_dontaudit_read_user_tmp_files',` type user_tmp_t; ') @@ -41668,7 +41690,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -2664,6 +3268,25 @@ interface(`userdom_tmp_filetrans_user_tmp',` +@@ -2664,6 +3264,25 @@ interface(`userdom_tmp_filetrans_user_tmp',` files_tmp_filetrans($1, user_tmp_t, $2, $3) ') @@ -41694,7 +41716,7 @@ index 3c5dba7..0aa6db0 100644 ######################################## ## ## Read user tmpfs files. -@@ -2680,13 +3303,14 @@ interface(`userdom_read_user_tmpfs_files',` +@@ -2680,13 +3299,14 @@ interface(`userdom_read_user_tmpfs_files',` ') read_files_pattern($1, user_tmpfs_t, user_tmpfs_t) @@ -41710,7 +41732,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## -@@ -2707,7 +3331,7 @@ interface(`userdom_rw_user_tmpfs_files',` +@@ -2707,7 +3327,7 @@ interface(`userdom_rw_user_tmpfs_files',` ######################################## ## @@ -41719,7 +41741,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## -@@ -2715,14 +3339,30 @@ interface(`userdom_rw_user_tmpfs_files',` +@@ -2715,14 +3335,30 @@ interface(`userdom_rw_user_tmpfs_files',` ## ## # @@ -41754,7 +41776,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -2817,6 +3457,24 @@ interface(`userdom_use_user_ttys',` +@@ -2817,6 +3453,24 @@ interface(`userdom_use_user_ttys',` ######################################## ## @@ -41779,7 +41801,7 @@ index 3c5dba7..0aa6db0 100644 ## Read and write a user domain pty. ## ## -@@ -2835,22 +3493,34 @@ interface(`userdom_use_user_ptys',` +@@ -2835,22 +3489,34 @@ interface(`userdom_use_user_ptys',` ######################################## ## @@ -41822,7 +41844,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## -@@ -2859,14 +3529,33 @@ interface(`userdom_use_user_ptys',` +@@ -2859,14 +3525,33 @@ interface(`userdom_use_user_ptys',` ## ## # @@ -41860,7 +41882,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -2885,8 +3574,27 @@ interface(`userdom_dontaudit_use_user_terminals',` +@@ -2885,8 +3570,27 @@ interface(`userdom_dontaudit_use_user_terminals',` type user_tty_device_t, user_devpts_t; ') @@ -41890,7 +41912,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -2958,69 +3666,68 @@ interface(`userdom_spec_domtrans_unpriv_users',` +@@ -2958,69 +3662,68 @@ interface(`userdom_spec_domtrans_unpriv_users',` allow unpriv_userdomain $1:process sigchld; ') @@ -41991,7 +42013,7 @@ index 3c5dba7..0aa6db0 100644 ## ## ## -@@ -3028,12 +3735,12 @@ interface(`userdom_manage_unpriv_user_semaphores',` +@@ -3028,12 +3731,12 @@ interface(`userdom_manage_unpriv_user_semaphores',` ## ## # @@ -42006,7 +42028,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -3097,7 +3804,7 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` +@@ -3097,7 +3800,7 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` domain_entry_file_spec_domtrans($1, unpriv_userdomain) allow unpriv_userdomain $1:fd use; @@ -42015,7 +42037,7 @@ index 3c5dba7..0aa6db0 100644 allow unpriv_userdomain $1:process sigchld; ') -@@ -3113,29 +3820,13 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` +@@ -3113,29 +3816,13 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',` # interface(`userdom_search_user_home_content',` gen_require(` @@ -42049,7 +42071,7 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -3217,7 +3908,25 @@ interface(`userdom_dontaudit_use_user_ptys',` +@@ -3217,7 +3904,25 @@ interface(`userdom_dontaudit_use_user_ptys',` type user_devpts_t; ') @@ -42076,67 +42098,18 @@ index 3c5dba7..0aa6db0 100644 ') ######################################## -@@ -3272,12 +3981,13 @@ interface(`userdom_write_user_tmp_files',` +@@ -3272,7 +3977,83 @@ interface(`userdom_write_user_tmp_files',` type user_tmp_t; ') - allow $1 user_tmp_t:file write_file_perms; + write_files_pattern($1, user_tmp_t, user_tmp_t) - ') - - ######################################## - ## --## Do not audit attempts to use user ttys. ++') ++ ++######################################## ++## +## Do not audit attempts to write users +## temporary files. - ## - ## - ## -@@ -3285,36 +3995,112 @@ interface(`userdom_write_user_tmp_files',` - ## - ## - # --interface(`userdom_dontaudit_use_user_ttys',` -+interface(`userdom_dontaudit_write_user_tmp_files',` - gen_require(` -- type user_tty_device_t; -+ type user_tmp_t; - ') - -- dontaudit $1 user_tty_device_t:chr_file rw_file_perms; -+ dontaudit $1 user_tmp_t:file write; - ') - - ######################################## - ## --## Read the process state of all user domains. -+## Do not audit attempts to delete users -+## temporary files. - ## - ## - ## --## Domain allowed access. -+## Domain to not audit. - ## - ## - # --interface(`userdom_read_all_users_state',` -+interface(`userdom_dontaudit_delete_user_tmp_files',` - gen_require(` -- attribute userdomain; -+ type user_tmp_t; - ') - -- read_files_pattern($1, userdomain, userdomain) -- kernel_search_proc($1) -+ dontaudit $1 user_tmp_t:file delete_file_perms; - ') - - ######################################## - ## --## Get the attributes of all user domains. -+## Do not audit attempts to read/write users -+## temporary fifo files. +## +## +## @@ -42144,36 +42117,37 @@ index 3c5dba7..0aa6db0 100644 +## +## +# -+interface(`userdom_dontaudit_rw_user_tmp_pipes',` ++interface(`userdom_dontaudit_write_user_tmp_files',` + gen_require(` + type user_tmp_t; + ') + -+ dontaudit $1 user_tmp_t:fifo_file rw_inherited_fifo_file_perms; ++ dontaudit $1 user_tmp_t:file write; +') + +######################################## +## -+## Allow domain to read/write inherited users -+## fifo files. ++## Do not audit attempts to delete users ++## temporary files. +## +## +## -+## Domain allowed access. ++## Domain to not audit. +## +## +# -+interface(`userdom_rw_inherited_user_pipes',` ++interface(`userdom_dontaudit_delete_user_tmp_files',` + gen_require(` -+ attribute userdomain; ++ type user_tmp_t; + ') + -+ allow $1 userdomain:fifo_file rw_inherited_fifo_file_perms; ++ dontaudit $1 user_tmp_t:file delete_file_perms; +') + +######################################## +## -+## Do not audit attempts to use user ttys. ++## Do not audit attempts to read/write users ++## temporary fifo files. +## +## +## @@ -42181,17 +42155,18 @@ index 3c5dba7..0aa6db0 100644 +## +## +# -+interface(`userdom_dontaudit_use_user_ttys',` ++interface(`userdom_dontaudit_rw_user_tmp_pipes',` + gen_require(` -+ type user_tty_device_t; ++ type user_tmp_t; + ') + -+ dontaudit $1 user_tty_device_t:chr_file rw_inherited_file_perms; ++ dontaudit $1 user_tmp_t:fifo_file rw_inherited_fifo_file_perms; +') + +######################################## +## -+## Read the process state of all user domains. ++## Allow domain to read/write inherited users ++## fifo files. +## +## +## @@ -42199,47 +42174,108 @@ index 3c5dba7..0aa6db0 100644 +## +## +# -+interface(`userdom_read_all_users_state',` ++interface(`userdom_rw_inherited_user_pipes',` + gen_require(` + attribute userdomain; + ') + -+ read_files_pattern($1, userdomain, userdomain) ++ allow $1 userdomain:fifo_file rw_inherited_fifo_file_perms; + ') + + ######################################## +@@ -3290,7 +4071,7 @@ interface(`userdom_dontaudit_use_user_ttys',` + type user_tty_device_t; + ') + +- dontaudit $1 user_tty_device_t:chr_file rw_file_perms; ++ dontaudit $1 user_tty_device_t:chr_file rw_inherited_file_perms; + ') + + ######################################## +@@ -3309,6 +4090,7 @@ interface(`userdom_read_all_users_state',` + ') + + read_files_pattern($1, userdomain, userdomain) + read_lnk_files_pattern($1,userdomain,userdomain) -+ kernel_search_proc($1) -+') -+ -+######################################## -+## -+## Get the attributes of all user domains. - ## - ## - ## -@@ -3385,6 +4171,42 @@ interface(`userdom_signal_all_users',` + kernel_search_proc($1) + ') + +@@ -3385,27 +4167,27 @@ interface(`userdom_signal_all_users',` allow $1 userdomain:process signal; ') +-######################################## +####################################### -+## + ## +-## Send a SIGCHLD signal to all user domains. +## Send signull to all user domains. -+## -+## + ## + ## +-## +-## Domain allowed access. +-## +## +## Domain allowed access. +## -+## -+# + ## + # +-interface(`userdom_sigchld_all_users',` +- gen_require(` +- attribute userdomain; +- ') +interface(`userdom_signull_all_users',` + gen_require(` + attribute userdomain; + ') -+ + +- allow $1 userdomain:process sigchld; + allow $1 userdomain:process signull; + ') + + ######################################## + ## +-## Create keys for all user domains. ++## Send kill signals to all user domains. + ## + ## + ## +@@ -3413,17 +4195,17 @@ interface(`userdom_sigchld_all_users',` + ## + ## + # +-interface(`userdom_create_all_users_keys',` ++interface(`userdom_kill_all_users',` + gen_require(` + attribute userdomain; + ') + +- allow $1 userdomain:key create; ++ allow $1 userdomain:process sigkill; + ') + + ######################################## + ## +-## Send a dbus message to all user domains. ++## Send a SIGCHLD signal to all user domains. + ## + ## + ## +@@ -3431,11 +4213,1552 @@ interface(`userdom_create_all_users_keys',` + ## + ## + # +-interface(`userdom_dbus_send_all_users',` ++interface(`userdom_sigchld_all_users',` ++ gen_require(` ++ attribute userdomain; ++ ') ++ ++ allow $1 userdomain:process sigchld; +') + +######################################## +## -+## Send kill signals to all user domains. ++## Read keys for all user domains. +## +## +## @@ -42247,22 +42283,17 @@ index 3c5dba7..0aa6db0 100644 +## +## +# -+interface(`userdom_kill_all_users',` ++interface(`userdom_read_all_users_keys',` + gen_require(` + attribute userdomain; + ') + -+ allow $1 userdomain:process sigkill; ++ allow $1 userdomain:key read; +') + - ######################################## - ## - ## Send a SIGCHLD signal to all user domains. -@@ -3405,6 +4227,24 @@ interface(`userdom_sigchld_all_users',` - - ######################################## - ## -+## Read keys for all user domains. ++######################################## ++## ++## Create keys for all user domains. +## +## +## @@ -42270,20 +42301,28 @@ index 3c5dba7..0aa6db0 100644 +## +## +# -+interface(`userdom_read_all_users_keys',` ++interface(`userdom_create_all_users_keys',` + gen_require(` + attribute userdomain; + ') + -+ allow $1 userdomain:key read; ++ allow $1 userdomain:key create; +') + +######################################## +## - ## Create keys for all user domains. - ## - ## -@@ -3438,4 +4278,1491 @@ interface(`userdom_dbus_send_all_users',` ++## Send a dbus message to all user domains. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`userdom_dbus_send_all_users',` + gen_require(` + attribute userdomain; + class dbus send_msg; ') allow $1 userdomain:dbus send_msg; diff --git a/policy-f19-contrib.patch b/policy-f19-contrib.patch index daa3ee0..95f8e9b 100644 --- a/policy-f19-contrib.patch +++ b/policy-f19-contrib.patch @@ -7021,7 +7021,7 @@ index f3c0aba..b6afc90 100644 + allow $1 apcupsd_unit_file_t:service all_service_perms; ') diff --git a/apcupsd.te b/apcupsd.te -index b236327..3128e78 100644 +index b236327..a26255d 100644 --- a/apcupsd.te +++ b/apcupsd.te @@ -24,6 +24,9 @@ files_tmp_file(apcupsd_tmp_t) @@ -7061,7 +7061,7 @@ index b236327..3128e78 100644 corenet_udp_bind_snmp_port(apcupsd_t) corenet_sendrecv_snmp_server_packets(apcupsd_t) -@@ -74,19 +75,25 @@ corenet_udp_sendrecv_snmp_port(apcupsd_t) +@@ -74,19 +75,24 @@ corenet_udp_sendrecv_snmp_port(apcupsd_t) dev_rw_generic_usb_dev(apcupsd_t) @@ -7069,8 +7069,8 @@ index b236327..3128e78 100644 files_manage_etc_runtime_files(apcupsd_t) files_etc_filetrans_etc_runtime(apcupsd_t, file, "nologin") - term_use_unallocated_ttys(apcupsd_t) -+term_use_usb_ttys(apcupsd_t) +-term_use_unallocated_ttys(apcupsd_t) ++term_use_all_terms(apcupsd_t) -logging_send_syslog_msg(apcupsd_t) +#apcupsd runs shutdown, probably need a shutdown domain @@ -7091,7 +7091,7 @@ index b236327..3128e78 100644 optional_policy(` hostname_exec(apcupsd_t) -@@ -112,7 +119,6 @@ optional_policy(` +@@ -112,7 +118,6 @@ optional_policy(` allow httpd_apcupsd_cgi_script_t self:tcp_socket create_stream_socket_perms; allow httpd_apcupsd_cgi_script_t self:udp_socket create_socket_perms; @@ -11032,10 +11032,10 @@ index 0000000..5977d96 +') diff --git a/chrome.te b/chrome.te new file mode 100644 -index 0000000..307b083 +index 0000000..66d3c1f --- /dev/null +++ b/chrome.te -@@ -0,0 +1,242 @@ +@@ -0,0 +1,243 @@ +policy_module(chrome,1.0.0) + +######################################## @@ -11164,6 +11164,7 @@ index 0000000..307b083 +userdom_manage_home_certs(chrome_sandbox_t) + +optional_policy(` ++ gnome_exec_config_home_files(chrome_sandbox_t) + gnome_rw_inherited_config(chrome_sandbox_t) + gnome_read_home_config(chrome_sandbox_t) + gnome_cache_filetrans(chrome_sandbox_t, chrome_sandbox_home_t, dir, "chromium") @@ -20615,7 +20616,7 @@ index c697edb..31d45bf 100644 + allow $1 dhcpd_unit_file_t:service all_service_perms; ') diff --git a/dhcp.te b/dhcp.te -index c93c3db..cdb4d60 100644 +index c93c3db..e97c711 100644 --- a/dhcp.te +++ b/dhcp.te @@ -20,6 +20,9 @@ init_daemon_domain(dhcpd_t, dhcpd_exec_t) @@ -20644,7 +20645,7 @@ index c93c3db..cdb4d60 100644 files_read_etc_runtime_files(dhcpd_t) files_search_var_lib(dhcpd_t) -@@ -102,8 +103,6 @@ auth_use_nsswitch(dhcpd_t) +@@ -102,22 +103,41 @@ auth_use_nsswitch(dhcpd_t) logging_send_syslog_msg(dhcpd_t) @@ -20653,14 +20654,29 @@ index c93c3db..cdb4d60 100644 sysnet_read_dhcp_config(dhcpd_t) userdom_dontaudit_use_unpriv_user_fds(dhcpd_t) -@@ -113,11 +112,20 @@ tunable_policy(`dhcpd_use_ldap',` - sysnet_use_ldap(dhcpd_t) - ') + userdom_dontaudit_search_user_home_dirs(dhcpd_t) -+ifdef(`distro_gentoo',` -+ allow dhcpd_t self:capability { chown dac_override setgid setuid sys_chroot }; + tunable_policy(`dhcpd_use_ldap',` +- sysnet_use_ldap(dhcpd_t) ++ allow dhcpd_t self:tcp_socket create_socket_perms; ++') ++ ++tunable_policy(`dhcpd_use_ldap',` ++ corenet_tcp_sendrecv_generic_if(dhcpd_t) ++ corenet_tcp_sendrecv_generic_node(dhcpd_t) ++ corenet_tcp_sendrecv_ldap_port(dhcpd_t) ++ corenet_tcp_connect_ldap_port(dhcpd_t) ++ corenet_sendrecv_ldap_client_packets(dhcpd_t) +') + ++tunable_policy(`dhcpd_use_ldap',` ++ ldap_read_certs(dhcpd_t) ++') ++ ++ifdef(`distro_gentoo',` ++ allow dhcpd_t self:capability { chown dac_override setgid setuid sys_chroot }; + ') + optional_policy(` + # used for dynamic DNS bind_read_dnssec_keys(dhcpd_t) @@ -22138,6 +22154,678 @@ index ef36d73..fddd51f 100644 sysnet_dns_name_resolve(dnssec_triggerd_t) sysnet_manage_config(dnssec_triggerd_t) sysnet_etc_filetrans_config(dnssec_triggerd_t) +diff --git a/docker.fc b/docker.fc +new file mode 100644 +index 0000000..1c4ac02 +--- /dev/null ++++ b/docker.fc +@@ -0,0 +1,17 @@ ++/usr/bin/docker -- gen_context(system_u:object_r:docker_exec_t,s0) ++ ++/usr/lib/systemd/system/docker.service -- gen_context(system_u:object_r:docker_unit_file_t,s0) ++ ++/var/lib/docker(/.*)? gen_context(system_u:object_r:docker_var_lib_t,s0) ++ ++/var/run/docker\.pid -- gen_context(system_u:object_r:docker_var_run_t,s0) ++/var/run/docker\.sock -s gen_context(system_u:object_r:docker_var_run_t,s0) ++ ++/var/lock/lxc(/.*)? gen_context(system_u:object_r:docker_lock_t,s0) ++ ++/var/log/lxc(/.*)? gen_context(system_u:object_r:docker_log_t,s0) ++ ++/var/lib/docker/init(/.*)? gen_context(system_u:object_r:docker_share_t,s0) ++/var/lib/docker/containers/.*/hosts gen_context(system_u:object_r:docker_share_t,s0) ++/var/lib/docker/containers/.*/hostname gen_context(system_u:object_r:docker_share_t,s0) ++/var/lib/docker/.*/config\.env gen_context(system_u:object_r:docker_share_t,s0) +diff --git a/docker.if b/docker.if +new file mode 100644 +index 0000000..683dfdc +--- /dev/null ++++ b/docker.if +@@ -0,0 +1,363 @@ ++ ++## The open-source application container engine. ++ ++######################################## ++## ++## Execute docker in the docker domain. ++## ++## ++## ++## Domain allowed to transition. ++## ++## ++# ++interface(`docker_domtrans',` ++ gen_require(` ++ type docker_t, docker_exec_t; ++ ') ++ ++ corecmd_search_bin($1) ++ domtrans_pattern($1, docker_exec_t, docker_t) ++') ++ ++######################################## ++## ++## Execute docker in the caller domain. ++## ++## ++## ++## Domain allowed to transition. ++## ++## ++# ++interface(`docker_exec',` ++ gen_require(` ++ type docker_exec_t; ++ ') ++ ++ corecmd_search_bin($1) ++ can_exec($1, docker_exec_t) ++') ++ ++######################################## ++## ++## Search docker lib directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_search_lib',` ++ gen_require(` ++ type docker_var_lib_t; ++ ') ++ ++ allow $1 docker_var_lib_t:dir search_dir_perms; ++ files_search_var_lib($1) ++') ++ ++######################################## ++## ++## Execute docker lib directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_exec_lib',` ++ gen_require(` ++ type docker_var_lib_t; ++ ') ++ ++ allow $1 docker_var_lib_t:dir search_dir_perms; ++ can_exec($1, docker_var_lib_t) ++') ++ ++######################################## ++## ++## Read docker lib files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_read_lib_files',` ++ gen_require(` ++ type docker_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ read_files_pattern($1, docker_var_lib_t, docker_var_lib_t) ++') ++ ++######################################## ++## ++## Read docker share files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_read_share_files',` ++ gen_require(` ++ type docker_share_t; ++ ') ++ ++ files_search_var_lib($1) ++ read_files_pattern($1, docker_share_t, docker_share_t) ++') ++ ++######################################## ++## ++## Manage docker lib files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_manage_lib_files',` ++ gen_require(` ++ type docker_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ manage_files_pattern($1, docker_var_lib_t, docker_var_lib_t) ++ manage_lnk_files_pattern($1, docker_var_lib_t, docker_var_lib_t) ++') ++ ++######################################## ++## ++## Manage docker lib directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_manage_lib_dirs',` ++ gen_require(` ++ type docker_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ manage_dirs_pattern($1, docker_var_lib_t, docker_var_lib_t) ++') ++ ++######################################## ++## ++## Create objects in a docker var lib 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(`docker_lib_filetrans',` ++ gen_require(` ++ type docker_var_lib_t; ++ ') ++ ++ filetrans_pattern($1, docker_var_lib_t, $2, $3, $4) ++') ++ ++######################################## ++## ++## Read docker PID files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_read_pid_files',` ++ gen_require(` ++ type docker_var_run_t; ++ ') ++ ++ files_search_pids($1) ++ read_files_pattern($1, docker_var_run_t, docker_var_run_t) ++') ++ ++######################################## ++## ++## Execute docker server in the docker domain. ++## ++## ++## ++## Domain allowed to transition. ++## ++## ++# ++interface(`docker_systemctl',` ++ gen_require(` ++ type docker_t; ++ type docker_unit_file_t; ++ ') ++ ++ systemd_exec_systemctl($1) ++ systemd_read_fifo_file_passwd_run($1) ++ allow $1 docker_unit_file_t:file read_file_perms; ++ allow $1 docker_unit_file_t:service manage_service_perms; ++ ++ ps_process_pattern($1, docker_t) ++') ++ ++######################################## ++## ++## Read and write docker shared memory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_rw_sem',` ++ gen_require(` ++ type docker_t; ++ ') ++ ++ allow $1 docker_t:sem rw_sem_perms; ++') ++ ++####################################### ++## ++## Read and write the docker pty type. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_use_ptys',` ++ gen_require(` ++ type docker_devpts_t; ++ ') ++ ++ allow $1 docker_devpts_t:chr_file rw_term_perms; ++') ++ ++####################################### ++## ++## Allow domain to create docker content ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_filetrans_named_content',` ++ ++ gen_require(` ++ type docker_var_lib_t; ++ type docker_share_t; ++ type docker_log_t; ++ type docker_var_run_t; ++ ') ++ ++ files_pid_filetrans($1, docker_var_run_t, file, "docker.pid") ++ files_pid_filetrans($1, docker_var_run_t, sock_file, "docker.sock") ++ logging_log_filetrans($1, docker_log_t, dir, "lxc") ++ files_var_lib_filetrans($1, docker_var_lib_t, dir, "docker") ++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "config.env") ++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "hosts") ++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "hostname") ++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, dir, "init") ++') ++ ++######################################## ++## ++## Connect to docker over a unix stream socket. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_stream_connect',` ++ gen_require(` ++ type docker_t, docker_var_run_t; ++ ') ++ ++ files_search_pids($1) ++ stream_connect_pattern($1, docker_var_run_t, docker_var_run_t, docker_t) ++') ++ ++ ++######################################## ++## ++## All of the rules required to administrate ++## an docker environment ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`docker_admin',` ++ gen_require(` ++ type docker_t; ++ type docker_var_lib_t, docker_var_run_t; ++ type docker_unit_file_t; ++ type docker_lock_t; ++ type docker_log_t; ++ ') ++ ++ allow $1 docker_t:process { ptrace signal_perms }; ++ ps_process_pattern($1, docker_t) ++ ++ files_search_var_lib($1) ++ admin_pattern($1, docker_var_lib_t) ++ ++ files_search_pids($1) ++ admin_pattern($1, docker_var_run_t) ++ ++ files_search_locks($1) ++ admin_pattern($1, docker_lock_t) ++ ++ logging_search_logs($1) ++ admin_pattern($1, docker_log_t) ++ ++ docker_systemctl($1) ++ admin_pattern($1, docker_unit_file_t) ++ allow $1 docker_unit_file_t:service all_service_perms; ++ ++ optional_policy(` ++ systemd_passwd_agent_exec($1) ++ systemd_read_fifo_file_passwd_run($1) ++ ') ++') +diff --git a/docker.te b/docker.te +new file mode 100644 +index 0000000..73e71c1 +--- /dev/null ++++ b/docker.te +@@ -0,0 +1,274 @@ ++policy_module(docker, 1.0.0) ++ ++######################################## ++# ++# Declarations ++# ++ ++## ++##

++## Determine whether docker can ++## connect to all TCP ports. ++##

++##
++gen_tunable(docker_connect_any, false) ++ ++## ++##

++## Allow docker to transition to unconfined containers. ++##

++##
++gen_tunable(docker_transition_unconfined, false) ++ ++type docker_t; ++type docker_exec_t; ++init_daemon_domain(docker_t, docker_exec_t) ++domain_subj_id_change_exemption(docker_t) ++domain_role_change_exemption(docker_t) ++ ++type docker_var_lib_t; ++files_type(docker_var_lib_t) ++ ++type docker_lock_t; ++files_lock_file(docker_lock_t) ++ ++type docker_log_t; ++logging_log_file(docker_log_t) ++ ++type docker_tmp_t; ++files_tmp_file(docker_tmp_t) ++ ++type docker_tmpfs_t; ++files_tmpfs_file(docker_tmpfs_t) ++ ++type docker_var_run_t; ++files_pid_file(docker_var_run_t) ++ ++type docker_unit_file_t; ++systemd_unit_file(docker_unit_file_t) ++ ++type docker_devpts_t; ++term_pty(docker_devpts_t) ++ ++type docker_share_t; ++files_type(docker_share_t) ++ ++######################################## ++# ++# docker local policy ++# ++allow docker_t self:capability { chown fowner fsetid mknod net_admin net_bind_service }; ++allow docker_t self:process { getattr signal_perms }; ++allow docker_t self:fifo_file rw_fifo_file_perms; ++allow docker_t self:unix_stream_socket create_stream_socket_perms; ++allow docker_t self:tcp_socket create_stream_socket_perms; ++allow docker_t self:udp_socket create_socket_perms; ++allow docker_t self:capability2 block_suspend; ++ ++manage_dirs_pattern(docker_t, docker_lock_t, docker_lock_t) ++manage_files_pattern(docker_t, docker_lock_t, docker_lock_t) ++files_lock_filetrans(docker_t, docker_lock_t, { dir file }, "lxc") ++ ++manage_dirs_pattern(docker_t, docker_log_t, docker_log_t) ++manage_files_pattern(docker_t, docker_log_t, docker_log_t) ++manage_lnk_files_pattern(docker_t, docker_log_t, docker_log_t) ++logging_log_filetrans(docker_t, docker_log_t, { dir file lnk_file }) ++ ++manage_dirs_pattern(docker_t, docker_tmp_t, docker_tmp_t) ++manage_files_pattern(docker_t, docker_tmp_t, docker_tmp_t) ++manage_lnk_files_pattern(docker_t, docker_tmp_t, docker_tmp_t) ++files_tmp_filetrans(docker_t, docker_tmp_t, { dir file lnk_file }) ++ ++manage_dirs_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t) ++manage_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t) ++manage_lnk_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t) ++manage_fifo_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t) ++manage_chr_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t) ++fs_tmpfs_filetrans(docker_t, docker_tmpfs_t, { dir file }) ++ ++manage_dirs_pattern(docker_t, docker_share_t, docker_share_t) ++manage_files_pattern(docker_t, docker_share_t, docker_share_t) ++manage_lnk_files_pattern(docker_t, docker_share_t, docker_share_t) ++can_exec(docker_t, docker_share_t) ++docker_filetrans_named_content(docker_t) ++ ++manage_dirs_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) ++manage_chr_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) ++manage_blk_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) ++manage_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) ++manage_lnk_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) ++allow docker_t docker_var_lib_t:dir_file_class_set { relabelfrom relabelto }; ++files_var_lib_filetrans(docker_t, docker_var_lib_t, { dir file lnk_file }) ++ ++manage_dirs_pattern(docker_t, docker_var_run_t, docker_var_run_t) ++manage_files_pattern(docker_t, docker_var_run_t, docker_var_run_t) ++manage_sock_files_pattern(docker_t, docker_var_run_t, docker_var_run_t) ++manage_lnk_files_pattern(docker_t, docker_var_run_t, docker_var_run_t) ++files_pid_filetrans(docker_t, docker_var_run_t, { dir file lnk_file sock_file }) ++ ++allow docker_t docker_devpts_t:chr_file { rw_chr_file_perms setattr_chr_file_perms }; ++term_create_pty(docker_t, docker_devpts_t) ++ ++kernel_read_system_state(docker_t) ++kernel_read_network_state(docker_t) ++kernel_read_all_sysctls(docker_t) ++kernel_rw_net_sysctls(docker_t) ++ ++domain_use_interactive_fds(docker_t) ++ ++corecmd_exec_bin(docker_t) ++corecmd_exec_shell(docker_t) ++ ++corenet_tcp_bind_generic_node(docker_t) ++corenet_tcp_sendrecv_generic_if(docker_t) ++corenet_tcp_sendrecv_generic_node(docker_t) ++corenet_tcp_sendrecv_generic_port(docker_t) ++corenet_tcp_bind_all_ports(docker_t) ++corenet_tcp_connect_http_port(docker_t) ++corenet_tcp_connect_commplex_main_port(docker_t) ++corenet_udp_sendrecv_generic_if(docker_t) ++corenet_udp_sendrecv_generic_node(docker_t) ++corenet_udp_sendrecv_all_ports(docker_t) ++corenet_udp_bind_generic_node(docker_t) ++corenet_udp_bind_all_ports(docker_t) ++ ++files_read_etc_files(docker_t) ++ ++fs_read_cgroup_files(docker_t) ++fs_read_tmpfs_symlinks(docker_t) ++fs_getattr_all_fs(docker_t) ++ ++storage_raw_rw_fixed_disk(docker_t) ++ ++auth_use_nsswitch(docker_t) ++ ++init_read_state(docker_t) ++init_status(docker_t) ++ ++logging_send_audit_msgs(docker_t) ++logging_send_syslog_msg(docker_t) ++ ++miscfiles_read_localization(docker_t) ++ ++mount_domtrans(docker_t) ++ ++seutil_read_default_contexts(docker_t) ++ ++sysnet_dns_name_resolve(docker_t) ++sysnet_exec_ifconfig(docker_t) ++ ++optional_policy(` ++ fstools_domtrans(docker_t) ++') ++ ++optional_policy(` ++ iptables_domtrans(docker_t) ++') ++ ++# ++# lxc rules ++# ++ ++allow docker_t self:capability { dac_override setgid setpcap setuid sys_admin sys_boot sys_chroot sys_ptrace }; ++ ++allow docker_t self:process { getcap setcap setexec setpgid setsched signal_perms }; ++ ++allow docker_t self:netlink_route_socket rw_netlink_socket_perms;; ++allow docker_t self:netlink_audit_socket create_netlink_socket_perms; ++allow docker_t self:unix_dgram_socket { create_socket_perms sendto }; ++allow docker_t self:unix_stream_socket { create_stream_socket_perms connectto }; ++ ++allow docker_t docker_var_lib_t:dir mounton; ++allow docker_t docker_var_lib_t:chr_file mounton; ++can_exec(docker_t, docker_var_lib_t) ++ ++kernel_setsched(docker_t) ++kernel_get_sysvipc_info(docker_t) ++kernel_request_load_module(docker_t) ++kernel_mounton_messages(docker_t) ++ ++dev_getattr_all_blk_files(docker_t) ++dev_getattr_sysfs_fs(docker_t) ++dev_read_urand(docker_t) ++dev_read_lvm_control(docker_t) ++dev_read_sysfs(docker_t) ++dev_rw_loop_control(docker_t) ++dev_rw_lvm_control(docker_t) ++ ++files_getattr_isid_type_dirs(docker_t) ++files_manage_isid_type_dirs(docker_t) ++files_manage_isid_type_files(docker_t) ++files_manage_isid_type_symlinks(docker_t) ++files_manage_isid_type_chr_files(docker_t) ++files_manage_isid_type_blk_files(docker_t) ++files_exec_isid_files(docker_t) ++files_mounton_isid(docker_t) ++files_mounton_non_security(docker_t) ++files_mounton_isid_type_chr_file(docker_t) ++ ++fs_mount_all_fs(docker_t) ++fs_unmount_all_fs(docker_t) ++fs_remount_all_fs(docker_t) ++files_mounton_isid(docker_t) ++fs_manage_cgroup_dirs(docker_t) ++fs_manage_cgroup_files(docker_t) ++fs_relabelfrom_xattr_fs(docker_t) ++fs_relabelfrom_tmpfs(docker_t) ++ ++term_use_generic_ptys(docker_t) ++term_use_ptmx(docker_t) ++term_getattr_pty_fs(docker_t) ++term_relabel_pty_fs(docker_t) ++term_mounton_unallocated_ttys(docker_t) ++ ++modutils_domtrans_insmod(docker_t) ++ ++systemd_status_all_unit_files(docker_t) ++systemd_start_systemd_services(docker_t) ++ ++userdom_stream_connect(docker_t) ++userdom_search_user_home_content(docker_t) ++ ++optional_policy(` ++ dbus_system_bus_client(docker_t) ++ init_dbus_chat(docker_t) ++ ++ optional_policy(` ++ systemd_dbus_chat_logind(docker_t) ++ ') ++') ++ ++optional_policy(` ++ udev_read_db(docker_t) ++') ++ ++optional_policy(` ++ virt_read_config(docker_t) ++ virt_exec(docker_t) ++ virt_stream_connect(docker_t) ++ virt_stream_connect_sandbox(docker_t) ++ virt_exec_sandbox_files(docker_t) ++ virt_manage_sandbox_files(docker_t) ++ virt_relabel_sandbox_filesystem(docker_t) ++ # for lxc ++ virt_transition_svirt_sandbox(docker_t, system_r) ++ virt_mounton_sandbox_file(docker_t) ++') ++ ++tunable_policy(`docker_connect_any',` ++ corenet_tcp_connect_all_ports(docker_t) ++ corenet_sendrecv_all_packets(docker_t) ++ corenet_tcp_sendrecv_all_ports(docker_t) ++') ++ ++optional_policy(` ++ tunable_policy(`docker_transition_unconfined',` ++ unconfined_transition(docker_t, docker_share_t) ++ unconfined_transition(docker_t, docker_var_lib_t) ++ ') ++') ++ ++optional_policy(` ++ unconfined_domain(docker_t) ++') ++ diff --git a/dovecot.fc b/dovecot.fc index c880070..4448055 100644 --- a/dovecot.fc @@ -26362,7 +27050,7 @@ index e39de43..4c8113b 100644 +/usr/libexec/gnome-system-monitor-mechanism -- gen_context(system_u:object_r:gnomesystemmm_exec_t,s0) +/usr/libexec/kde(3|4)/ksysguardprocesslist_helper -- gen_context(system_u:object_r:gnomesystemmm_exec_t,s0) diff --git a/gnome.if b/gnome.if -index d03fd43..fdf1f36 100644 +index d03fd43..e7a9729 100644 --- a/gnome.if +++ b/gnome.if @@ -1,123 +1,157 @@ @@ -27447,7 +28135,7 @@ index d03fd43..fdf1f36 100644 ##
## ## -@@ -704,12 +799,851 @@ interface(`gnome_stream_connect_gkeyringd',` +@@ -704,12 +799,869 @@ interface(`gnome_stream_connect_gkeyringd',` ## ## # @@ -27904,6 +28592,24 @@ index d03fd43..fdf1f36 100644 + can_exec($1, gstreamer_home_t) +') + ++###################################### ++## ++## Allow to execute config home content files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`gnome_exec_config_home_files',` ++ gen_require(` ++ type config_home_t; ++ ') ++ ++ can_exec($1, config_home_t) ++') ++ +####################################### +## +## file name transition gstreamer home content files. @@ -91240,7 +91946,7 @@ index c30da4c..459fbcf 100644 + +/var/log/qemu-ga\.log -- gen_context(system_u:object_r:virt_qemu_ga_log_t,s0) diff --git a/virt.if b/virt.if -index 9dec06c..73549fd 100644 +index 9dec06c..abf93cf 100644 --- a/virt.if +++ b/virt.if @@ -1,120 +1,51 @@ @@ -92255,7 +92961,7 @@ index 9dec06c..73549fd 100644 ## ## ## -@@ -860,94 +658,189 @@ interface(`virt_read_lib_files',` +@@ -860,74 +658,170 @@ interface(`virt_read_lib_files',` ## ## # @@ -92442,97 +93148,99 @@ index 9dec06c..73549fd 100644 + ') ') - ######################################## +-######################################## ++####################################### ## -## Append virt log files. -+## Do not audit attempts to write virt daemon unnamed pipes. ++## Execute Sandbox Files ## ## ## --## Domain allowed access. -+## Domain to not audit. +@@ -935,19 +829,17 @@ interface(`virt_read_log',` ## ## # -interface(`virt_append_log',` -+interface(`virt_dontaudit_write_pipes',` ++interface(`virt_exec_sandbox_files',` gen_require(` - type virt_log_t; -+ type virtd_t; ++ type svirt_sandbox_file_t; ') - logging_search_logs($1) - append_files_pattern($1, virt_log_t, virt_log_t) -+ dontaudit $1 virtd_t:fd use; -+ dontaudit $1 virtd_t:fifo_file write_fifo_file_perms; ++ can_exec($1, svirt_sandbox_file_t) ') - ######################################## +-######################################## ++####################################### ## -## Create, read, write, and delete -## virt log files. -+## Send a sigkill to virtual machines ++## Relabel Sandbox File systems ## ## ## -@@ -955,20 +848,17 @@ interface(`virt_append_log',` +@@ -955,20 +847,17 @@ interface(`virt_append_log',` ## ## # -interface(`virt_manage_log',` -+interface(`virt_kill_svirt',` ++interface(`virt_relabel_sandbox_filesystem',` gen_require(` - type virt_log_t; -+ attribute virt_domain; ++ type svirt_sandbox_file_t; ') - logging_search_logs($1) - manage_dirs_pattern($1, virt_log_t, virt_log_t) - manage_files_pattern($1, virt_log_t, virt_log_t) - manage_lnk_files_pattern($1, virt_log_t, virt_log_t) -+ allow $1 virt_domain:process sigkill; ++ allow $1 svirt_sandbox_file_t:filesystem { relabelfrom relabelto }; ') - ######################################## +-######################################## ++####################################### ## -## Search virt image directories. -+## Send a sigkill to virtd daemon. ++## Mounton Sandbox Files ## ## ## -@@ -976,18 +866,17 @@ interface(`virt_manage_log',` +@@ -976,55 +865,72 @@ interface(`virt_manage_log',` ## ## # -interface(`virt_search_images',` -+interface(`virt_kill',` ++interface(`virt_mounton_sandbox_file',` gen_require(` - attribute virt_image_type; -+ type virtd_t; ++ type svirt_sandbox_file_t; ') - virt_search_lib($1) - allow $1 virt_image_type:dir search_dir_perms; -+ allow $1 virtd_t:process sigkill; ++ allow $1 svirt_sandbox_file_t:dir_file_class_set mounton; ') ######################################## ## -## Read virt image files. -+## Send a signal to virtual machines ++## Do not audit attempts to write virt daemon unnamed pipes. ## ## ## -@@ -995,73 +884,75 @@ interface(`virt_search_images',` +-## Domain allowed access. ++## Domain to not audit. ## ## # -interface(`virt_read_images',` -+interface(`virt_signal_svirt',` ++interface(`virt_dontaudit_write_pipes',` gen_require(` - type virt_var_lib_t; - attribute virt_image_type; -+ attribute virt_domain; ++ type virtd_t; ') - virt_search_lib($1) @@ -92541,7 +93249,8 @@ index 9dec06c..73549fd 100644 - read_files_pattern($1, virt_image_type, virt_image_type) - read_lnk_files_pattern($1, virt_image_type, virt_image_type) - read_blk_files_pattern($1, virt_image_type, virt_image_type) -+ allow $1 virt_domain:process signal; ++ dontaudit $1 virtd_t:fd use; ++ dontaudit $1 virtd_t:fifo_file write_fifo_file_perms; +') - tunable_policy(`virt_use_nfs',` @@ -92550,7 +93259,7 @@ index 9dec06c..73549fd 100644 - fs_read_nfs_symlinks($1) +######################################## +## -+## Manage virt home files. ++## Send a sigkill to virtual machines +## +## +## @@ -92558,82 +93267,133 @@ index 9dec06c..73549fd 100644 +## +## +# -+interface(`virt_manage_home_files',` ++interface(`virt_kill_svirt',` + gen_require(` -+ type virt_home_t; ++ attribute virt_domain; ') - tunable_policy(`virt_use_samba',` - fs_list_cifs($1) - fs_read_cifs_files($1) - fs_read_cifs_symlinks($1) -- ') -+ userdom_search_user_home_dirs($1) -+ manage_files_pattern($1, virt_home_t, virt_home_t) ++ allow $1 virt_domain:process sigkill; ++') ++ ++######################################## ++## ++## Send a sigkill to virtd daemon. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`virt_kill',` ++ gen_require(` ++ type virtd_t; + ') ++ ++ allow $1 virtd_t:process sigkill; ') ######################################## ## -## Read and write all virt image -## character files. -+## allow domain to read -+## virt tmpfs files ++## Send a signal to virtual machines ## ## ## --## Domain allowed access. -+## Domain allowed access +@@ -1032,20 +938,17 @@ interface(`virt_read_images',` ## ## # -interface(`virt_rw_all_image_chr_files',` -+interface(`virt_read_tmpfs_files',` ++interface(`virt_signal_svirt',` gen_require(` - attribute virt_image_type; -+ attribute virt_tmpfs_type; ++ attribute virt_domain; ') - virt_search_lib($1) - allow $1 virt_image_type:dir list_dir_perms; - rw_chr_files_pattern($1, virt_image_type, virt_image_type) -+ allow $1 virt_tmpfs_type:file read_file_perms; ++ allow $1 virt_domain:process signal; ') ######################################## ## -## Create, read, write, and delete -## svirt cache files. -+## allow domain to manage -+## virt tmpfs files ++## Manage virt home files. ## ## ## --## Domain allowed access. -+## Domain allowed access +@@ -1053,15 +956,57 @@ interface(`virt_rw_all_image_chr_files',` ## ## # -interface(`virt_manage_svirt_cache',` - refpolicywarn(`$0($*) has been deprecated, use virt_manage_virt_cache() instead.') - virt_manage_virt_cache($1) -+interface(`virt_manage_tmpfs_files',` ++interface(`virt_manage_home_files',` + gen_require(` -+ attribute virt_tmpfs_type; ++ type virt_home_t; + ') + -+ allow $1 virt_tmpfs_type:file manage_file_perms; ++ userdom_search_user_home_dirs($1) ++ manage_files_pattern($1, virt_home_t, virt_home_t) ') ######################################## ## -## Create, read, write, and delete -## virt cache content. ++## allow domain to read ++## virt tmpfs files ++## ++## ++## ++## Domain allowed access ++## ++## ++# ++interface(`virt_read_tmpfs_files',` ++ gen_require(` ++ attribute virt_tmpfs_type; ++ ') ++ ++ allow $1 virt_tmpfs_type:file read_file_perms; ++') ++ ++######################################## ++## ++## allow domain to manage ++## virt tmpfs files ++## ++## ++## ++## Domain allowed access ++## ++## ++# ++interface(`virt_manage_tmpfs_files',` ++ gen_require(` ++ attribute virt_tmpfs_type; ++ ') ++ ++ allow $1 virt_tmpfs_type:file manage_file_perms; ++') ++ ++######################################## ++## +## Create .virt directory in the user home directory +## with an correct label. ## ## ## -@@ -1069,21 +960,28 @@ interface(`virt_manage_svirt_cache',` +@@ -1069,21 +1014,28 @@ interface(`virt_manage_svirt_cache',` ## ## # @@ -92670,7 +93430,7 @@ index 9dec06c..73549fd 100644 ##
## ## -@@ -1091,36 +989,148 @@ interface(`virt_manage_virt_cache',` +@@ -1091,36 +1043,148 @@ interface(`virt_manage_virt_cache',` ## ## # @@ -92737,13 +93497,15 @@ index 9dec06c..73549fd 100644 +template(`virt_sandbox_domain',` + gen_require(` + attribute svirt_sandbox_domain; -+ ') + ') + + typeattribute $1 svirt_sandbox_domain; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## All of the rules required to +-## administrate an virt environment. +## Execute a qemu_exec_t in the callers domain +## +## @@ -92823,21 +93585,19 @@ index 9dec06c..73549fd 100644 +interface(`virt_rw_svirt_dev',` + gen_require(` + type svirt_image_t; - ') ++ ') + + allow $1 svirt_image_t:chr_file rw_file_perms; - ') - - ######################################## - ## --## All of the rules required to --## administrate an virt environment. ++') ++ ++######################################## ++## +## All of the rules required to administrate +## an virt environment ## ## ## -@@ -1136,50 +1146,36 @@ interface(`virt_manage_images',` +@@ -1136,50 +1200,59 @@ interface(`virt_manage_images',` # interface(`virt_admin',` gen_require(` @@ -92876,16 +93636,20 @@ index 9dec06c..73549fd 100644 - fs_search_tmpfs($1) - admin_pattern($1, virt_tmpfs_type) -- ++ allow $1 virt_domain:process signal_perms; + - files_search_tmp($1) - admin_pattern($1, { virt_tmp_type virt_tmp_t }) -- ++ admin_pattern($1, virt_file_type) ++ admin_pattern($1, svirt_file_type) + - files_search_etc($1) - admin_pattern($1, { virt_etc_t virt_etc_rw_t }) - - logging_search_logs($1) - admin_pattern($1, virt_log_t) -+ allow $1 virt_domain:process signal_perms; ++ virt_systemctl($1) ++ allow $1 virtd_unit_file_t:service all_service_perms; - files_search_pids($1) - admin_pattern($1, { virt_var_run_t virtd_lxc_var_run_t svirt_var_run_t }) @@ -92895,22 +93659,39 @@ index 9dec06c..73549fd 100644 - - files_search_var_lib($1) - admin_pattern($1, { virt_image_type virt_var_lib_t svirt_lxc_file_t }) -+ admin_pattern($1, virt_file_type) -+ admin_pattern($1, svirt_file_type) ++ virt_stream_connect_sandbox($1) ++ virt_stream_connect_svirt($1) ++ virt_stream_connect($1) ++') - files_search_locks($1) - admin_pattern($1, virt_lock_t) -+ virt_systemctl($1) -+ allow $1 virtd_unit_file_t:service all_service_perms; ++####################################### ++## ++## Manage Sandbox Files ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`virt_manage_sandbox_files',` ++ gen_require(` ++ type svirt_sandbox_file_t; ++ ') - dev_list_all_dev_nodes($1) - allow $1 virt_ptynode:chr_file rw_term_perms; -+ virt_stream_connect_sandbox($1) -+ virt_stream_connect_svirt($1) -+ virt_stream_connect($1) ++ manage_dirs_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t) ++ manage_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t) ++ manage_fifo_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t) ++ manage_chr_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t) ++ manage_lnk_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t) ') ++ diff --git a/virt.te b/virt.te -index 1f22fba..9c0c607 100644 +index 1f22fba..8644981 100644 --- a/virt.te +++ b/virt.te @@ -1,147 +1,166 @@ @@ -93732,7 +94513,7 @@ index 1f22fba..9c0c607 100644 fs_manage_cifs_files(virtd_t) fs_read_cifs_symlinks(virtd_t) ') -@@ -658,20 +510,12 @@ optional_policy(` +@@ -658,19 +510,15 @@ optional_policy(` ') optional_policy(` @@ -93743,17 +94524,20 @@ index 1f22fba..9c0c607 100644 hal_dbus_chat(virtd_t) ') - optional_policy(` - networkmanager_dbus_chat(virtd_t) - ') -- - optional_policy(` -- policykit_dbus_chat(virtd_t) +- networkmanager_dbus_chat(virtd_t) - ') ++optional_policy(` ++ docker_exec_lib(virtd_lxc_t) ++') + + optional_policy(` +- policykit_dbus_chat(virtd_t) ++ networkmanager_dbus_chat(virtd_t) + ') ') - optional_policy(` -@@ -684,14 +528,20 @@ optional_policy(` +@@ -684,14 +532,20 @@ optional_policy(` dnsmasq_kill(virtd_t) dnsmasq_signull(virtd_t) dnsmasq_create_pid_dirs(virtd_t) @@ -93776,7 +94560,7 @@ index 1f22fba..9c0c607 100644 iptables_manage_config(virtd_t) ') -@@ -704,11 +554,13 @@ optional_policy(` +@@ -704,11 +558,13 @@ optional_policy(` ') optional_policy(` @@ -93790,7 +94574,7 @@ index 1f22fba..9c0c607 100644 policykit_domtrans_auth(virtd_t) policykit_domtrans_resolve(virtd_t) policykit_read_lib(virtd_t) -@@ -719,10 +571,18 @@ optional_policy(` +@@ -719,10 +575,18 @@ optional_policy(` ') optional_policy(` @@ -93809,7 +94593,7 @@ index 1f22fba..9c0c607 100644 kernel_read_xen_state(virtd_t) kernel_write_xen_state(virtd_t) -@@ -737,44 +597,264 @@ optional_policy(` +@@ -737,44 +601,264 @@ optional_policy(` udev_read_db(virtd_t) ') @@ -93907,7 +94691,7 @@ index 1f22fba..9c0c607 100644 -can_exec(virsh_t, virsh_exec_t) +append_files_pattern(virt_domain, virt_log_t, virt_log_t) - ++ +append_files_pattern(virt_domain, virt_var_lib_t, virt_var_lib_t) + +corecmd_exec_bin(virt_domain) @@ -93965,7 +94749,7 @@ index 1f22fba..9c0c607 100644 +tunable_policy(`virt_use_execmem',` + allow virt_domain self:process { execmem execstack }; +') -+ + +optional_policy(` + alsa_read_rw_config(virt_domain) +') @@ -94096,7 +94880,7 @@ index 1f22fba..9c0c607 100644 kernel_read_system_state(virsh_t) kernel_read_network_state(virsh_t) kernel_read_kernel_sysctls(virsh_t) -@@ -785,25 +865,18 @@ kernel_write_xen_state(virsh_t) +@@ -785,25 +869,18 @@ kernel_write_xen_state(virsh_t) corecmd_exec_bin(virsh_t) corecmd_exec_shell(virsh_t) @@ -94123,7 +94907,7 @@ index 1f22fba..9c0c607 100644 fs_getattr_all_fs(virsh_t) fs_manage_xenfs_dirs(virsh_t) -@@ -812,24 +885,22 @@ fs_search_auto_mountpoints(virsh_t) +@@ -812,24 +889,22 @@ fs_search_auto_mountpoints(virsh_t) storage_raw_read_fixed_disk(virsh_t) @@ -94155,7 +94939,7 @@ index 1f22fba..9c0c607 100644 tunable_policy(`virt_use_nfs',` fs_manage_nfs_dirs(virsh_t) fs_manage_nfs_files(virsh_t) -@@ -847,14 +918,20 @@ optional_policy(` +@@ -847,14 +922,20 @@ optional_policy(` ') optional_policy(` @@ -94177,7 +94961,7 @@ index 1f22fba..9c0c607 100644 xen_stream_connect(virsh_t) xen_stream_connect_xenstore(virsh_t) ') -@@ -879,49 +956,65 @@ optional_policy(` +@@ -879,49 +960,65 @@ optional_policy(` kernel_read_xen_state(virsh_ssh_t) kernel_write_xen_state(virsh_ssh_t) @@ -94261,7 +95045,7 @@ index 1f22fba..9c0c607 100644 corecmd_exec_bin(virtd_lxc_t) corecmd_exec_shell(virtd_lxc_t) -@@ -933,17 +1026,16 @@ dev_read_urand(virtd_lxc_t) +@@ -933,17 +1030,16 @@ dev_read_urand(virtd_lxc_t) domain_use_interactive_fds(virtd_lxc_t) @@ -94281,7 +95065,7 @@ index 1f22fba..9c0c607 100644 fs_getattr_all_fs(virtd_lxc_t) fs_manage_tmpfs_dirs(virtd_lxc_t) fs_manage_tmpfs_chr_files(virtd_lxc_t) -@@ -955,8 +1047,23 @@ fs_rw_cgroup_files(virtd_lxc_t) +@@ -955,8 +1051,23 @@ fs_rw_cgroup_files(virtd_lxc_t) fs_unmount_all_fs(virtd_lxc_t) fs_relabelfrom_tmpfs(virtd_lxc_t) @@ -94305,7 +95089,7 @@ index 1f22fba..9c0c607 100644 selinux_get_enforce_mode(virtd_lxc_t) selinux_get_fs_mount(virtd_lxc_t) selinux_validate_context(virtd_lxc_t) -@@ -965,194 +1072,254 @@ selinux_compute_create_context(virtd_lxc_t) +@@ -965,194 +1076,263 @@ selinux_compute_create_context(virtd_lxc_t) selinux_compute_relabel_context(virtd_lxc_t) selinux_compute_user_contexts(virtd_lxc_t) @@ -94433,11 +95217,6 @@ index 1f22fba..9c0c607 100644 +userdom_use_inherited_user_terminals(svirt_sandbox_domain) +userdom_dontaudit_append_inherited_admin_home_file(svirt_sandbox_domain) +userdom_dontaudit_read_inherited_admin_home_files(svirt_sandbox_domain) -+ -+optional_policy(` -+ apache_exec_modules(svirt_sandbox_domain) -+ apache_read_sys_content(svirt_sandbox_domain) -+') -allow svirt_lxc_domain self:capability { kill setuid setgid dac_override sys_boot }; -allow svirt_lxc_domain self:process { execstack execmem getattr signal_perms getsched setsched setcap setpgid }; @@ -94522,21 +95301,35 @@ index 1f22fba..9c0c607 100644 - -mta_dontaudit_read_spool_symlinks(svirt_lxc_domain) +optional_policy(` -+ mta_dontaudit_read_spool_symlinks(svirt_sandbox_domain) -+') -+ -+optional_policy(` -+ ssh_use_ptys(svirt_sandbox_domain) ++ apache_exec_modules(svirt_sandbox_domain) ++ apache_read_sys_content(svirt_sandbox_domain) +') optional_policy(` - udev_read_pid_files(svirt_lxc_domain) -+ udev_read_pid_files(svirt_sandbox_domain) ++ docker_manage_lib_files(svirt_lxc_net_t) ++ docker_manage_lib_dirs(svirt_lxc_net_t) ++ docker_read_share_files(svirt_sandbox_domain) ++ docker_exec_lib(svirt_sandbox_domain) ++ docker_lib_filetrans(svirt_sandbox_domain,svirt_sandbox_file_t, sock_file) ++ docker_use_ptys(svirt_sandbox_domain) ') optional_policy(` - apache_exec_modules(svirt_lxc_domain) - apache_read_sys_content(svirt_lxc_domain) ++ mta_dontaudit_read_spool_symlinks(svirt_sandbox_domain) ++') ++ ++optional_policy(` ++ ssh_use_ptys(svirt_sandbox_domain) ++') ++ ++optional_policy(` ++ udev_read_pid_files(svirt_sandbox_domain) ++') ++ ++optional_policy(` + userhelper_dontaudit_write_config(svirt_sandbox_domain) ') @@ -94649,7 +95442,8 @@ index 1f22fba..9c0c607 100644 +dev_getattr_mtrr_dev(svirt_qemu_net_t) +dev_read_rand(svirt_qemu_net_t) +dev_read_urand(svirt_qemu_net_t) -+ + +-allow svirt_prot_exec_t self:process { execmem execstack }; +corenet_tcp_bind_generic_node(svirt_qemu_net_t) +corenet_udp_bind_generic_node(svirt_qemu_net_t) +corenet_tcp_sendrecv_all_ports(svirt_qemu_net_t) @@ -94659,8 +95453,7 @@ index 1f22fba..9c0c607 100644 +corenet_tcp_connect_all_ports(svirt_qemu_net_t) + +files_read_kernel_modules(svirt_qemu_net_t) - --allow svirt_prot_exec_t self:process { execmem execstack }; ++ +fs_noxattr_type(svirt_sandbox_file_t) +fs_mount_cgroup(svirt_qemu_net_t) +fs_manage_cgroup_dirs(svirt_qemu_net_t) @@ -94690,7 +95483,7 @@ index 1f22fba..9c0c607 100644 allow virt_qmf_t self:tcp_socket create_stream_socket_perms; allow virt_qmf_t self:netlink_route_socket create_netlink_socket_perms; -@@ -1165,12 +1332,12 @@ dev_read_sysfs(virt_qmf_t) +@@ -1165,12 +1345,12 @@ dev_read_sysfs(virt_qmf_t) dev_read_rand(virt_qmf_t) dev_read_urand(virt_qmf_t) @@ -94705,7 +95498,7 @@ index 1f22fba..9c0c607 100644 sysnet_read_config(virt_qmf_t) optional_policy(` -@@ -1183,9 +1350,8 @@ optional_policy(` +@@ -1183,9 +1363,8 @@ optional_policy(` ######################################## # @@ -94716,7 +95509,7 @@ index 1f22fba..9c0c607 100644 allow virt_bridgehelper_t self:process { setcap getcap }; allow virt_bridgehelper_t self:capability { setpcap setgid setuid net_admin }; allow virt_bridgehelper_t self:tcp_socket create_stream_socket_perms; -@@ -1198,5 +1364,124 @@ kernel_read_network_state(virt_bridgehelper_t) +@@ -1198,5 +1377,124 @@ kernel_read_network_state(virt_bridgehelper_t) corenet_rw_tun_tap_dev(virt_bridgehelper_t) diff --git a/selinux-policy.spec b/selinux-policy.spec index 8379f37..bf2b84e 100644 --- a/selinux-policy.spec +++ b/selinux-policy.spec @@ -19,7 +19,7 @@ Summary: SELinux policy configuration Name: selinux-policy Version: 3.12.1 -Release: 74.27%{?dist} +Release: 74.28%{?dist} License: GPLv2+ Group: System Environment/Base Source: serefpolicy-%{version}.tgz @@ -542,6 +542,12 @@ SELinux Reference policy mls base module. %endif %changelog +* Thu Jun 19 2014 Lukas Vrabec 3.12.1-74.28 +- Added docker policy +- Allow chrome_sandbox to execute config_home_t +- apcupsd will send a wall message to all terminals telling the system is about to go down +- If you use ldap you should be able to read certs + * Wed May 14 2014 Miroslav Grepl 3.12.1-74.27 - Add missing dyntransition for sandbox_x_domain