diff --git a/docker-selinux.tgz b/docker-selinux.tgz index 05cb417..07d7238 100644 Binary files a/docker-selinux.tgz and b/docker-selinux.tgz differ diff --git a/policy-rawhide-base.patch b/policy-rawhide-base.patch index 6f97c6e..0a4879b 100644 --- a/policy-rawhide-base.patch +++ b/policy-rawhide-base.patch @@ -3867,7 +3867,7 @@ index 33e0f8d..b94f32f 100644 +/usr/lib/ruby/gems/.*/agents(/.*)? gen_context(system_u:object_r:bin_t,s0) +/usr/lib/virtualbox/VBoxManage -- gen_context(system_u:object_r:bin_t,s0) diff --git a/policy/modules/kernel/corecommands.if b/policy/modules/kernel/corecommands.if -index 9e9263a..77e6c8c 100644 +index 9e9263a..f0aef3e 100644 --- a/policy/modules/kernel/corecommands.if +++ b/policy/modules/kernel/corecommands.if @@ -8,6 +8,22 @@ @@ -4042,32 +4042,58 @@ index 9e9263a..77e6c8c 100644 ') read_lnk_files_pattern($1, bin_t, bin_t) -@@ -954,6 +1008,24 @@ interface(`corecmd_exec_chroot',` +@@ -954,28 +1008,25 @@ interface(`corecmd_exec_chroot',` ######################################## ## +-## Get the attributes of all executable files. +## Do not audit attempts to access check executable files. -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## +-## + # +-interface(`corecmd_getattr_all_executables',` +interface(`corecmd_dontaudit_access_all_executables',` -+ gen_require(` -+ attribute exec_type; -+ ') -+ + gen_require(` + attribute exec_type; +- type bin_t; + ') + +- allow $1 bin_t:dir list_dir_perms; +- getattr_files_pattern($1, bin_t, exec_type) + dontaudit $1 exec_type:file audit_access; -+') -+ -+######################################## -+## - ## Get the attributes of all executable files. + ') + + ######################################## + ## +-## Read all executable files. ++## Get the attributes of all executable files. ## ## -@@ -1012,6 +1084,10 @@ interface(`corecmd_exec_all_executables',` + ## +@@ -984,12 +1035,14 @@ interface(`corecmd_getattr_all_executables',` + ## + ## + # +-interface(`corecmd_read_all_executables',` ++interface(`corecmd_getattr_all_executables',` + gen_require(` + attribute exec_type; ++ type bin_t; + ') + +- read_files_pattern($1, exec_type, exec_type) ++ allow $1 bin_t:dir list_dir_perms; ++ getattr_files_pattern($1, bin_t, exec_type) + ') + + ######################################## +@@ -1012,6 +1065,10 @@ interface(`corecmd_exec_all_executables',` can_exec($1, exec_type) list_dirs_pattern($1, bin_t, bin_t) read_lnk_files_pattern($1, bin_t, exec_type) @@ -4078,7 +4104,7 @@ index 9e9263a..77e6c8c 100644 ') ######################################## -@@ -1049,6 +1125,7 @@ interface(`corecmd_manage_all_executables',` +@@ -1049,6 +1106,7 @@ interface(`corecmd_manage_all_executables',` type bin_t; ') @@ -4086,13 +4112,51 @@ index 9e9263a..77e6c8c 100644 manage_files_pattern($1, bin_t, exec_type) manage_lnk_files_pattern($1, bin_t, bin_t) ') -@@ -1091,3 +1168,36 @@ interface(`corecmd_mmap_all_executables',` +@@ -1091,3 +1149,74 @@ interface(`corecmd_mmap_all_executables',` mmap_files_pattern($1, bin_t, exec_type) ') + +######################################## +## ++## Read all executable files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`corecmd_read_all_executables',` ++ gen_require(` ++ attribute exec_type; ++ ') ++ ++ read_files_pattern($1, exec_type, exec_type) ++') ++ ++######################################## ++## ++## Read all executable files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`corecmd_entrypoint_all_executables',` ++ gen_require(` ++ attribute exec_type; ++ ') ++ ++ allow $1 exec_type:file entrypoint; ++') ++ ++######################################## ++## +## Create objects in the /bin directory +## +## @@ -5709,7 +5773,7 @@ index 8e0f9cd..b9f45b9 100644 define(`create_packet_interfaces',`` diff --git a/policy/modules/kernel/corenetwork.te.in b/policy/modules/kernel/corenetwork.te.in -index b191055..1be0b6d 100644 +index b191055..58a4018 100644 --- a/policy/modules/kernel/corenetwork.te.in +++ b/policy/modules/kernel/corenetwork.te.in @@ -5,6 +5,7 @@ policy_module(corenetwork, 1.19.2) @@ -5939,7 +6003,7 @@ index b191055..1be0b6d 100644 network_port(msnp, tcp,1863,s0, udp,1863,s0) network_port(mssql, tcp,1433-1434,s0, udp,1433-1434,s0) network_port(ms_streaming, tcp,1755,s0, udp,1755,s0) -@@ -186,101 +238,126 @@ network_port(munin, tcp,4949,s0, udp,4949,s0) +@@ -186,101 +238,127 @@ network_port(munin, tcp,4949,s0, udp,4949,s0) network_port(mxi, tcp,8005,s0, udp,8005,s0) network_port(mysqld, tcp,1186,s0, tcp,3306,s0, tcp,63132-63164,s0) network_port(mysqlmanagerd, tcp,2273,s0) @@ -5999,6 +6063,7 @@ index b191055..1be0b6d 100644 -network_port(radacct, udp,1646,s0, udp,1813,s0) -network_port(radius, udp,1645,s0, udp,1812,s0) +network_port(neutron, tcp, 8775, s0, tcp,9696,s0, tcp,9697,s0) ++network_port(nsd_control, tcp,8952,s0) +network_port(radacct, udp,1646,s0, tcp,1646,s0, tcp,1813,s0, udp,1813,s0) +network_port(radius, udp,1645,s0, tcp,1645,s0, tcp,1812,s0, udp,1812,s0, tcp,18120-18121,s0, udp,18120-18121, s0) network_port(radsec, tcp,2083,s0) @@ -6084,7 +6149,7 @@ index b191055..1be0b6d 100644 network_port(xserver, tcp,6000-6020,s0) network_port(zarafa, tcp,236,s0, tcp,237,s0) network_port(zabbix, tcp,10051,s0) -@@ -288,19 +365,23 @@ network_port(zabbix_agent, tcp,10050,s0) +@@ -288,19 +366,23 @@ network_port(zabbix_agent, tcp,10050,s0) network_port(zookeeper_client, tcp,2181,s0) network_port(zookeeper_election, tcp,3888,s0) network_port(zookeeper_leader, tcp,2888,s0) @@ -6111,7 +6176,7 @@ index b191055..1be0b6d 100644 ######################################## # -@@ -333,6 +414,8 @@ sid netif gen_context(system_u:object_r:netif_t,s0 - mls_systemhigh) +@@ -333,6 +415,8 @@ sid netif gen_context(system_u:object_r:netif_t,s0 - mls_systemhigh) build_option(`enable_mls',` network_interface(lo, lo, s0 - mls_systemhigh) @@ -6120,7 +6185,7 @@ index b191055..1be0b6d 100644 ',` typealias netif_t alias { lo_netif_t netif_lo_t }; ') -@@ -345,9 +428,28 @@ typealias netif_t alias { lo_netif_t netif_lo_t }; +@@ -345,9 +429,28 @@ typealias netif_t alias { lo_netif_t netif_lo_t }; allow corenet_unconfined_type node_type:node *; allow corenet_unconfined_type netif_type:netif *; allow corenet_unconfined_type packet_type:packet *; @@ -6176,7 +6241,7 @@ index 3f6e168..340e49f 100644 ') diff --git a/policy/modules/kernel/devices.fc b/policy/modules/kernel/devices.fc -index b31c054..8722f6d 100644 +index b31c054..50a45cf 100644 --- a/policy/modules/kernel/devices.fc +++ b/policy/modules/kernel/devices.fc @@ -15,15 +15,18 @@ @@ -6284,7 +6349,7 @@ index b31c054..8722f6d 100644 /dev/card.* -c gen_context(system_u:object_r:xserver_misc_device_t,s0) /dev/cmx.* -c gen_context(system_u:object_r:smartcard_device_t,s0) -@@ -172,6 +193,8 @@ ifdef(`distro_suse', ` +@@ -172,11 +193,16 @@ ifdef(`distro_suse', ` /dev/touchscreen/ucb1x00 -c gen_context(system_u:object_r:mouse_device_t,s0) /dev/touchscreen/mk712 -c gen_context(system_u:object_r:mouse_device_t,s0) @@ -6293,7 +6358,15 @@ index b31c054..8722f6d 100644 /dev/usb/dc2xx.* -c gen_context(system_u:object_r:scanner_device_t,s0) /dev/usb/lp.* -c gen_context(system_u:object_r:printer_device_t,s0) /dev/usb/mdc800.* -c gen_context(system_u:object_r:scanner_device_t,s0) -@@ -198,12 +221,27 @@ ifdef(`distro_debian',` + /dev/usb/scanner.* -c gen_context(system_u:object_r:scanner_device_t,s0) + ++/dev/vmbus/hv_vss -c gen_context(system_u:object_r:hypervvssd_device_t,s0) ++/dev/vmbus/hv_kvp -c gen_context(system_u:object_r:hypervkvp_device_t,s0) ++ + /dev/xen/blktap.* -c gen_context(system_u:object_r:xen_device_t,s0) + /dev/xen/evtchn -c gen_context(system_u:object_r:xen_device_t,s0) + /dev/xen/gntdev -c gen_context(system_u:object_r:xen_device_t,s0) +@@ -198,12 +224,27 @@ ifdef(`distro_debian',` /lib/udev/devices/null -c gen_context(system_u:object_r:null_device_t,s0) /lib/udev/devices/zero -c gen_context(system_u:object_r:zero_device_t,s0) @@ -6324,7 +6397,7 @@ index b31c054..8722f6d 100644 +/usr/lib/udev/devices/null -c gen_context(system_u:object_r:null_device_t,s0) +/usr/lib/udev/devices/zero -c gen_context(system_u:object_r:zero_device_t,s0) diff --git a/policy/modules/kernel/devices.if b/policy/modules/kernel/devices.if -index 76f285e..1c1addd 100644 +index 76f285e..3f6a351 100644 --- a/policy/modules/kernel/devices.if +++ b/policy/modules/kernel/devices.if @@ -143,13 +143,32 @@ interface(`dev_relabel_all_dev_nodes',` @@ -8087,62 +8160,12 @@ index 76f285e..1c1addd 100644 gen_require(` type device_t, usb_device_t; ') -@@ -4409,9 +5270,9 @@ interface(`dev_rw_usbfs',` - read_lnk_files_pattern($1, usbfs_t, usbfs_t) - ') - --######################################## -+###################################### - ## --## Get the attributes of video4linux devices. -+## Read and write userio device. - ## - ## - ## -@@ -4419,17 +5280,17 @@ interface(`dev_rw_usbfs',` - ## - ## - # --interface(`dev_getattr_video_dev',` -+interface(`dev_rw_userio_dev',` - gen_require(` -- type device_t, v4l_device_t; -+ type device_t, userio_device_t; - ') - -- getattr_chr_files_pattern($1, device_t, v4l_device_t) -+ rw_chr_files_pattern($1, device_t, userio_device_t) - ') - --###################################### -+######################################## - ## --## Read and write userio device. -+## Get the attributes of video4linux devices. - ## - ## - ## -@@ -4437,12 +5298,12 @@ interface(`dev_getattr_video_dev',` - ## - ## - # --interface(`dev_rw_userio_dev',` -+interface(`dev_getattr_video_dev',` - gen_require(` -- type device_t, userio_device_t; -+ type device_t, v4l_device_t; - ') - -- rw_chr_files_pattern($1, device_t, userio_device_t) -+ getattr_chr_files_pattern($1, device_t, v4l_device_t) - ') - - ######################################## -@@ -4539,6 +5400,134 @@ interface(`dev_write_video_dev',` +@@ -4330,28 +5191,180 @@ interface(`dev_search_usbfs',` ######################################## ## -+## Get the attributes of vfio devices. +-## Allow caller to get a list of usb hardware. ++## Allow caller to get a list of usb hardware. +## +## +## @@ -8150,36 +8173,40 @@ index 76f285e..1c1addd 100644 +## +## +# -+interface(`dev_getattr_vfio_dev',` ++interface(`dev_list_usbfs',` + gen_require(` -+ type device_t, vfio_device_t; ++ type usbfs_t; + ') + -+ getattr_chr_files_pattern($1, device_t, vfio_device_t) ++ read_lnk_files_pattern($1, usbfs_t, usbfs_t) ++ getattr_files_pattern($1, usbfs_t, usbfs_t) ++ ++ list_dirs_pattern($1, usbfs_t, usbfs_t) +') + +######################################## +## -+## Do not audit attempts to get the attributes -+## of vfio device nodes. ++## Set the attributes of usbfs filesystem. +## +## +## -+## Domain to not audit. ++## Domain allowed access. +## +## +# -+interface(`dev_dontaudit_getattr_vfio_dev',` ++interface(`dev_setattr_usbfs_files',` + gen_require(` -+ type vfio_device_t; ++ type usbfs_t; + ') + -+ dontaudit $1 vfio_device_t:chr_file getattr; ++ setattr_files_pattern($1, usbfs_t, usbfs_t) ++ list_dirs_pattern($1, usbfs_t, usbfs_t) +') + +######################################## +## -+## Set the attributes of vfio device nodes. ++## Read USB hardware information using ++## the usbfs filesystem interface. +## +## +## @@ -8187,36 +8214,39 @@ index 76f285e..1c1addd 100644 +## +## +# -+interface(`dev_setattr_vfio_dev',` ++interface(`dev_read_usbfs',` + gen_require(` -+ type device_t, vfio_device_t; ++ type usbfs_t; + ') + -+ setattr_chr_files_pattern($1, device_t, vfio_device_t) ++ read_files_pattern($1, usbfs_t, usbfs_t) ++ read_lnk_files_pattern($1, usbfs_t, usbfs_t) ++ list_dirs_pattern($1, usbfs_t, usbfs_t) +') + +######################################## +## -+## Do not audit attempts to set the attributes -+## of vfio device nodes. ++## Allow caller to modify usb hardware configuration files. +## +## +## -+## Domain to not audit. ++## Domain allowed access. +## +## +# -+interface(`dev_dontaudit_setattr_vfio_dev',` ++interface(`dev_rw_usbfs',` + gen_require(` -+ type vfio_device_t; ++ type usbfs_t; + ') + -+ dontaudit $1 vfio_device_t:chr_file setattr; ++ list_dirs_pattern($1, usbfs_t, usbfs_t) ++ rw_files_pattern($1, usbfs_t, usbfs_t) ++ read_lnk_files_pattern($1, usbfs_t, usbfs_t) +') + -+######################################## ++###################################### +## -+## Read the vfio devices. ++## Read and write userio device. +## +## +## @@ -8224,17 +8254,17 @@ index 76f285e..1c1addd 100644 +## +## +# -+interface(`dev_read_vfio_dev',` ++interface(`dev_rw_userio_dev',` + gen_require(` -+ type device_t, vfio_device_t; ++ type device_t, userio_device_t; + ') + -+ read_chr_files_pattern($1, device_t, vfio_device_t) ++ rw_chr_files_pattern($1, device_t, userio_device_t) +') + +######################################## +## -+## Write the vfio devices. ++## Get the attributes of video4linux devices. +## +## +## @@ -8242,42 +8272,36 @@ index 76f285e..1c1addd 100644 +## +## +# -+interface(`dev_write_vfio_dev',` ++interface(`dev_getattr_video_dev',` + gen_require(` -+ type device_t, vfio_device_t; ++ type device_t, v4l_device_t; + ') + -+ write_chr_files_pattern($1, device_t, vfio_device_t) ++ getattr_chr_files_pattern($1, device_t, v4l_device_t) +') + +######################################## +## -+## Read and write the VFIO devices. ++## Do not audit attempts to get the attributes ++## of video4linux device nodes. +## +## +## -+## Domain allowed access. ++## Domain to not audit. +## +## +# -+interface(`dev_rw_vfio_dev',` ++interface(`dev_dontaudit_getattr_video_dev',` + gen_require(` -+ type device_t, vfio_device_t; ++ type v4l_device_t; + ') + -+ rw_chr_files_pattern($1, device_t, vfio_device_t) ++ dontaudit $1 v4l_device_t:chr_file getattr; +') + +######################################## +## - ## Allow read/write the vhost net device - ## - ## -@@ -4557,6 +5546,24 @@ interface(`dev_rw_vhost',` - - ######################################## - ## -+## Allow read/write inheretid the vhost net device ++## Set the attributes of video4linux device nodes. +## +## +## @@ -8285,19 +8309,295 @@ index 76f285e..1c1addd 100644 +## +## +# -+interface(`dev_rw_inherited_vhost',` ++interface(`dev_setattr_video_dev',` + gen_require(` -+ type device_t, vhost_device_t; ++ type device_t, v4l_device_t; + ') + -+ allow $1 vhost_device_t:chr_file rw_inherited_chr_file_perms; ++ setattr_chr_files_pattern($1, device_t, v4l_device_t) +') + +######################################## +## - ## Read and write VMWare devices. ++## Do not audit attempts to set the attributes ++## of video4linux device nodes. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`dev_list_usbfs',` ++interface(`dev_dontaudit_setattr_video_dev',` + gen_require(` +- type usbfs_t; ++ type v4l_device_t; + ') + +- read_lnk_files_pattern($1, usbfs_t, usbfs_t) +- getattr_files_pattern($1, usbfs_t, usbfs_t) +- +- list_dirs_pattern($1, usbfs_t, usbfs_t) ++ dontaudit $1 v4l_device_t:chr_file setattr; + ') + + ######################################## + ## +-## Set the attributes of usbfs filesystem. ++## Read the video4linux devices. + ## + ## + ## +@@ -4359,19 +5372,17 @@ interface(`dev_list_usbfs',` + ## + ## + # +-interface(`dev_setattr_usbfs_files',` ++interface(`dev_read_video_dev',` + gen_require(` +- type usbfs_t; ++ type device_t, v4l_device_t; + ') + +- setattr_files_pattern($1, usbfs_t, usbfs_t) +- list_dirs_pattern($1, usbfs_t, usbfs_t) ++ read_chr_files_pattern($1, device_t, v4l_device_t) + ') + + ######################################## + ## +-## Read USB hardware information using +-## the usbfs filesystem interface. ++## Write the video4linux devices. + ## + ## + ## +@@ -4379,19 +5390,17 @@ interface(`dev_setattr_usbfs_files',` + ## + ## + # +-interface(`dev_read_usbfs',` ++interface(`dev_write_video_dev',` + gen_require(` +- type usbfs_t; ++ type device_t, v4l_device_t; + ') + +- read_files_pattern($1, usbfs_t, usbfs_t) +- read_lnk_files_pattern($1, usbfs_t, usbfs_t) +- list_dirs_pattern($1, usbfs_t, usbfs_t) ++ write_chr_files_pattern($1, device_t, v4l_device_t) + ') + + ######################################## + ## +-## Allow caller to modify usb hardware configuration files. ++## Get the attributes of vfio devices. + ## + ## + ## +@@ -4399,37 +5408,36 @@ interface(`dev_read_usbfs',` + ## + ## + # +-interface(`dev_rw_usbfs',` ++interface(`dev_getattr_vfio_dev',` + gen_require(` +- type usbfs_t; ++ type device_t, vfio_device_t; + ') + +- list_dirs_pattern($1, usbfs_t, usbfs_t) +- rw_files_pattern($1, usbfs_t, usbfs_t) +- read_lnk_files_pattern($1, usbfs_t, usbfs_t) ++ getattr_chr_files_pattern($1, device_t, vfio_device_t) + ') + + ######################################## + ## +-## Get the attributes of video4linux devices. ++## Do not audit attempts to get the attributes ++## of vfio device nodes. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`dev_getattr_video_dev',` ++interface(`dev_dontaudit_getattr_vfio_dev',` + gen_require(` +- type device_t, v4l_device_t; ++ type vfio_device_t; + ') + +- getattr_chr_files_pattern($1, device_t, v4l_device_t) ++ dontaudit $1 vfio_device_t:chr_file getattr; + ') + +-###################################### ++######################################## + ## +-## Read and write userio device. ++## Set the attributes of vfio device nodes. + ## + ## + ## +@@ -4437,18 +5445,18 @@ interface(`dev_getattr_video_dev',` + ## + ## + # +-interface(`dev_rw_userio_dev',` ++interface(`dev_setattr_vfio_dev',` + gen_require(` +- type device_t, userio_device_t; ++ type device_t, vfio_device_t; + ') + +- rw_chr_files_pattern($1, device_t, userio_device_t) ++ setattr_chr_files_pattern($1, device_t, vfio_device_t) + ') + + ######################################## + ## +-## Do not audit attempts to get the attributes +-## of video4linux device nodes. ++## Do not audit attempts to set the attributes ++## of vfio device nodes. + ## + ## + ## +@@ -4456,17 +5464,17 @@ interface(`dev_rw_userio_dev',` + ## + ## + # +-interface(`dev_dontaudit_getattr_video_dev',` ++interface(`dev_dontaudit_setattr_vfio_dev',` + gen_require(` +- type v4l_device_t; ++ type vfio_device_t; + ') + +- dontaudit $1 v4l_device_t:chr_file getattr; ++ dontaudit $1 vfio_device_t:chr_file setattr; + ') + + ######################################## + ## +-## Set the attributes of video4linux device nodes. ++## Read the vfio devices. ## ## + ## +@@ -4474,36 +5482,35 @@ interface(`dev_dontaudit_getattr_video_dev',` + ## + ## + # +-interface(`dev_setattr_video_dev',` ++interface(`dev_read_vfio_dev',` + gen_require(` +- type device_t, v4l_device_t; ++ type device_t, vfio_device_t; + ') + +- setattr_chr_files_pattern($1, device_t, v4l_device_t) ++ read_chr_files_pattern($1, device_t, vfio_device_t) + ') + + ######################################## + ## +-## Do not audit attempts to set the attributes +-## of video4linux device nodes. ++## Write the vfio devices. + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. + ## + ## + # +-interface(`dev_dontaudit_setattr_video_dev',` ++interface(`dev_write_vfio_dev',` + gen_require(` +- type v4l_device_t; ++ type device_t, vfio_device_t; + ') + +- dontaudit $1 v4l_device_t:chr_file setattr; ++ write_chr_files_pattern($1, device_t, vfio_device_t) + ') + + ######################################## + ## +-## Read the video4linux devices. ++## Read and write the VFIO devices. + ## + ## + ## +@@ -4511,17 +5518,17 @@ interface(`dev_dontaudit_setattr_video_dev',` + ## + ## + # +-interface(`dev_read_video_dev',` ++interface(`dev_rw_vfio_dev',` + gen_require(` +- type device_t, v4l_device_t; ++ type device_t, vfio_device_t; + ') + +- read_chr_files_pattern($1, device_t, v4l_device_t) ++ rw_chr_files_pattern($1, device_t, vfio_device_t) + ') + + ######################################## + ## +-## Write the video4linux devices. ++## Allow read/write the vhost net device + ## + ## + ## +@@ -4529,17 +5536,17 @@ interface(`dev_read_video_dev',` + ## + ## + # +-interface(`dev_write_video_dev',` ++interface(`dev_rw_vhost',` + gen_require(` +- type device_t, v4l_device_t; ++ type device_t, vhost_device_t; + ') + +- write_chr_files_pattern($1, device_t, v4l_device_t) ++ rw_chr_files_pattern($1, device_t, vhost_device_t) + ') + + ######################################## + ## +-## Allow read/write the vhost net device ++## Allow read/write inheretid the vhost net device + ## + ## + ## +@@ -4547,12 +5554,12 @@ interface(`dev_write_video_dev',` + ## + ## + # +-interface(`dev_rw_vhost',` ++interface(`dev_rw_inherited_vhost',` + gen_require(` + type device_t, vhost_device_t; + ') + +- rw_chr_files_pattern($1, device_t, vhost_device_t) ++ allow $1 vhost_device_t:chr_file rw_inherited_chr_file_perms; + ') + + ######################################## @@ -4630,6 +5637,24 @@ interface(`dev_write_watchdog',` ######################################## @@ -8368,7 +8668,7 @@ index 76f285e..1c1addd 100644 ## Read and write to the zero device (/dev/zero). ## ## -@@ -4851,3 +5914,978 @@ interface(`dev_unconfined',` +@@ -4851,3 +5914,1019 @@ interface(`dev_unconfined',` typeattribute $1 devices_unconfined_type; ') @@ -8464,6 +8764,43 @@ index 76f285e..1c1addd 100644 + rw_chr_files_pattern($1, device_t, uhid_device_t) +') + ++ ++######################################## ++## ++## Allow read/write the hypervkvp device ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`dev_rw_hypervkvp',` ++ gen_require(` ++ type device_t, hypervkvp_device_t; ++ ') ++ ++ rw_chr_files_pattern($1, device_t, hypervkvp_device_t) ++') ++ ++######################################## ++## ++## Allow read/write the hypervvssd device ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`dev_rw_hypervvssd',` ++ gen_require(` ++ type device_t, hypervvssd_device_t; ++ ') ++ ++ rw_chr_files_pattern($1, device_t, hypervvssd_device_t) ++') ++ +######################################## +## +## Create all named devices with the correct label @@ -8582,6 +8919,8 @@ index 76f285e..1c1addd 100644 + type mtrr_device_t; + type ecryptfs_device_t; + type mptctl_device_t; ++ type hypervkvp_device_t; ++ type hypervvssd_device_t; +') + + dev_filetrans_printer_named_dev($1) @@ -9280,6 +9619,8 @@ index 76f285e..1c1addd 100644 + filetrans_pattern($1, device_t, usb_device_t, chr_file, "ubb") + filetrans_pattern($1, device_t, usb_device_t, chr_file, "ubc") + filetrans_pattern($1, device_t, uhid_device_t, chr_file, "uhid") ++ filetrans_pattern($1, device_t, hypervkvp_device_t, chr_file, "hv_kvp") ++ filetrans_pattern($1, device_t, hypervvssd_device_t, chr_file, "hv_vss") + dev_filetrans_xserver_named_dev($1) +') + @@ -9348,7 +9689,7 @@ index 76f285e..1c1addd 100644 + filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, "card9") +') diff --git a/policy/modules/kernel/devices.te b/policy/modules/kernel/devices.te -index 0b1a871..db37cad 100644 +index 0b1a871..8d4003a 100644 --- a/policy/modules/kernel/devices.te +++ b/policy/modules/kernel/devices.te @@ -15,11 +15,12 @@ attribute devices_unconfined_type; @@ -9385,7 +9726,22 @@ index 0b1a871..db37cad 100644 # for the IBM zSeries z90crypt hardware ssl accelorator type crypt_device_t; dev_node(crypt_device_t) -@@ -94,6 +95,12 @@ type ipmi_device_t; +@@ -88,12 +89,27 @@ type framebuf_device_t; + dev_node(framebuf_device_t) + + # ++# Type for hyperv devices ++# ++type hypervkvp_device_t; ++dev_node(hypervkvp_device_t) ++ ++type hypervvssd_device_t; ++dev_node(hypervvssd_device_t) ++ ++# + # Type for /dev/ipmi/0 + # + type ipmi_device_t; dev_node(ipmi_device_t) # @@ -9398,7 +9754,7 @@ index 0b1a871..db37cad 100644 # Type for /dev/kmsg # type kmsg_device_t; -@@ -111,6 +118,7 @@ dev_node(ksm_device_t) +@@ -111,6 +127,7 @@ dev_node(ksm_device_t) # type kvm_device_t; dev_node(kvm_device_t) @@ -9406,7 +9762,7 @@ index 0b1a871..db37cad 100644 # # Type for /dev/lirc -@@ -118,6 +126,9 @@ dev_node(kvm_device_t) +@@ -118,6 +135,9 @@ dev_node(kvm_device_t) type lirc_device_t; dev_node(lirc_device_t) @@ -9416,7 +9772,7 @@ index 0b1a871..db37cad 100644 type loop_control_device_t; dev_node(loop_control_device_t) -@@ -150,12 +161,24 @@ type modem_device_t; +@@ -150,12 +170,24 @@ type modem_device_t; dev_node(modem_device_t) # @@ -9441,7 +9797,7 @@ index 0b1a871..db37cad 100644 # Type for /dev/cpu/mtrr and /proc/mtrr # type mtrr_device_t; -@@ -183,6 +206,12 @@ type nvram_device_t; +@@ -183,6 +215,12 @@ type nvram_device_t; dev_node(nvram_device_t) # @@ -9454,7 +9810,7 @@ index 0b1a871..db37cad 100644 # Type for /dev/pmu # type power_device_t; -@@ -227,6 +256,10 @@ files_mountpoint(sysfs_t) +@@ -227,6 +265,10 @@ files_mountpoint(sysfs_t) fs_type(sysfs_t) genfscon sysfs / gen_context(system_u:object_r:sysfs_t,s0) @@ -9465,7 +9821,7 @@ index 0b1a871..db37cad 100644 # # Type for /dev/tpm # -@@ -266,6 +299,15 @@ dev_node(usbmon_device_t) +@@ -266,6 +308,15 @@ dev_node(usbmon_device_t) type userio_device_t; dev_node(userio_device_t) @@ -9481,7 +9837,7 @@ index 0b1a871..db37cad 100644 type v4l_device_t; dev_node(v4l_device_t) -@@ -274,6 +316,7 @@ dev_node(v4l_device_t) +@@ -274,6 +325,7 @@ dev_node(v4l_device_t) # type vhost_device_t; dev_node(vhost_device_t) @@ -9489,7 +9845,7 @@ index 0b1a871..db37cad 100644 # Type for vmware devices. type vmware_device_t; -@@ -319,5 +362,6 @@ files_associate_tmp(device_node) +@@ -319,5 +371,6 @@ files_associate_tmp(device_node) # allow devices_unconfined_type self:capability sys_rawio; @@ -10607,7 +10963,7 @@ index b876c48..03f9342 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 f962f76..9cb7e98 100644 +index f962f76..89768e5 100644 --- a/policy/modules/kernel/files.if +++ b/policy/modules/kernel/files.if @@ -19,6 +19,136 @@ @@ -11435,44 +11791,37 @@ index f962f76..9cb7e98 100644 ## Do not audit attempts to set the attributes on all mount points. ## ## -@@ -1691,6 +2121,24 @@ interface(`files_dontaudit_list_all_mountpoints',` +@@ -1691,44 +2121,44 @@ interface(`files_dontaudit_list_all_mountpoints',` ######################################## ## +-## Do not audit attempts to write to mount points. +## Write all mount points. -+## -+## -+## + ## + ## + ## +-## Domain to not audit. +## Domain allowed access. -+## -+## -+# + ## + ## + # +-interface(`files_dontaudit_write_all_mountpoints',` +- gen_require(` +- attribute mountpoint; +- ') +interface(`files_write_all_mountpoints',` + gen_require(` + attribute mountpoint; + ') -+ -+ allow $1 mountpoint:dir write; -+') -+ -+######################################## -+## - ## Do not audit attempts to write to mount points. - ## - ## -@@ -1703,104 +2151,86 @@ interface(`files_dontaudit_write_all_mountpoints',` - gen_require(` - attribute mountpoint; - ') -+ dontaudit $1 self:capability dac_override; - dontaudit $1 mountpoint:dir write; +- dontaudit $1 mountpoint:dir write; ++ allow $1 mountpoint:dir write; ') ######################################## ## -## List the contents of the root directory. -+## Do not audit attempts to unmount all mount points. ++## Do not audit attempts to write to mount points. ## ## ## @@ -11482,38 +11831,38 @@ index f962f76..9cb7e98 100644 ## # -interface(`files_list_root',` -+interface(`files_dontaudit_unmount_all_mountpoints',` ++interface(`files_dontaudit_write_all_mountpoints',` gen_require(` - type root_t; + attribute mountpoint; ') ++ dontaudit $1 self:capability dac_override; - allow $1 root_t:dir list_dir_perms; - allow $1 root_t:lnk_file { read_lnk_file_perms ioctl lock }; -+ dontaudit $1 mountpoint:filesystem unmount; ++ dontaudit $1 mountpoint:dir write; ') ######################################## ## -## Do not audit attempts to write to / dirs. -+## Read all mountpoint symbolic links. ++## Do not audit attempts to unmount all mount points. ## ## ## --## Domain to not audit. -+## Domain allowed access. +@@ -1736,94 +2166,223 @@ interface(`files_list_root',` ## ## # -interface(`files_dontaudit_write_root_dirs',` -+interface(`files_read_all_mountpoint_symlinks',` ++interface(`files_dontaudit_unmount_all_mountpoints',` gen_require(` - type root_t; + attribute mountpoint; ') - dontaudit $1 root_t:dir write; -+ allow $1 mountpoint:lnk_file read_lnk_file_perms; ++ dontaudit $1 mountpoint:filesystem unmount; ') -################### @@ -11521,7 +11870,7 @@ index f962f76..9cb7e98 100644 ## -## Do not audit attempts to write -## files in the root directory. -+## Write all file type directories. ++## Read all mountpoint symbolic links. ## ## ## @@ -11531,21 +11880,22 @@ index f962f76..9cb7e98 100644 ## # -interface(`files_dontaudit_rw_root_dir',` -+interface(`files_write_all_dirs',` ++interface(`files_read_all_mountpoint_symlinks',` gen_require(` - type root_t; -+ attribute file_type; ++ attribute mountpoint; ') - dontaudit $1 root_t:dir rw_dir_perms; -+ allow $1 file_type:dir write; ++ allow $1 mountpoint:lnk_file read_lnk_file_perms; ') ++ ######################################## ## -## Create an object in the root directory, with a private -## type using a type transition. -+## List the contents of the root directory. ++## Make all mountpoint as entrypoint. ## ## ## @@ -11569,42 +11919,81 @@ index f962f76..9cb7e98 100644 -## # -interface(`files_root_filetrans',` -+interface(`files_list_root',` ++interface(`files_entrypoint_all_mountpoint',` gen_require(` - type root_t; +- type root_t; ++ attribute mountpoint; ') - filetrans_pattern($1, root_t, $2, $3, $4) -+ allow $1 root_t:dir list_dir_perms; -+ allow $1 root_t:lnk_file { read_lnk_file_perms ioctl lock }; ++ allow $1 mountpoint:file entrypoint; ') -- + ######################################## ## -## Do not audit attempts to read files in -## the root directory. -+## Do not audit attempts to write to / dirs. ++## Write all file type directories. ## ## ## -@@ -1808,18 +2238,128 @@ interface(`files_root_filetrans',` +-## Domain to not audit. ++## Domain allowed access. ## ## # -interface(`files_dontaudit_read_root_files',` -+interface(`files_write_root_dirs',` ++interface(`files_write_all_dirs',` gen_require(` - type root_t; +- type root_t; ++ attribute file_type; ') - dontaudit $1 root_t:file { getattr read }; -+ allow $1 root_t:dir write; ++ allow $1 file_type:dir write; ') ######################################## ## -## Do not audit attempts to read or write -## files in the root directory. ++## List the contents of the root directory. + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. ++## ++## ++# ++interface(`files_list_root',` ++ gen_require(` ++ type root_t; ++ ') ++ ++ allow $1 root_t:dir list_dir_perms; ++ allow $1 root_t:lnk_file { read_lnk_file_perms ioctl lock }; ++') ++######################################## ++## ++## Do not audit attempts to write to / dirs. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_write_root_dirs',` ++ gen_require(` ++ type root_t; ++ ') ++ ++ allow $1 root_t:dir write; ++') ++ ++######################################## ++## +## Do not audit attempts to write to / dirs. +## +## @@ -11717,10 +12106,14 @@ index f962f76..9cb7e98 100644 +## +## Do not audit attempts to read or write +## files in the root directory. - ## - ## - ## -@@ -1892,25 +2432,25 @@ interface(`files_delete_root_dir_entry',` ++## ++## ++## ++## Domain to not audit. + ## + ## + # +@@ -1892,25 +2451,25 @@ interface(`files_delete_root_dir_entry',` ######################################## ## @@ -11752,7 +12145,7 @@ index f962f76..9cb7e98 100644 ## ## ## -@@ -1923,7 +2463,7 @@ interface(`files_relabel_rootfs',` +@@ -1923,7 +2482,7 @@ interface(`files_relabel_rootfs',` type root_t; ') @@ -11761,7 +12154,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -1946,6 +2486,42 @@ interface(`files_unmount_rootfs',` +@@ -1946,6 +2505,42 @@ interface(`files_unmount_rootfs',` ######################################## ## @@ -11804,7 +12197,7 @@ index f962f76..9cb7e98 100644 ## Get attributes of the /boot directory. ## ## -@@ -2181,6 +2757,24 @@ interface(`files_relabelfrom_boot_files',` +@@ -2181,6 +2776,24 @@ interface(`files_relabelfrom_boot_files',` relabelfrom_files_pattern($1, boot_t, boot_t) ') @@ -11829,7 +12222,7 @@ index f962f76..9cb7e98 100644 ###################################### ## ## Read symbolic links in the /boot directory. -@@ -2645,6 +3239,24 @@ interface(`files_rw_etc_dirs',` +@@ -2645,6 +3258,24 @@ interface(`files_rw_etc_dirs',` allow $1 etc_t:dir rw_dir_perms; ') @@ -11854,7 +12247,7 @@ index f962f76..9cb7e98 100644 ########################################## ## ## Manage generic directories in /etc -@@ -2716,6 +3328,7 @@ interface(`files_read_etc_files',` +@@ -2716,6 +3347,7 @@ interface(`files_read_etc_files',` allow $1 etc_t:dir list_dir_perms; read_files_pattern($1, etc_t, etc_t) read_lnk_files_pattern($1, etc_t, etc_t) @@ -11862,7 +12255,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -2724,7 +3337,7 @@ interface(`files_read_etc_files',` +@@ -2724,7 +3356,7 @@ interface(`files_read_etc_files',` ## ## ## @@ -11871,7 +12264,7 @@ index f962f76..9cb7e98 100644 ## ## # -@@ -2780,6 +3393,25 @@ interface(`files_manage_etc_files',` +@@ -2780,6 +3412,25 @@ interface(`files_manage_etc_files',` ######################################## ## @@ -11897,7 +12290,7 @@ index f962f76..9cb7e98 100644 ## Delete system configuration files in /etc. ## ## -@@ -2798,6 +3430,24 @@ interface(`files_delete_etc_files',` +@@ -2798,6 +3449,24 @@ interface(`files_delete_etc_files',` ######################################## ## @@ -11922,7 +12315,7 @@ index f962f76..9cb7e98 100644 ## Execute generic files in /etc. ## ## -@@ -2963,24 +3613,6 @@ interface(`files_delete_boot_flag',` +@@ -2963,24 +3632,6 @@ interface(`files_delete_boot_flag',` ######################################## ## @@ -11947,7 +12340,7 @@ index f962f76..9cb7e98 100644 ## Read files in /etc that are dynamically ## created on boot, such as mtab. ## -@@ -3021,9 +3653,7 @@ interface(`files_read_etc_runtime_files',` +@@ -3021,9 +3672,7 @@ interface(`files_read_etc_runtime_files',` ######################################## ## @@ -11958,7 +12351,7 @@ index f962f76..9cb7e98 100644 ## ## ## -@@ -3031,18 +3661,17 @@ interface(`files_read_etc_runtime_files',` +@@ -3031,18 +3680,17 @@ interface(`files_read_etc_runtime_files',` ## ## # @@ -11980,7 +12373,7 @@ index f962f76..9cb7e98 100644 ## ## ## -@@ -3060,6 +3689,26 @@ interface(`files_dontaudit_write_etc_runtime_files',` +@@ -3060,6 +3708,26 @@ interface(`files_dontaudit_write_etc_runtime_files',` ######################################## ## @@ -12007,7 +12400,7 @@ index f962f76..9cb7e98 100644 ## Read and write files in /etc that are dynamically ## created on boot, such as mtab. ## -@@ -3077,6 +3726,7 @@ interface(`files_rw_etc_runtime_files',` +@@ -3077,6 +3745,7 @@ interface(`files_rw_etc_runtime_files',` allow $1 etc_t:dir list_dir_perms; rw_files_pattern($1, etc_t, etc_runtime_t) @@ -12015,7 +12408,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3098,6 +3748,7 @@ interface(`files_manage_etc_runtime_files',` +@@ -3098,6 +3767,7 @@ interface(`files_manage_etc_runtime_files',` ') manage_files_pattern($1, { etc_t etc_runtime_t }, etc_runtime_t) @@ -12023,86 +12416,39 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3142,34 +3793,34 @@ interface(`files_etc_filetrans_etc_runtime',` +@@ -3142,10 +3812,48 @@ interface(`files_etc_filetrans_etc_runtime',` # interface(`files_getattr_isid_type_dirs',` gen_require(` - type file_t; + type unlabeled_t; - ') - -- allow $1 file_t:dir getattr; ++ ') ++ + allow $1 unlabeled_t:dir getattr; - ') - - ######################################## - ## --## Do not audit attempts to search directories on new filesystems -+## Getattr all file opbjects on new filesystems - ## that have not yet been labeled. - ## - ## - ## --## Domain to not audit. -+## Domain allowed access. - ## - ## - # --interface(`files_dontaudit_search_isid_type_dirs',` -+interface(`files_getattr_isid_type',` - gen_require(` -- type file_t; -+ type unlabeled_t; - ') - -- dontaudit $1 file_t:dir search_dir_perms; -+ allow $1 unlabeled_t:dir_file_class_set getattr; - ') - - ######################################## - ## --## List the contents of directories on new filesystems -+## Setattr of directories on new filesystems - ## that have not yet been labeled. - ## - ## -@@ -3178,12 +3829,50 @@ interface(`files_dontaudit_search_isid_type_dirs',` - ## - ## - # --interface(`files_list_isid_type_dirs',` -+interface(`files_setattr_isid_type_dirs',` - gen_require(` -- type file_t; -+ type unlabeled_t; - ') - -- allow $1 file_t:dir list_dir_perms; -+ allow $1 unlabeled_t:dir setattr; +') + +######################################## +## -+## Do not audit attempts to search directories on new filesystems ++## Getattr all file opbjects on new filesystems +## that have not yet been labeled. +## +## +## -+## Domain to not audit. ++## Domain allowed access. +## +## +# -+interface(`files_dontaudit_search_isid_type_dirs',` ++interface(`files_getattr_isid_type',` + gen_require(` + type unlabeled_t; + ') + -+ dontaudit $1 unlabeled_t:dir search_dir_perms; ++ allow $1 unlabeled_t:dir_file_class_set getattr; +') + +######################################## +## -+## List the contents of directories on new filesystems ++## Setattr of directories on new filesystems +## that have not yet been labeled. +## +## @@ -12111,16 +12457,43 @@ index f962f76..9cb7e98 100644 +## +## +# -+interface(`files_list_isid_type_dirs',` ++interface(`files_setattr_isid_type_dirs',` + gen_require(` + type unlabeled_t; -+ ') -+ + ') + +- allow $1 file_t:dir getattr; ++ allow $1 unlabeled_t:dir setattr; + ') + + ######################################## +@@ -3161,10 +3869,10 @@ interface(`files_getattr_isid_type_dirs',` + # + interface(`files_dontaudit_search_isid_type_dirs',` + gen_require(` +- type file_t; ++ type unlabeled_t; + ') + +- dontaudit $1 file_t:dir search_dir_perms; ++ dontaudit $1 unlabeled_t:dir search_dir_perms; + ') + + ######################################## +@@ -3180,10 +3888,10 @@ interface(`files_dontaudit_search_isid_type_dirs',` + # + interface(`files_list_isid_type_dirs',` + gen_require(` +- type file_t; ++ type unlabeled_t; + ') + +- allow $1 file_t:dir list_dir_perms; + allow $1 unlabeled_t:dir list_dir_perms; ') ######################################## -@@ -3199,10 +3888,10 @@ interface(`files_list_isid_type_dirs',` +@@ -3199,10 +3907,10 @@ interface(`files_list_isid_type_dirs',` # interface(`files_rw_isid_type_dirs',` gen_require(` @@ -12133,7 +12506,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3218,10 +3907,66 @@ interface(`files_rw_isid_type_dirs',` +@@ -3218,10 +3926,66 @@ interface(`files_rw_isid_type_dirs',` # interface(`files_delete_isid_type_dirs',` gen_require(` @@ -12202,7 +12575,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3237,10 +3982,10 @@ interface(`files_delete_isid_type_dirs',` +@@ -3237,10 +4001,10 @@ interface(`files_delete_isid_type_dirs',` # interface(`files_manage_isid_type_dirs',` gen_require(` @@ -12215,7 +12588,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3256,10 +4001,29 @@ interface(`files_manage_isid_type_dirs',` +@@ -3256,10 +4020,29 @@ interface(`files_manage_isid_type_dirs',` # interface(`files_mounton_isid_type_dirs',` gen_require(` @@ -12247,7 +12620,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3275,10 +4039,10 @@ interface(`files_mounton_isid_type_dirs',` +@@ -3275,10 +4058,10 @@ interface(`files_mounton_isid_type_dirs',` # interface(`files_read_isid_type_files',` gen_require(` @@ -12260,7 +12633,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3294,10 +4058,10 @@ interface(`files_read_isid_type_files',` +@@ -3294,10 +4077,10 @@ interface(`files_read_isid_type_files',` # interface(`files_delete_isid_type_files',` gen_require(` @@ -12273,7 +12646,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3313,10 +4077,10 @@ interface(`files_delete_isid_type_files',` +@@ -3313,10 +4096,10 @@ interface(`files_delete_isid_type_files',` # interface(`files_delete_isid_type_symlinks',` gen_require(` @@ -12286,7 +12659,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3332,10 +4096,10 @@ interface(`files_delete_isid_type_symlinks',` +@@ -3332,10 +4115,10 @@ interface(`files_delete_isid_type_symlinks',` # interface(`files_delete_isid_type_fifo_files',` gen_require(` @@ -12299,7 +12672,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3351,10 +4115,10 @@ interface(`files_delete_isid_type_fifo_files',` +@@ -3351,10 +4134,10 @@ interface(`files_delete_isid_type_fifo_files',` # interface(`files_delete_isid_type_sock_files',` gen_require(` @@ -12312,7 +12685,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3370,10 +4134,10 @@ interface(`files_delete_isid_type_sock_files',` +@@ -3370,10 +4153,10 @@ interface(`files_delete_isid_type_sock_files',` # interface(`files_delete_isid_type_blk_files',` gen_require(` @@ -12325,7 +12698,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3389,10 +4153,10 @@ interface(`files_delete_isid_type_blk_files',` +@@ -3389,10 +4172,10 @@ interface(`files_delete_isid_type_blk_files',` # interface(`files_dontaudit_write_isid_chr_files',` gen_require(` @@ -12338,7 +12711,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3408,10 +4172,10 @@ interface(`files_dontaudit_write_isid_chr_files',` +@@ -3408,10 +4191,10 @@ interface(`files_dontaudit_write_isid_chr_files',` # interface(`files_delete_isid_type_chr_files',` gen_require(` @@ -12351,7 +12724,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3427,10 +4191,10 @@ interface(`files_delete_isid_type_chr_files',` +@@ -3427,10 +4210,10 @@ interface(`files_delete_isid_type_chr_files',` # interface(`files_manage_isid_type_files',` gen_require(` @@ -12364,7 +12737,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3446,10 +4210,10 @@ interface(`files_manage_isid_type_files',` +@@ -3446,10 +4229,10 @@ interface(`files_manage_isid_type_files',` # interface(`files_manage_isid_type_symlinks',` gen_require(` @@ -12377,7 +12750,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3465,10 +4229,29 @@ interface(`files_manage_isid_type_symlinks',` +@@ -3465,10 +4248,29 @@ interface(`files_manage_isid_type_symlinks',` # interface(`files_rw_isid_type_blk_files',` gen_require(` @@ -12409,7 +12782,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3484,10 +4267,10 @@ interface(`files_rw_isid_type_blk_files',` +@@ -3484,10 +4286,10 @@ interface(`files_rw_isid_type_blk_files',` # interface(`files_manage_isid_type_blk_files',` gen_require(` @@ -12422,7 +12795,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3503,10 +4286,10 @@ interface(`files_manage_isid_type_blk_files',` +@@ -3503,10 +4305,10 @@ interface(`files_manage_isid_type_blk_files',` # interface(`files_manage_isid_type_chr_files',` gen_require(` @@ -12435,7 +12808,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -3552,6 +4335,27 @@ interface(`files_dontaudit_getattr_home_dir',` +@@ -3552,6 +4354,27 @@ interface(`files_dontaudit_getattr_home_dir',` ######################################## ## @@ -12463,7 +12836,7 @@ index f962f76..9cb7e98 100644 ## Search home directories root (/home). ## ## -@@ -3814,20 +4618,38 @@ interface(`files_list_mnt',` +@@ -3814,20 +4637,38 @@ interface(`files_list_mnt',` ###################################### ## @@ -12507,7 +12880,7 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -4012,6 +4834,12 @@ interface(`files_read_kernel_modules',` +@@ -4012,6 +4853,12 @@ interface(`files_read_kernel_modules',` allow $1 modules_object_t:dir list_dir_perms; read_files_pattern($1, modules_object_t, modules_object_t) read_lnk_files_pattern($1, modules_object_t, modules_object_t) @@ -12520,64 +12893,98 @@ index f962f76..9cb7e98 100644 ') ######################################## -@@ -4217,6 +5045,175 @@ interface(`files_read_world_readable_sockets',` +@@ -4217,192 +5064,218 @@ 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',` +- gen_require(` +- type tmp_t; +- ') +interface(`files_manage_system_conf_files',` + gen_require(` + type etc_t, system_conf_t; + ') -+ + +- allow $1 tmp_t:dir getattr; + manage_files_pattern($1, { etc_t system_conf_t }, system_conf_t) + files_filetrans_system_conf_named_files($1) -+') -+ + ') + +-######################################## +##################################### -+## + ## +-## Do not audit attempts to get the +-## attributes of the tmp directory (/tmp). +## File name transition for system configuration files in /etc. -+## -+## + ## + ## +-## +-## Domain allowed access. +-## +## +## Domain allowed access. +## -+## -+# + ## + # +-interface(`files_dontaudit_getattr_tmp_dirs',` +- gen_require(` +- type tmp_t; +- ') +interface(`files_filetrans_system_conf_named_files',` + gen_require(` + type etc_t, system_conf_t, usr_t; + ') -+ + +- dontaudit $1 tmp_t:dir getattr; + filetrans_pattern($1, etc_t, system_conf_t, file, "sysctl.conf") + filetrans_pattern($1, etc_t, system_conf_t, file, "sysctl.conf.old") + filetrans_pattern($1, etc_t, system_conf_t, file, "ebtables") @@ -12598,162 +13005,254 @@ index f962f76..9cb7e98 100644 + filetrans_pattern($1, etc_t, system_conf_t, dir, "yum.repos.d") + filetrans_pattern($1, etc_t, system_conf_t, dir, "remotes.d") + filetrans_pattern($1, usr_t, system_conf_t, dir, "repo") -+') -+ + ') + +-######################################## +###################################### -+## + ## +-## Search the tmp directory (/tmp). +## Relabel manageable system configuration files in /etc. -+## -+## + ## + ## +-## +-## Domain allowed access. +-## +## +## Domain allowed access. +## -+## -+# + ## + # +-interface(`files_search_tmp',` +- gen_require(` +- type tmp_t; +- ') +interface(`files_relabelto_system_conf_files',` + gen_require(` + type usr_t; + ') -+ + +- allow $1 tmp_t:dir search_dir_perms; + relabelto_files_pattern($1, system_conf_t, system_conf_t) -+') -+ + ') + +-######################################## +###################################### -+## + ## +-## Do not audit attempts to search the tmp directory (/tmp). +## Relabel manageable system configuration files in /etc. -+## -+## + ## + ## +-## +-## Domain to not audit. +-## +## +## Domain allowed access. +## -+## -+# + ## + # +-interface(`files_dontaudit_search_tmp',` +- gen_require(` +- type tmp_t; +- ') +interface(`files_relabelfrom_system_conf_files',` + gen_require(` + type usr_t; + ') -+ + +- dontaudit $1 tmp_t:dir search_dir_perms; + relabelfrom_files_pattern($1, system_conf_t, system_conf_t) -+') -+ + ') + +-######################################## +################################### -+## + ## +-## Read the tmp directory (/tmp). +## Create files in /etc with the type used for +## the manageable system config files. -+## -+## + ## + ## +-## +-## Domain allowed access. +-## +## +## The type of the process performing this action. +## -+## -+# + ## + # +-interface(`files_list_tmp',` +- gen_require(` +- type tmp_t; +- ') +interface(`files_etc_filetrans_system_conf',` + gen_require(` + type etc_t, system_conf_t; + ') -+ + +- allow $1 tmp_t:dir list_dir_perms; + filetrans_pattern($1, etc_t, system_conf_t, file) -+') -+ + ') + +-######################################## +###################################### -+## + ## +-## Do not audit listing of the tmp directory (/tmp). +## Manage manageable system db files in /var/lib. -+## -+## + ## + ## +-## +-## Domain not to audit. +-## +## +## Domain allowed access. +## -+## -+# + ## + # +-interface(`files_dontaudit_list_tmp',` +- gen_require(` +- type tmp_t; +- ') +interface(`files_manage_system_db_files',` + gen_require(` + type var_lib_t, system_db_t; + ') -+ + +- dontaudit $1 tmp_t:dir list_dir_perms; + manage_files_pattern($1, { var_lib_t system_db_t }, system_db_t) + files_filetrans_system_db_named_files($1) -+') -+ + ') + +-######################################## +##################################### -+## + ## +-## Remove entries from the tmp directory. +## File name transition for system db files in /var/lib. -+## -+## + ## + ## +-## +-## Domain allowed access. +-## +## +## Domain allowed access. +## -+## -+# + ## + # +-interface(`files_delete_tmp_dir_entry',` +- gen_require(` +- type tmp_t; +- ') +interface(`files_filetrans_system_db_named_files',` + gen_require(` + type var_lib_t, system_db_t; + ') -+ + +- allow $1 tmp_t:dir del_entry_dir_perms; + filetrans_pattern($1, var_lib_t, system_db_t, file, "servicelog.db") + filetrans_pattern($1, var_lib_t, system_db_t, file, "servicelog.db-journal") -+') -+ + ') + ######################################## ## - ## Allow the specified type to associate -@@ -4239,6 +5236,26 @@ interface(`files_associate_tmp',` +-## Read files in the tmp directory (/tmp). +-## +-## ++## Allow the specified type to associate ++## to a filesystem with the type of the ++## temporary directory (/tmp). ++## ++## + ## +-## Domain allowed access. ++## Type of the file to associate. + ## + ## + # +-interface(`files_read_generic_tmp_files',` ++interface(`files_associate_tmp',` + gen_require(` + type tmp_t; + ') + +- read_files_pattern($1, tmp_t, tmp_t) ++ allow $1 tmp_t:filesystem associate; + ') ######################################## ## +-## Manage temporary directories in /tmp. +## Allow the specified type to associate +## to a filesystem with the type of the +## / file system -+## + ## +-## +## -+## + ## +-## Domain allowed access. +## Type of the file to associate. -+## -+## -+# + ## + ## + # +-interface(`files_manage_generic_tmp_dirs',` +interface(`files_associate_rootfs',` -+ gen_require(` + gen_require(` +- type tmp_t; + type root_t; -+ ') -+ + ') + +- manage_dirs_pattern($1, tmp_t, tmp_t) + allow $1 root_t:filesystem associate; -+') -+ -+######################################## -+## - ## Get the attributes of the tmp directory (/tmp). + ') + + ######################################## + ## +-## Manage temporary files and directories in /tmp. ++## Get the attributes of the tmp directory (/tmp). ## ## -@@ -4252,17 +5269,37 @@ interface(`files_getattr_tmp_dirs',` + ## +@@ -4410,53 +5283,56 @@ interface(`files_manage_generic_tmp_dirs',` + ## + ## + # +-interface(`files_manage_generic_tmp_files',` ++interface(`files_getattr_tmp_dirs',` + gen_require(` type tmp_t; ') +- manage_files_pattern($1, tmp_t, tmp_t) + read_lnk_files_pattern($1, tmp_t, tmp_t) - allow $1 tmp_t:dir getattr; ++ allow $1 tmp_t:dir getattr; ') ######################################## ## +-## Read symbolic links in the tmp directory (/tmp). +## Do not audit attempts to check the +## access on tmp files -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_read_generic_tmp_symlinks',` +interface(`files_dontaudit_access_check_tmp',` -+ gen_require(` + gen_require(` +- type tmp_t; + type etc_t; -+ ') -+ + ') + +- read_lnk_files_pattern($1, tmp_t, tmp_t) + dontaudit $1 tmp_t:dir_file_class_set audit_access; -+') -+ -+######################################## -+## - ## Do not audit attempts to get the - ## attributes of the tmp directory (/tmp). + ') + + ######################################## + ## +-## Read and write generic named sockets in the tmp directory (/tmp). ++## Do not audit attempts to get the ++## attributes of the tmp directory (/tmp). ## ## ## @@ -12762,46 +13261,119 @@ index f962f76..9cb7e98 100644 ## ## # -@@ -4289,6 +5326,8 @@ interface(`files_search_tmp',` +-interface(`files_rw_generic_tmp_sockets',` ++interface(`files_dontaudit_getattr_tmp_dirs',` + gen_require(` type tmp_t; ') -+ fs_search_tmpfs($1) -+ read_lnk_files_pattern($1, tmp_t, tmp_t) - allow $1 tmp_t:dir search_dir_perms; +- rw_sock_files_pattern($1, tmp_t, tmp_t) ++ dontaudit $1 tmp_t:dir getattr; ') -@@ -4325,6 +5364,7 @@ interface(`files_list_tmp',` - type tmp_t; + ######################################## + ## +-## Set the attributes of all tmp directories. ++## Search the tmp directory (/tmp). + ## + ## + ## +@@ -4464,77 +5340,93 @@ interface(`files_rw_generic_tmp_sockets',` + ## + ## + # +-interface(`files_setattr_all_tmp_dirs',` ++interface(`files_search_tmp',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; ') +- allow $1 tmpfile:dir { search_dir_perms setattr }; ++ fs_search_tmpfs($1) + read_lnk_files_pattern($1, tmp_t, tmp_t) - allow $1 tmp_t:dir list_dir_perms; ++ allow $1 tmp_t:dir search_dir_perms; ') -@@ -4334,7 +5374,7 @@ interface(`files_list_tmp',` + ######################################## + ## +-## List all tmp directories. ++## Do not audit attempts to search the tmp directory (/tmp). ## ## ## --## Domain not to audit. +-## Domain allowed access. +## Domain to not audit. ## ## # -@@ -4346,14 +5386,33 @@ interface(`files_dontaudit_list_tmp',` - dontaudit $1 tmp_t:dir list_dir_perms; +-interface(`files_list_all_tmp',` ++interface(`files_dontaudit_search_tmp',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; + ') + +- allow $1 tmpfile:dir list_dir_perms; ++ dontaudit $1 tmp_t:dir search_dir_perms; ') --######################################## -+####################################### + ######################################## ## --## Remove entries from the tmp directory. -+## Allow read and write to the tmp directory (/tmp). +-## Relabel to and from all temporary +-## directory types. ++## Read the tmp directory (/tmp). ## ## --## --## Domain allowed access. --## + ## + ## Domain allowed access. + ## + ## +-## + # +-interface(`files_relabel_all_tmp_dirs',` ++interface(`files_list_tmp',` + gen_require(` +- attribute tmpfile; +- type var_t; ++ type tmp_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- relabel_dirs_pattern($1, tmpfile, tmpfile) ++ read_lnk_files_pattern($1, tmp_t, tmp_t) ++ allow $1 tmp_t:dir list_dir_perms; + ') + + ######################################## + ## +-## Do not audit attempts to get the attributes +-## of all tmp files. ++## Do not audit listing of the tmp directory (/tmp). + ## + ## + ## +-## Domain not to audit. ++## Domain to not audit. + ## + ## + # +-interface(`files_dontaudit_getattr_all_tmp_files',` ++interface(`files_dontaudit_list_tmp',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; + ') + +- dontaudit $1 tmpfile:file getattr; ++ dontaudit $1 tmp_t:dir list_dir_perms; ++') ++ ++####################################### ++## ++## Allow read and write to the tmp directory (/tmp). ++## ++## +## +## Domain not to audit. +## @@ -12814,33 +13386,87 @@ index f962f76..9cb7e98 100644 + + files_search_tmp($1) + allow $1 tmp_t:dir rw_dir_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Allow attempts to get the attributes +-## of all tmp files. +## Remove entries from the tmp directory. -+## -+## -+## -+## Domain allowed access. -+## + ## + ## + ## +@@ -4542,110 +5434,116 @@ interface(`files_dontaudit_getattr_all_tmp_files',` + ## ## # - interface(`files_delete_tmp_dir_entry',` -@@ -4361,6 +5420,7 @@ interface(`files_delete_tmp_dir_entry',` - type tmp_t; +-interface(`files_getattr_all_tmp_files',` ++interface(`files_delete_tmp_dir_entry',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; ') +- allow $1 tmpfile:file getattr; + files_search_tmp($1) - allow $1 tmp_t:dir del_entry_dir_perms; ++ allow $1 tmp_t:dir del_entry_dir_perms; + ') + + ######################################## + ## +-## Relabel to and from all temporary +-## file types. ++## Read files in the tmp directory (/tmp). + ## + ## + ## + ## Domain allowed access. + ## + ## +-## + # +-interface(`files_relabel_all_tmp_files',` ++interface(`files_read_generic_tmp_files',` + gen_require(` +- attribute tmpfile; +- type var_t; ++ type tmp_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- relabel_files_pattern($1, tmpfile, tmpfile) ++ read_files_pattern($1, tmp_t, tmp_t) ') -@@ -4402,6 +5462,32 @@ interface(`files_manage_generic_tmp_dirs',` + ######################################## + ## +-## Do not audit attempts to get the attributes +-## of all tmp sock_file. ++## Manage temporary directories in /tmp. + ## + ## + ## +-## Domain not to audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_getattr_all_tmp_sockets',` ++interface(`files_manage_generic_tmp_dirs',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; + ') + +- dontaudit $1 tmpfile:sock_file getattr; ++ manage_dirs_pattern($1, tmp_t, tmp_t) + ') ######################################## ## +-## Read all tmp files. +## Allow shared library text relocations in tmp files. -+## + ## +## +##

+## Allow shared library text relocations in tmp files. @@ -12849,1094 +13475,2966 @@ index f962f76..9cb7e98 100644 +## This is added to support java policy. +##

+##
-+## -+## -+## Domain allowed access. -+## -+## -+# + ## + ## + ## Domain allowed access. + ## + ## + # +-interface(`files_read_all_tmp_files',` +interface(`files_execmod_tmp',` -+ gen_require(` -+ attribute tmpfile; -+ ') -+ + gen_require(` + attribute tmpfile; + ') + +- read_files_pattern($1, tmpfile, tmpfile) + allow $1 tmpfile:file execmod; -+') -+ -+######################################## -+## - ## Manage temporary files and directories in /tmp. - ## - ## -@@ -4456,6 +5542,42 @@ interface(`files_rw_generic_tmp_sockets',` + ') ######################################## ## -+## Relabel a dir from the type used in /tmp. -+## -+## -+## -+## Domain allowed access. -+## -+## +-## Create an object in the tmp directories, with a private +-## type using a type transition. ++## Manage temporary files and directories in /tmp. + ##
+ ## + ## + ## Domain allowed access. + ## + ## +-## +-## +-## The type of the object to be created. +-## +-## +-## +-## +-## The object class of the object being created. +-## +-## +-## +# -+interface(`files_relabelfrom_tmp_dirs',` ++interface(`files_manage_generic_tmp_files',` + gen_require(` + type tmp_t; + ') + -+ relabelfrom_dirs_pattern($1, tmp_t, tmp_t) ++ manage_files_pattern($1, tmp_t, tmp_t) +') + +######################################## +## -+## Relabel a file from the type used in /tmp. ++## Read symbolic links in the tmp directory (/tmp). +## +## -+## + ## +-## The name of the object being created. +## Domain allowed access. -+## -+## -+# -+interface(`files_relabelfrom_tmp_files',` -+ gen_require(` -+ type tmp_t; -+ ') -+ -+ relabelfrom_files_pattern($1, tmp_t, tmp_t) -+') -+ -+######################################## -+## - ## Set the attributes of all tmp directories. - ## - ## -@@ -4474,6 +5596,60 @@ interface(`files_setattr_all_tmp_dirs',` + ## + ## + # +-interface(`files_tmp_filetrans',` ++interface(`files_read_generic_tmp_symlinks',` + gen_require(` + type tmp_t; + ') + +- filetrans_pattern($1, tmp_t, $2, $3, $4) ++ read_lnk_files_pattern($1, tmp_t, tmp_t) + ') ######################################## ## -+## Allow caller to read inherited tmp files. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_read_inherited_tmp_files',` -+ gen_require(` -+ attribute tmpfile; -+ ') -+ -+ allow $1 tmpfile:file { append read_inherited_file_perms }; -+') -+ -+######################################## -+## -+## Allow caller to append inherited tmp files. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_append_inherited_tmp_files',` -+ gen_require(` -+ attribute tmpfile; -+ ') -+ -+ allow $1 tmpfile:file append_inherited_file_perms; -+') -+ -+######################################## -+## -+## Allow caller to read and write inherited tmp files. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_rw_inherited_tmp_file',` -+ gen_require(` -+ attribute tmpfile; -+ ') -+ -+ allow $1 tmpfile:file rw_inherited_file_perms; -+') -+ -+######################################## -+## - ## List all tmp directories. - ## - ## -@@ -4519,7 +5695,7 @@ interface(`files_relabel_all_tmp_dirs',` +-## Delete the contents of /tmp. ++## Read and write generic named sockets in the tmp directory (/tmp). ##
## ## --## Domain not to audit. -+## Domain to not audit. +@@ -4653,22 +5551,17 @@ interface(`files_tmp_filetrans',` ## ## # -@@ -4579,7 +5755,7 @@ interface(`files_relabel_all_tmp_files',` +-interface(`files_purge_tmp',` ++interface(`files_rw_generic_tmp_sockets',` + gen_require(` +- attribute tmpfile; ++ type tmp_t; + ') + +- allow $1 tmpfile:dir list_dir_perms; +- delete_dirs_pattern($1, tmpfile, tmpfile) +- delete_files_pattern($1, tmpfile, tmpfile) +- delete_lnk_files_pattern($1, tmpfile, tmpfile) +- delete_fifo_files_pattern($1, tmpfile, tmpfile) +- delete_sock_files_pattern($1, tmpfile, tmpfile) ++ rw_sock_files_pattern($1, tmp_t, tmp_t) + ') + + ######################################## + ## +-## Set the attributes of the /usr directory. ++## Relabel a dir from the type used in /tmp. ## ## ## --## Domain not to audit. -+## Domain to not audit. +@@ -4676,17 +5569,17 @@ interface(`files_purge_tmp',` ## ## # -@@ -4611,6 +5787,44 @@ interface(`files_read_all_tmp_files',` +-interface(`files_setattr_usr_dirs',` ++interface(`files_relabelfrom_tmp_dirs',` + gen_require(` +- type usr_t; ++ type tmp_t; + ') - ######################################## - ## -+## Do not audit attempts to read or write -+## all leaked tmpfiles files. -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_dontaudit_tmp_file_leaks',` -+ gen_require(` -+ attribute tmpfile; -+ ') -+ -+ dontaudit $1 tmpfile:file rw_inherited_file_perms; -+') -+ -+######################################## -+## -+## Do allow attempts to read or write -+## all leaked tmpfiles files. -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_rw_tmp_file_leaks',` -+ gen_require(` -+ attribute tmpfile; -+ ') -+ -+ allow $1 tmpfile:file rw_inherited_file_perms; -+') -+ -+######################################## -+## - ## Create an object in the tmp directories, with a private - ## type using a type transition. - ## -@@ -4664,6 +5878,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) -+ delete_chr_files_pattern($1, tmpfile, tmpfile) -+ delete_blk_files_pattern($1, tmpfile, tmpfile) -+ files_list_isid_type_dirs($1) -+ files_delete_isid_type_dirs($1) -+ files_delete_isid_type_files($1) -+ files_delete_isid_type_symlinks($1) -+ files_delete_isid_type_fifo_files($1) -+ files_delete_isid_type_sock_files($1) -+ files_delete_isid_type_blk_files($1) -+ files_delete_isid_type_chr_files($1) +- allow $1 usr_t:dir setattr; ++ relabelfrom_dirs_pattern($1, tmp_t, tmp_t) ') ######################################## -@@ -5112,6 +6336,24 @@ interface(`files_create_kernel_symbol_table',` - - ######################################## ## -+## Dontaudit getattr attempts on the system.map file -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_dontaduit_getattr_kernel_symbol_table',` -+ gen_require(` -+ type system_map_t; -+ ') -+ -+ dontaudit $1 system_map_t:file getattr; -+') -+ -+######################################## -+## - ## Read system.map in the /boot directory. +-## Search the content of /usr. ++## Relabel a file from the type used in /tmp. ## ## -@@ -5241,6 +6483,24 @@ interface(`files_list_var',` + ## +@@ -4694,18 +5587,17 @@ interface(`files_setattr_usr_dirs',` + ## + ## + # +-interface(`files_search_usr',` ++interface(`files_relabelfrom_tmp_files',` + gen_require(` +- type usr_t; ++ type tmp_t; + ') + +- allow $1 usr_t:dir search_dir_perms; ++ relabelfrom_files_pattern($1, tmp_t, tmp_t) + ') ######################################## ## -+## Do not audit listing of the var directory (/var). -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_dontaudit_list_var',` -+ gen_require(` -+ type var_t; -+ ') -+ -+ dontaudit $1 var_t:dir list_dir_perms; -+') -+ -+######################################## -+## - ## Create, read, write, and delete directories - ## in the /var directory. +-## List the contents of generic +-## directories in /usr. ++## Set the attributes of all tmp directories. ## -@@ -5328,7 +6588,7 @@ interface(`files_dontaudit_rw_var_files',` - type var_t; + ## + ## +@@ -4713,35 +5605,35 @@ interface(`files_search_usr',` + ## + ## + # +-interface(`files_list_usr',` ++interface(`files_setattr_all_tmp_dirs',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ') -- dontaudit $1 var_t:file rw_file_perms; -+ dontaudit $1 var_t:file rw_inherited_file_perms; +- allow $1 usr_t:dir list_dir_perms; ++ allow $1 tmpfile:dir { search_dir_perms setattr }; ') ######################################## -@@ -5527,6 +6787,25 @@ interface(`files_rw_var_lib_dirs',` - - ######################################## ## -+## Create directories in /var/lib -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_create_var_lib_dirs',` -+ gen_require(` -+ type var_lib_t; -+ ') -+ -+ allow $1 var_lib_t:dir { create rw_dir_perms }; -+') -+ -+ -+######################################## -+## - ## Create objects in the /var/lib directory +-## Do not audit write of /usr dirs ++## Allow caller to read inherited tmp files. ## ## -@@ -5596,6 +6875,25 @@ interface(`files_read_var_lib_symlinks',` - read_lnk_files_pattern($1, { var_t var_lib_t }, var_lib_t) - ') - -+######################################## -+## -+## manage generic symbolic links -+## in the /var/lib directory. -+## -+## -+## + ## +-## Domain to not audit. +## Domain allowed access. -+## -+## -+# -+interface(`files_manage_var_lib_symlinks',` -+ gen_require(` -+ type var_lib_t; -+ ') -+ -+ manage_lnk_files_pattern($1,var_lib_t,var_lib_t) -+') -+ - # cjp: the next two interfaces really need to be fixed - # in some way. They really neeed their own types. + ## + ## + # +-interface(`files_dontaudit_write_usr_dirs',` ++interface(`files_read_inherited_tmp_files',` + gen_require(` +- type usr_t; ++ attribute tmpfile; + ') -@@ -5641,7 +6939,7 @@ interface(`files_manage_mounttab',` +- dontaudit $1 usr_t:dir write; ++ allow $1 tmpfile:file { append read_inherited_file_perms }; + ') ######################################## ## --## Set the attributes of the generic lock directories. -+## List generic lock directories. +-## Add and remove entries from /usr directories. ++## Allow caller to append inherited tmp files. ## ## ## -@@ -5649,12 +6947,13 @@ interface(`files_manage_mounttab',` +@@ -4749,36 +5641,35 @@ interface(`files_dontaudit_write_usr_dirs',` ## ## # --interface(`files_setattr_lock_dirs',` -+interface(`files_list_locks',` +-interface(`files_rw_usr_dirs',` ++interface(`files_append_inherited_tmp_files',` gen_require(` - type var_t, var_lock_t; +- type usr_t; ++ attribute tmpfile; ') -- setattr_dirs_pattern($1, var_t, var_lock_t) -+ files_search_locks($1) -+ list_dirs_pattern($1, var_t, var_lock_t) +- allow $1 usr_t:dir rw_dir_perms; ++ allow $1 tmpfile:file append_inherited_file_perms; ') ######################################## -@@ -5672,6 +6971,7 @@ interface(`files_search_locks',` - type var_t, var_lock_t; + ## +-## Do not audit attempts to add and remove +-## entries from /usr directories. ++## Allow caller to read and write inherited tmp files. + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_rw_usr_dirs',` ++interface(`files_rw_inherited_tmp_file',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ') -+ files_search_pids($1) - allow $1 var_lock_t:lnk_file read_lnk_file_perms; - search_dirs_pattern($1, var_t, var_lock_t) +- dontaudit $1 usr_t:dir rw_dir_perms; ++ allow $1 tmpfile:file rw_inherited_file_perms; ') -@@ -5698,7 +6998,26 @@ interface(`files_dontaudit_search_locks',` ######################################## ## --## List generic lock directories. -+## Do not audit attempts to read/write inherited -+## locks (/var/lock). -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_dontaudit_rw_inherited_locks',` -+ gen_require(` -+ type var_lock_t; -+ ') -+ -+ dontaudit $1 var_lock_t:file rw_inherited_file_perms; -+') -+ -+######################################## -+## -+## Set the attributes of the /var/lock directory. +-## Delete generic directories in /usr in the caller domain. ++## List all tmp directories. ## ## ## -@@ -5706,13 +7025,12 @@ interface(`files_dontaudit_search_locks',` +@@ -4786,111 +5677,100 @@ interface(`files_dontaudit_rw_usr_dirs',` ## ## # --interface(`files_list_locks',` -+interface(`files_setattr_lock_dirs',` +-interface(`files_delete_usr_dirs',` ++interface(`files_list_all_tmp',` gen_require(` -- type var_t, var_lock_t; -+ type var_lock_t; +- type usr_t; ++ attribute tmpfile; ') -- allow $1 var_lock_t:lnk_file read_lnk_file_perms; -- list_dirs_pattern($1, var_t, var_lock_t) -+ allow $1 var_lock_t:dir setattr; +- delete_dirs_pattern($1, usr_t, usr_t) ++ allow $1 tmpfile:dir list_dir_perms; ') ######################################## -@@ -5731,7 +7049,7 @@ interface(`files_rw_lock_dirs',` - type var_t, var_lock_t; + ## +-## Delete generic files in /usr in the caller domain. ++## Relabel to and from all temporary ++## directory types. + ## + ## + ## + ## Domain allowed access. + ## + ## ++## + # +-interface(`files_delete_usr_files',` ++interface(`files_relabel_all_tmp_dirs',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ++ type var_t; ') -- allow $1 var_lock_t:lnk_file read_lnk_file_perms; -+ files_search_locks($1) - rw_dirs_pattern($1, var_t, var_lock_t) +- delete_files_pattern($1, usr_t, usr_t) ++ allow $1 var_t:dir search_dir_perms; ++ relabel_dirs_pattern($1, tmpfile, tmpfile) ') -@@ -5764,7 +7082,6 @@ interface(`files_create_lock_dirs',` - ## Domain allowed access. + ######################################## + ## +-## Get the attributes of files in /usr. ++## Do not audit attempts to get the attributes ++## of all tmp files. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. ## ## --## # - interface(`files_relabel_all_lock_dirs',` +-interface(`files_getattr_usr_files',` ++interface(`files_dontaudit_getattr_all_tmp_files',` gen_require(` -@@ -5779,7 +7096,7 @@ interface(`files_relabel_all_lock_dirs',` +- type usr_t; ++ attribute tmpfile; + ') + +- getattr_files_pattern($1, usr_t, usr_t) ++ dontaudit $1 tmpfile:file getattr; + ') ######################################## ## --## Get the attributes of generic lock files. -+## Relabel to and from all lock file types. +-## Read generic files in /usr. ++## Allow attempts to get the attributes ++## of all tmp files. ## +-## +-##

+-## Allow the specified domain to read generic +-## files in /usr. These files are various program +-## files that do not have more specific SELinux types. +-## Some examples of these files are: +-##

+-##
    +-##
  • /usr/include/*
  • +-##
  • /usr/share/doc/*
  • +-##
  • /usr/share/info/*
  • +-##
+-##

+-## Generally, it is safe for many domains to have +-## this access. +-##

+-##
## ## -@@ -5787,13 +7104,33 @@ interface(`files_relabel_all_lock_dirs',` + ## Domain allowed access. ## ## +-## # --interface(`files_getattr_generic_locks',` -+interface(`files_relabel_all_lock_files',` +-interface(`files_read_usr_files',` ++interface(`files_getattr_all_tmp_files',` gen_require(` -+ attribute lockfile; - type var_t, var_lock_t; +- type usr_t; ++ attribute tmpfile; ') - allow $1 var_t:dir search_dir_perms; - allow $1 var_lock_t:lnk_file read_lnk_file_perms; -+ relabel_files_pattern($1, lockfile, lockfile) -+') -+ -+######################################## -+## -+## Get the attributes of generic lock files. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_getattr_generic_locks',` -+ gen_require(` -+ type var_t, var_lock_t; -+ ') -+ -+ files_search_locks($1) - allow $1 var_lock_t:dir list_dir_perms; - getattr_files_pattern($1, var_lock_t, var_lock_t) +- allow $1 usr_t:dir list_dir_perms; +- read_files_pattern($1, usr_t, usr_t) +- read_lnk_files_pattern($1, usr_t, usr_t) ++ allow $1 tmpfile:file getattr; ') -@@ -5809,13 +7146,12 @@ interface(`files_getattr_generic_locks',` + + ######################################## + ## +-## Execute generic programs in /usr in the caller domain. ++## Relabel to and from all temporary ++## file types. + ## + ## + ## + ## Domain allowed access. + ## ## ++## # - interface(`files_delete_generic_locks',` -- gen_require(` -+ gen_require(` - type var_t, var_lock_t; -- ') -+ ') +-interface(`files_exec_usr_files',` ++interface(`files_relabel_all_tmp_files',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ++ type var_t; + ') -- allow $1 var_t:dir search_dir_perms; -- allow $1 var_lock_t:lnk_file read_lnk_file_perms; -- delete_files_pattern($1, var_lock_t, var_lock_t) -+ files_search_locks($1) -+ delete_files_pattern($1, var_lock_t, var_lock_t) +- allow $1 usr_t:dir list_dir_perms; +- exec_files_pattern($1, usr_t, usr_t) +- read_lnk_files_pattern($1, usr_t, usr_t) ++ allow $1 var_t:dir search_dir_perms; ++ relabel_files_pattern($1, tmpfile, tmpfile) ') ######################################## -@@ -5834,9 +7170,7 @@ interface(`files_manage_generic_locks',` - type var_t, var_lock_t; + ## +-## dontaudit write of /usr files ++## Do not audit attempts to get the attributes ++## of all tmp sock_file. + ## + ## + ## +@@ -4898,35 +5778,17 @@ interface(`files_exec_usr_files',` + ## + ## + # +-interface(`files_dontaudit_write_usr_files',` +- gen_require(` +- type usr_t; +- ') +- +- dontaudit $1 usr_t:file write; +-') +- +-######################################## +-## +-## Create, read, write, and delete files in the /usr directory. +-## +-## +-## +-## Domain allowed access. +-## +-## +-# +-interface(`files_manage_usr_files',` ++interface(`files_dontaudit_getattr_all_tmp_sockets',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ') -- allow $1 var_t:dir search_dir_perms; -- allow $1 var_lock_t:lnk_file read_lnk_file_perms; -- manage_dirs_pattern($1, var_lock_t, var_lock_t) -+ files_search_locks($1) - manage_files_pattern($1, var_lock_t, var_lock_t) +- manage_files_pattern($1, usr_t, usr_t) ++ dontaudit $1 tmpfile:sock_file getattr; ') -@@ -5878,8 +7212,7 @@ interface(`files_read_all_locks',` - type var_t, var_lock_t; - ') - -- allow $1 var_lock_t:lnk_file read_lnk_file_perms; -- allow $1 { var_t var_lock_t }:dir search_dir_perms; -+ files_search_locks($1) - allow $1 lockfile:dir list_dir_perms; - read_files_pattern($1, lockfile, lockfile) - read_lnk_files_pattern($1, lockfile, lockfile) -@@ -5901,8 +7234,7 @@ interface(`files_manage_all_locks',` - type var_t, var_lock_t; - ') - -- allow $1 var_lock_t:lnk_file read_lnk_file_perms; -- allow $1 { var_t var_lock_t }:dir search_dir_perms; -+ files_search_locks($1) - manage_dirs_pattern($1, lockfile, lockfile) - manage_files_pattern($1, lockfile, lockfile) - manage_lnk_files_pattern($1, lockfile, lockfile) -@@ -5939,8 +7271,7 @@ interface(`files_lock_filetrans',` - type var_t, var_lock_t; + ######################################## + ## +-## Relabel a file to the type used in /usr. ++## Read all tmp files. + ## + ## + ## +@@ -4934,67 +5796,70 @@ interface(`files_manage_usr_files',` + ## + ## + # +-interface(`files_relabelto_usr_files',` ++interface(`files_read_all_tmp_files',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ') -- allow $1 var_t:dir search_dir_perms; -- allow $1 var_lock_t:lnk_file read_lnk_file_perms; -+ files_search_locks($1) - filetrans_pattern($1, var_lock_t, $2, $3, $4) +- relabelto_files_pattern($1, usr_t, usr_t) ++ read_files_pattern($1, tmpfile, tmpfile) ') -@@ -5979,7 +7310,7 @@ interface(`files_setattr_pid_dirs',` - type var_run_t; + ######################################## + ## +-## Relabel a file from the type used in /usr. ++## Do not audit attempts to read or write ++## all leaked tmpfiles files. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`files_relabelfrom_usr_files',` ++interface(`files_dontaudit_tmp_file_leaks',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ') -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -+ files_search_pids($1) - allow $1 var_run_t:dir setattr; +- relabelfrom_files_pattern($1, usr_t, usr_t) ++ dontaudit $1 tmpfile:file rw_inherited_file_perms; ') -@@ -5999,10 +7330,48 @@ interface(`files_search_pids',` - type var_t, var_run_t; + ######################################## + ## +-## Read symbolic links in /usr. ++## Do allow attempts to read or write ++## all leaked tmpfiles files. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`files_read_usr_symlinks',` ++interface(`files_rw_tmp_file_leaks',` + gen_require(` +- type usr_t; ++ attribute tmpfile; ') -+ allow $1 var_t:lnk_file read_lnk_file_perms; - allow $1 var_run_t:lnk_file read_lnk_file_perms; - search_dirs_pattern($1, var_t, var_run_t) +- read_lnk_files_pattern($1, usr_t, usr_t) ++ allow $1 tmpfile:file rw_inherited_file_perms; ') -+###################################### -+## -+## Add and remove entries from pid directories. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_rw_pid_dirs',` -+ gen_require(` -+ type var_run_t; -+ ') -+ -+ allow $1 var_run_t:dir rw_dir_perms; -+') -+ -+####################################### -+## -+## Create generic pid directory. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_create_var_run_dirs',` -+ gen_require(` -+ type var_t, var_run_t; -+ ') -+ -+ allow $1 var_t:dir search_dir_perms; -+ allow $1 var_run_t:dir create_dir_perms; -+') -+ - ######################################## - ## - ## Do not audit attempts to search -@@ -6025,6 +7394,43 @@ interface(`files_dontaudit_search_pids',` - ######################################## ## -+## Do not audit attempts to search -+## the all /var/run directory. -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_dontaudit_search_all_pids',` -+ gen_require(` -+ attribute pidfile; -+ ') -+ -+ dontaudit $1 pidfile:dir search_dir_perms; -+') -+ -+######################################## -+## -+## Allow search the all /var/run directory. -+## -+## -+## -+## Domain to not audit. -+## -+## -+# -+interface(`files_search_all_pids',` -+ gen_require(` -+ attribute pidfile; -+ ') -+ -+ allow $1 pidfile:dir search_dir_perms; -+') -+ -+######################################## -+## - ## List the contents of the runtime process - ## ID directories (/var/run). +-## Create objects in the /usr directory ++## Create an object in the tmp directories, with a private ++## type using a type transition. ## -@@ -6039,7 +7445,7 @@ interface(`files_list_pids',` - type var_t, var_run_t; + ## + ## + ## Domain allowed access. + ## + ## +-## ++## + ## +-## The type of the object to be created ++## The type of the object to be created. + ## + ## +-## ++## + ## +-## The object class. ++## The object class of the object being created. + ## + ## + ## +@@ -5003,35 +5868,50 @@ interface(`files_read_usr_symlinks',` + ## + ## + # +-interface(`files_usr_filetrans',` ++interface(`files_tmp_filetrans',` + gen_require(` +- type usr_t; ++ type tmp_t; ') -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -+ files_search_pids($1) - list_dirs_pattern($1, var_t, var_run_t) +- filetrans_pattern($1, usr_t, $2, $3, $4) ++ filetrans_pattern($1, tmp_t, $2, $3, $4) ') -@@ -6058,7 +7464,7 @@ interface(`files_read_generic_pids',` - type var_t, var_run_t; + ######################################## + ## +-## Do not audit attempts to search /usr/src. ++## Delete the contents of /tmp. + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_search_src',` ++interface(`files_purge_tmp',` + gen_require(` +- type src_t; ++ attribute tmpfile; ') -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -+ files_search_pids($1) - list_dirs_pattern($1, var_t, var_run_t) - read_files_pattern($1, var_run_t, var_run_t) +- dontaudit $1 src_t:dir search_dir_perms; ++ allow $1 tmpfile:dir list_dir_perms; ++ delete_dirs_pattern($1, tmpfile, tmpfile) ++ delete_files_pattern($1, tmpfile, tmpfile) ++ delete_lnk_files_pattern($1, tmpfile, tmpfile) ++ delete_fifo_files_pattern($1, tmpfile, tmpfile) ++ delete_sock_files_pattern($1, tmpfile, tmpfile) ++ delete_chr_files_pattern($1, tmpfile, tmpfile) ++ delete_blk_files_pattern($1, tmpfile, tmpfile) ++ files_list_isid_type_dirs($1) ++ files_delete_isid_type_dirs($1) ++ files_delete_isid_type_files($1) ++ files_delete_isid_type_symlinks($1) ++ files_delete_isid_type_fifo_files($1) ++ files_delete_isid_type_sock_files($1) ++ files_delete_isid_type_blk_files($1) ++ files_delete_isid_type_chr_files($1) ') -@@ -6078,7 +7484,7 @@ interface(`files_write_generic_pid_pipes',` - type var_run_t; + + ######################################## + ## +-## Get the attributes of files in /usr/src. ++## Set the attributes of the /usr directory. + ## + ## + ## +@@ -5039,20 +5919,17 @@ interface(`files_dontaudit_search_src',` + ## + ## + # +-interface(`files_getattr_usr_src_files',` ++interface(`files_setattr_usr_dirs',` + gen_require(` +- type usr_t, src_t; ++ type usr_t; ') -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -+ files_search_pids($1) - allow $1 var_run_t:fifo_file write; +- getattr_files_pattern($1, src_t, src_t) +- +- # /usr/src/linux symlink: +- read_lnk_files_pattern($1, usr_t, src_t) ++ allow $1 usr_t:dir setattr; ') -@@ -6140,7 +7546,6 @@ interface(`files_pid_filetrans',` + ######################################## + ## +-## Read files in /usr/src. ++## Search the content of /usr. + ## + ## + ## +@@ -5060,20 +5937,18 @@ interface(`files_getattr_usr_src_files',` + ## + ## + # +-interface(`files_read_usr_src_files',` ++interface(`files_search_usr',` + gen_require(` +- type usr_t, src_t; ++ type usr_t; ') - allow $1 var_t:dir search_dir_perms; -- allow $1 var_run_t:lnk_file read_lnk_file_perms; - filetrans_pattern($1, var_run_t, $2, $3, $4) + allow $1 usr_t:dir search_dir_perms; +- read_files_pattern($1, { usr_t src_t }, src_t) +- read_lnk_files_pattern($1, { usr_t src_t }, src_t) +- allow $1 src_t:dir list_dir_perms; ') -@@ -6169,6 +7574,24 @@ interface(`files_pid_filetrans_lock_dir',` - ######################################## ## -+## rw generic pid files inherited from another process -+## -+## -+## -+## Domain allowed access. -+## -+## -+# -+interface(`files_rw_inherited_generic_pid_files',` -+ gen_require(` -+ type var_run_t; -+ ') -+ -+ allow $1 var_run_t:file rw_inherited_file_perms; -+') -+ -+######################################## -+## - ## Read and write generic process ID files. +-## Execute programs in /usr/src in the caller domain. ++## List the contents of generic ++## directories in /usr. ## ## -@@ -6182,7 +7605,7 @@ interface(`files_rw_generic_pids',` - type var_t, var_run_t; + ## +@@ -5081,38 +5956,35 @@ interface(`files_read_usr_src_files',` + ## + ## + # +-interface(`files_exec_usr_src_files',` ++interface(`files_list_usr',` + gen_require(` +- type usr_t, src_t; ++ type usr_t; ') -- allow $1 var_run_t:lnk_file read_lnk_file_perms; -+ files_search_pids($1) - list_dirs_pattern($1, var_t, var_run_t) - rw_files_pattern($1, var_run_t, var_run_t) +- list_dirs_pattern($1, usr_t, src_t) +- exec_files_pattern($1, src_t, src_t) +- read_lnk_files_pattern($1, src_t, src_t) ++ allow $1 usr_t:dir list_dir_perms; ') -@@ -6249,55 +7672,43 @@ interface(`files_dontaudit_ioctl_all_pids',` ######################################## ## --## Read all process ID files. -+## Relable all pid directories +-## Install a system.map into the /boot directory. ++## Do not audit write of /usr dirs ## ## ## - ## Domain allowed access. +-## Domain allowed access. ++## Domain to not audit. ## ## --## # --interface(`files_read_all_pids',` -+interface(`files_relabel_all_pid_dirs',` +-interface(`files_create_kernel_symbol_table',` ++interface(`files_dontaudit_write_usr_dirs',` gen_require(` - attribute pidfile; -- type var_t, var_run_t; +- type boot_t, system_map_t; ++ type usr_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) -+ relabel_dirs_pattern($1, pidfile, pidfile) +- allow $1 boot_t:dir { list_dir_perms add_entry_dir_perms }; +- allow $1 system_map_t:file { create_file_perms rw_file_perms }; ++ dontaudit $1 usr_t:dir write; ') ######################################## ## --## Delete all process IDs. -+## Delete all pid sockets +-## Read system.map in the /boot directory. ++## Add and remove entries from /usr directories. ## ## ## - ## Domain allowed access. +@@ -5120,37 +5992,36 @@ interface(`files_create_kernel_symbol_table',` ## ## --## # --interface(`files_delete_all_pids',` -+interface(`files_delete_all_pid_sockets',` +-interface(`files_read_kernel_symbol_table',` ++interface(`files_rw_usr_dirs',` gen_require(` - attribute pidfile; -- type var_t, var_run_t; +- type boot_t, system_map_t; ++ type usr_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 }) -+ allow $1 pidfile:sock_file delete_sock_file_perms; +- allow $1 boot_t:dir list_dir_perms; +- read_files_pattern($1, boot_t, system_map_t) ++ allow $1 usr_t:dir rw_dir_perms; ') ######################################## ## --## Delete all process ID directories. -+## Create all pid sockets +-## Delete a system.map in the /boot directory. ++## Do not audit attempts to add and remove ++## entries from /usr directories. ## ## ## -@@ -6305,42 +7716,35 @@ interface(`files_delete_all_pids',` +-## Domain allowed access. ++## Domain to not audit. ## ## # --interface(`files_delete_all_pid_dirs',` -+interface(`files_create_all_pid_sockets',` +-interface(`files_delete_kernel_symbol_table',` ++interface(`files_dontaudit_rw_usr_dirs',` gen_require(` - attribute pidfile; -- type var_t, var_run_t; +- type boot_t, system_map_t; ++ type usr_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) -+ allow $1 pidfile:sock_file create_sock_file_perms; +- allow $1 boot_t:dir list_dir_perms; +- delete_files_pattern($1, boot_t, system_map_t) ++ dontaudit $1 usr_t:dir rw_dir_perms; ') ######################################## ## --## Create, read, write and delete all --## var_run (pid) content -+## Create all pid named pipes +-## Search the contents of /var. ++## Delete generic directories in /usr in the caller domain. ## ## ## --## Domain alloed access. -+## Domain allowed access. +@@ -5158,35 +6029,35 @@ interface(`files_delete_kernel_symbol_table',` ## ## # --interface(`files_manage_all_pids',` -+interface(`files_create_all_pid_pipes',` +-interface(`files_search_var',` ++interface(`files_delete_usr_dirs',` gen_require(` - attribute pidfile; +- type var_t; ++ type usr_t; ') -- manage_dirs_pattern($1, pidfile, pidfile) -- manage_files_pattern($1, pidfile, pidfile) -- manage_lnk_files_pattern($1, pidfile, pidfile) -+ allow $1 pidfile:fifo_file create_fifo_file_perms; +- allow $1 var_t:dir search_dir_perms; ++ delete_dirs_pattern($1, usr_t, usr_t) ') ######################################## ## --## Mount filesystems on all polyinstantiation --## member directories. -+## Delete all pid named pipes +-## Do not audit attempts to write to /var. ++## Delete generic files in /usr in the caller domain. ## ## ## -@@ -6348,18 +7752,18 @@ interface(`files_manage_all_pids',` +-## Domain to not audit. ++## Domain allowed access. ## ## # --interface(`files_mounton_all_poly_members',` -+interface(`files_delete_all_pid_pipes',` +-interface(`files_dontaudit_write_var_dirs',` ++interface(`files_delete_usr_files',` gen_require(` -- attribute polymember; -+ attribute pidfile; +- type var_t; ++ type usr_t; ') -- allow $1 polymember:dir mounton; -+ allow $1 pidfile:fifo_file delete_fifo_file_perms; +- dontaudit $1 var_t:dir write; ++ delete_files_pattern($1, usr_t, usr_t) ') ######################################## ## --## Search the contents of generic spool --## directories (/var/spool). -+## manage all pidfile directories -+## in the /var/run directory. +-## Allow attempts to write to /var.dirs ++## Get the attributes of files in /usr. ## ## ## -@@ -6367,37 +7771,40 @@ interface(`files_mounton_all_poly_members',` +@@ -5194,36 +6065,55 @@ interface(`files_dontaudit_write_var_dirs',` ## ## # --interface(`files_search_spool',` -+interface(`files_manage_all_pid_dirs',` +-interface(`files_write_var_dirs',` ++interface(`files_getattr_usr_files',` gen_require(` -- type var_t, var_spool_t; -+ attribute pidfile; +- type var_t; ++ type usr_t; ') -- search_dirs_pattern($1, var_t, var_spool_t) -+ manage_dirs_pattern($1,pidfile,pidfile) +- allow $1 var_t:dir write; ++ getattr_files_pattern($1, usr_t, usr_t) ') -+ ######################################## ## --## Do not audit attempts to search generic --## spool directories. -+## Read all process ID files. +-## Do not audit attempts to search +-## the contents of /var. ++## Read generic files in /usr. ## ++## ++##

++## Allow the specified domain to read generic ++## files in /usr. These files are various program ++## files that do not have more specific SELinux types. ++## Some examples of these files are: ++##

++##
    ++##
  • /usr/include/*
  • ++##
  • /usr/share/doc/*
  • ++##
  • /usr/share/info/*
  • ++##
++##

++## Generally, it is safe for many domains to have ++## this access. ++##

++##
## ## -## Domain to not audit. +## Domain allowed access. ## ## -+## ++## # --interface(`files_dontaudit_search_spool',` -+interface(`files_read_all_pids',` +-interface(`files_dontaudit_search_var',` ++interface(`files_read_usr_files',` gen_require(` -- type var_spool_t; -+ attribute pidfile; -+ type var_t; +- type var_t; ++ type usr_t; ') -- dontaudit $1 var_spool_t:dir search_dir_perms; -+ list_dirs_pattern($1, var_t, pidfile) -+ read_files_pattern($1, pidfile, pidfile) -+ read_lnk_files_pattern($1, pidfile, pidfile) +- dontaudit $1 var_t:dir search_dir_perms; ++ allow $1 usr_t:dir list_dir_perms; ++ read_files_pattern($1, usr_t, usr_t) ++ read_lnk_files_pattern($1, usr_t, usr_t) ') ######################################## ## --## List the contents of generic spool --## (/var/spool) directories. -+## Relable all pid files +-## List the contents of /var. ++## Execute generic programs in /usr in the caller domain. ## ## ## -@@ -6405,18 +7812,17 @@ interface(`files_dontaudit_search_spool',` +@@ -5231,36 +6121,37 @@ interface(`files_dontaudit_search_var',` ## ## # --interface(`files_list_spool',` -+interface(`files_relabel_all_pid_files',` +-interface(`files_list_var',` ++interface(`files_exec_usr_files',` gen_require(` -- type var_t, var_spool_t; -+ attribute pidfile; +- type var_t; ++ type usr_t; ') -- list_dirs_pattern($1, var_t, var_spool_t) -+ relabel_files_pattern($1, pidfile, pidfile) +- allow $1 var_t:dir list_dir_perms; ++ allow $1 usr_t:dir list_dir_perms; ++ exec_files_pattern($1, usr_t, usr_t) ++ read_lnk_files_pattern($1, usr_t, usr_t) ') ######################################## ## --## Create, read, write, and delete generic --## spool directories (/var/spool). -+## Execute generic programs in /var/run in the caller domain. +-## Create, read, write, and delete directories +-## in the /var directory. ++## dontaudit write of /usr files ## ## ## -@@ -6424,18 +7830,18 @@ interface(`files_list_spool',` +-## Domain allowed access. ++## Domain to not audit. ## ## # --interface(`files_manage_generic_spool_dirs',` -+interface(`files_exec_generic_pid_files',` +-interface(`files_manage_var_dirs',` ++interface(`files_dontaudit_write_usr_files',` gen_require(` -- type var_t, var_spool_t; -+ type var_run_t; +- type var_t; ++ type usr_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) +- allow $1 var_t:dir manage_dir_perms; ++ dontaudit $1 usr_t:file write; ') ######################################## ## --## Read generic spool files. -+## Write all sockets -+## in the /var/run directory. +-## Read files in the /var directory. ++## Create, read, write, and delete files in the /usr directory. ## ## ## -@@ -6443,19 +7849,18 @@ interface(`files_manage_generic_spool_dirs',` +@@ -5268,17 +6159,17 @@ interface(`files_manage_var_dirs',` ## ## # --interface(`files_read_generic_spool',` -+interface(`files_write_all_pid_sockets',` +-interface(`files_read_var_files',` ++interface(`files_manage_usr_files',` gen_require(` -- type var_t, var_spool_t; -+ attribute pidfile; +- type var_t; ++ type usr_t; ') -- list_dirs_pattern($1, var_t, var_spool_t) -- read_files_pattern($1, var_spool_t, var_spool_t) -+ allow $1 pidfile:sock_file write_sock_file_perms; +- read_files_pattern($1, var_t, var_t) ++ manage_files_pattern($1, usr_t, usr_t) ') ######################################## ## --## Create, read, write, and delete generic --## spool files. -+## manage all pidfiles -+## in the /var/run directory. +-## Append files in the /var directory. ++## Relabel a file to the type used in /usr. ## ## ## -@@ -6463,109 +7868,62 @@ interface(`files_read_generic_spool',` +@@ -5286,17 +6177,17 @@ interface(`files_read_var_files',` ## ## # --interface(`files_manage_generic_spool',` -+interface(`files_manage_all_pids',` +-interface(`files_append_var_files',` ++interface(`files_relabelto_usr_files',` gen_require(` -- type var_t, var_spool_t; -+ attribute pidfile; +- type var_t; ++ type usr_t; ') -- allow $1 var_t:dir search_dir_perms; -- manage_files_pattern($1, var_spool_t, var_spool_t) -+ manage_files_pattern($1,pidfile,pidfile) +- append_files_pattern($1, var_t, var_t) ++ relabelto_files_pattern($1, usr_t, usr_t) ') ######################################## ## --## Create objects in the spool directory --## with a private type with a type transition. -+## Mount filesystems on all polyinstantiation -+## member directories. +-## Read and write files in the /var directory. ++## Relabel a file from the type used in /usr. ## ## ## - ## Domain allowed access. +@@ -5304,73 +6195,86 @@ interface(`files_append_var_files',` ## ## --## --## --## 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_mounton_all_poly_members',` +-interface(`files_rw_var_files',` ++interface(`files_relabelfrom_usr_files',` gen_require(` -- type var_t, var_spool_t; -+ attribute polymember; +- type var_t; ++ type usr_t; ') -- allow $1 var_t:dir search_dir_perms; -- filetrans_pattern($1, var_spool_t, $2, $3, $4) -+ allow $1 polymember:dir mounton; +- rw_files_pattern($1, var_t, var_t) ++ relabelfrom_files_pattern($1, usr_t, usr_t) ') ######################################## ## --## Allow access to manage all polyinstantiated --## directories on the system. -+## Delete all process IDs. +-## Do not audit attempts to read and write +-## files in the /var directory. ++## Read symbolic links in /usr. ## ## ## - ## Domain allowed access. +-## Domain to not audit. ++## Domain allowed access. ## ## -+## # --interface(`files_polyinstantiate_all',` -+interface(`files_delete_all_pids',` +-interface(`files_dontaudit_rw_var_files',` ++interface(`files_read_usr_symlinks',` gen_require(` -- attribute polydir, polymember, polyparent; -- type poly_t; -+ attribute pidfile; -+ type var_t, var_run_t; +- type var_t; ++ type usr_t; ') -- # Need to give access to /selinux/member -- selinux_compute_member($1) -- -- # Need sys_admin capability for mounting -- allow $1 self:capability { chown fsetid sys_admin fowner }; -- -- # Need to give access to the directories to be polyinstantiated -- allow $1 polydir:dir { create open getattr search write add_name setattr mounton rmdir }; -- -- # Need to give access to the polyinstantiated subdirectories -- allow $1 polymember:dir search_dir_perms; -- -- # Need to give access to parent directories where original -- # is remounted for polyinstantiation aware programs (like gdm) -- allow $1 polyparent:dir { getattr mounton }; -- -- # Need to give permission to create directories where applicable -- allow $1 self:process setfscreate; -- allow $1 polymember: dir { create setattr relabelto }; -- allow $1 polydir: dir { write add_name open }; -- allow $1 polyparent:dir { open read write remove_name add_name relabelfrom relabelto }; -- -- # Default type for mountpoints -- allow $1 poly_t:dir { create mounton }; -- fs_unmount_xattr_fs($1) -- -- fs_mount_tmpfs($1) -- fs_unmount_tmpfs($1) +- dontaudit $1 var_t:file rw_file_perms; ++ read_lnk_files_pattern($1, usr_t, usr_t) + ') + + ######################################## + ## +-## Create, read, write, and delete files in the /var directory. ++## Create objects in the /usr directory + ## + ## + ## + ## Domain allowed access. + ## + ## ++## ++## ++## The type of the object to be created ++## ++## ++## ++## ++## The object class. ++## ++## ++## ++## ++## The name of the object being created. ++## ++## + # +-interface(`files_manage_var_files',` ++interface(`files_usr_filetrans',` + gen_require(` +- type var_t; ++ type usr_t; + ') + +- manage_files_pattern($1, var_t, var_t) ++ filetrans_pattern($1, usr_t, $2, $3, $4) + ') + + ######################################## + ## +-## Read symbolic links in the /var directory. ++## Do not audit attempts to search /usr/src. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`files_read_var_symlinks',` ++interface(`files_dontaudit_search_src',` + gen_require(` +- type var_t; ++ type src_t; + ') + +- read_lnk_files_pattern($1, var_t, var_t) ++ dontaudit $1 src_t:dir search_dir_perms; + ') + + ######################################## + ## +-## Create, read, write, and delete symbolic +-## links in the /var directory. ++## Get the attributes of files in /usr/src. + ## + ## + ## +@@ -5378,50 +6282,41 @@ interface(`files_read_var_symlinks',` + ## + ## + # +-interface(`files_manage_var_symlinks',` ++interface(`files_getattr_usr_src_files',` + gen_require(` +- type var_t; ++ type usr_t, src_t; + ') + +- manage_lnk_files_pattern($1, var_t, var_t) ++ getattr_files_pattern($1, src_t, src_t) ++ ++ # /usr/src/linux symlink: ++ read_lnk_files_pattern($1, usr_t, src_t) + ') + + ######################################## + ## +-## Create objects in the /var directory ++## Read files in /usr/src. + ## + ## + ## + ## Domain allowed access. + ## + ## +-## +-## +-## The type of the object to be created +-## +-## +-## +-## +-## The object class. +-## +-## +-## +-## +-## The name of the object being created. +-## +-## + # +-interface(`files_var_filetrans',` ++interface(`files_read_usr_src_files',` + gen_require(` +- type var_t; ++ type usr_t, src_t; + ') + +- filetrans_pattern($1, var_t, $2, $3, $4) ++ allow $1 usr_t:dir search_dir_perms; ++ read_files_pattern($1, { usr_t src_t }, src_t) ++ read_lnk_files_pattern($1, { usr_t src_t }, src_t) ++ allow $1 src_t:dir list_dir_perms; + ') + + ######################################## + ## +-## Get the attributes of the /var/lib directory. ++## Execute programs in /usr/src in the caller domain. + ## + ## + ## +@@ -5429,69 +6324,56 @@ interface(`files_var_filetrans',` + ## + ## + # +-interface(`files_getattr_var_lib_dirs',` ++interface(`files_exec_usr_src_files',` + gen_require(` +- type var_t, var_lib_t; ++ type usr_t, src_t; + ') + +- getattr_dirs_pattern($1, var_t, var_lib_t) ++ list_dirs_pattern($1, usr_t, src_t) ++ exec_files_pattern($1, src_t, src_t) ++ read_lnk_files_pattern($1, src_t, src_t) + ') + + ######################################## + ## +-## Search the /var/lib directory. ++## Install a system.map into the /boot directory. + ## +-## +-##

+-## Search the /var/lib directory. This is +-## necessary to access files or directories under +-## /var/lib that have a private type. For example, a +-## domain accessing a private library file in the +-## /var/lib directory: +-##

+-##

+-## allow mydomain_t mylibfile_t:file read_file_perms; +-## files_search_var_lib(mydomain_t) +-##

+-##
+ ## + ## + ## Domain allowed access. + ## + ## +-## + # +-interface(`files_search_var_lib',` ++interface(`files_create_kernel_symbol_table',` + gen_require(` +- type var_t, var_lib_t; ++ type boot_t, system_map_t; + ') + +- search_dirs_pattern($1, var_t, var_lib_t) ++ allow $1 boot_t:dir { list_dir_perms add_entry_dir_perms }; ++ allow $1 system_map_t:file { create_file_perms rw_file_perms }; + ') + + ######################################## + ## +-## Do not audit attempts to search the +-## contents of /var/lib. ++## Dontaudit getattr attempts on the system.map file + ## + ## + ## + ## Domain to not audit. + ## + ## +-## + # +-interface(`files_dontaudit_search_var_lib',` ++interface(`files_dontaduit_getattr_kernel_symbol_table',` + gen_require(` +- type var_lib_t; ++ type system_map_t; + ') + +- dontaudit $1 var_lib_t:dir search_dir_perms; ++ dontaudit $1 system_map_t:file getattr; + ') + + ######################################## + ## +-## List the contents of the /var/lib directory. ++## Read system.map in the /boot directory. + ## + ## + ## +@@ -5499,17 +6381,18 @@ interface(`files_dontaudit_search_var_lib',` + ## + ## + # +-interface(`files_list_var_lib',` ++interface(`files_read_kernel_symbol_table',` + gen_require(` +- type var_t, var_lib_t; ++ type boot_t, system_map_t; + ') + +- list_dirs_pattern($1, var_t, var_lib_t) ++ allow $1 boot_t:dir list_dir_perms; ++ read_files_pattern($1, boot_t, system_map_t) + ') + +-########################################### ++######################################## + ## +-## Read-write /var/lib directories ++## Delete a system.map in the /boot directory. + ## + ## + ## +@@ -5517,70 +6400,54 @@ interface(`files_list_var_lib',` + ## + ## + # +-interface(`files_rw_var_lib_dirs',` ++interface(`files_delete_kernel_symbol_table',` + gen_require(` +- type var_lib_t; ++ type boot_t, system_map_t; + ') + +- rw_dirs_pattern($1, var_lib_t, var_lib_t) ++ allow $1 boot_t:dir list_dir_perms; ++ delete_files_pattern($1, boot_t, system_map_t) + ') + + ######################################## + ## +-## Create objects in the /var/lib directory ++## Search the contents of /var. + ## + ## + ## + ## Domain allowed access. + ## + ## +-## +-## +-## The type of the object to be created +-## +-## +-## +-## +-## The object class. +-## +-## +-## +-## +-## The name of the object being created. +-## +-## + # +-interface(`files_var_lib_filetrans',` ++interface(`files_search_var',` + gen_require(` +- type var_t, var_lib_t; ++ type var_t; + ') + + allow $1 var_t:dir search_dir_perms; +- filetrans_pattern($1, var_lib_t, $2, $3, $4) + ') + + ######################################## + ## +-## Read generic files in /var/lib. ++## Do not audit attempts to write to /var. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`files_read_var_lib_files',` ++interface(`files_dontaudit_write_var_dirs',` + gen_require(` +- type var_t, var_lib_t; ++ type var_t; + ') + +- allow $1 var_lib_t:dir list_dir_perms; +- read_files_pattern($1, { var_t var_lib_t }, var_lib_t) ++ dontaudit $1 var_t:dir write; + ') + + ######################################## + ## +-## Read generic symbolic links in /var/lib ++## Allow attempts to write to /var.dirs + ## + ## + ## +@@ -5588,41 +6455,36 @@ interface(`files_read_var_lib_files',` + ## + ## + # +-interface(`files_read_var_lib_symlinks',` ++interface(`files_write_var_dirs',` + gen_require(` +- type var_t, var_lib_t; ++ type var_t; + ') + +- read_lnk_files_pattern($1, { var_t var_lib_t }, var_lib_t) ++ allow $1 var_t:dir write; + ') + +-# cjp: the next two interfaces really need to be fixed +-# in some way. They really neeed their own types. - -- ifdef(`distro_redhat',` -- # namespace.init -- files_search_tmp($1) -- files_search_home($1) -- corecmd_exec_bin($1) -- seutil_domtrans_setfiles($1) -- ') -+ 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 }) + ######################################## + ## +-## Create, read, write, and delete the +-## pseudorandom number generator seed. ++## Do not audit attempts to search ++## the contents of /var. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`files_manage_urandom_seed',` ++interface(`files_dontaudit_search_var',` + gen_require(` +- type var_t, var_lib_t; ++ type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- manage_files_pattern($1, var_lib_t, var_lib_t) ++ dontaudit $1 var_t:dir search_dir_perms; ') ######################################## ## --## Unconfined access to files. -+## Delete all process ID directories. +-## Allow domain to manage mount tables +-## necessary for rpcd, nfsd, etc. ++## List the contents of /var. ## ## ## -@@ -6573,10 +7931,944 @@ interface(`files_polyinstantiate_all',` +@@ -5630,36 +6492,36 @@ interface(`files_manage_urandom_seed',` ## ## # --interface(`files_unconfined',` -+interface(`files_delete_all_pid_dirs',` +-interface(`files_manage_mounttab',` ++interface(`files_list_var',` gen_require(` -- attribute files_unconfined_type; -+ attribute pidfile; -+ type var_t, var_run_t; +- type var_t, var_lib_t; ++ type var_t; ') -- typeattribute $1 files_unconfined_type; +- allow $1 var_t:dir search_dir_perms; +- manage_files_pattern($1, var_lib_t, var_lib_t) ++ allow $1 var_t:dir list_dir_perms; + ') + + ######################################## + ## +-## Set the attributes of the generic lock directories. ++## Do not audit listing of the var directory (/var). + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## + # +-interface(`files_setattr_lock_dirs',` ++interface(`files_dontaudit_list_var',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- setattr_dirs_pattern($1, var_t, var_lock_t) ++ dontaudit $1 var_t:dir list_dir_perms; + ') + + ######################################## + ## +-## Search the locks directory (/var/lock). ++## Create, read, write, and delete directories ++## in the /var directory. + ## + ## + ## +@@ -5667,38 +6529,35 @@ interface(`files_setattr_lock_dirs',` + ## + ## + # +-interface(`files_search_locks',` ++interface(`files_manage_var_dirs',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- search_dirs_pattern($1, var_t, var_lock_t) ++ allow $1 var_t:dir manage_dir_perms; + ') + + ######################################## + ## +-## Do not audit attempts to search the +-## locks directory (/var/lock). ++## Read files in the /var directory. + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_search_locks',` ++interface(`files_read_var_files',` + gen_require(` +- type var_lock_t; ++ type var_t; + ') + +- dontaudit $1 var_lock_t:lnk_file read_lnk_file_perms; +- dontaudit $1 var_lock_t:dir search_dir_perms; ++ read_files_pattern($1, var_t, var_t) + ') + + ######################################## + ## +-## List generic lock directories. ++## Append files in the /var directory. + ## + ## + ## +@@ -5706,19 +6565,17 @@ interface(`files_dontaudit_search_locks',` + ## + ## + # +-interface(`files_list_locks',` ++interface(`files_append_var_files',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- list_dirs_pattern($1, var_t, var_lock_t) ++ append_files_pattern($1, var_t, var_t) + ') + + ######################################## + ## +-## Add and remove entries in the /var/lock +-## directories. ++## Read and write files in the /var directory. + ## + ## + ## +@@ -5726,60 +6583,54 @@ interface(`files_list_locks',` + ## + ## + # +-interface(`files_rw_lock_dirs',` ++interface(`files_rw_var_files',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- rw_dirs_pattern($1, var_t, var_lock_t) ++ rw_files_pattern($1, var_t, var_t) + ') + + ######################################## + ## +-## Create lock directories ++## Do not audit attempts to read and write ++## files in the /var directory. + ## + ## +-## +-## Domain allowed access ++## ++## Domain to not audit. + ## + ## + # +-interface(`files_create_lock_dirs',` ++interface(`files_dontaudit_rw_var_files',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- create_dirs_pattern($1, var_lock_t, var_lock_t) ++ dontaudit $1 var_t:file rw_inherited_file_perms; + ') + + ######################################## + ## +-## Relabel to and from all lock directory types. ++## Create, read, write, and delete files in the /var directory. + ## + ## + ## + ## Domain allowed access. + ## + ## +-## + # +-interface(`files_relabel_all_lock_dirs',` ++interface(`files_manage_var_files',` + gen_require(` +- attribute lockfile; +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- relabel_dirs_pattern($1, lockfile, lockfile) ++ manage_files_pattern($1, var_t, var_t) + ') + + ######################################## + ## +-## Get the attributes of generic lock files. ++## Read symbolic links in the /var directory. + ## + ## + ## +@@ -5787,20 +6638,18 @@ interface(`files_relabel_all_lock_dirs',` + ## + ## + # +-interface(`files_getattr_generic_locks',` ++interface(`files_read_var_symlinks',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- allow $1 var_lock_t:dir list_dir_perms; +- getattr_files_pattern($1, var_lock_t, var_lock_t) ++ read_lnk_files_pattern($1, var_t, var_t) + ') + + ######################################## + ## +-## Delete generic lock files. ++## Create, read, write, and delete symbolic ++## links in the /var directory. + ## + ## + ## +@@ -5808,165 +6657,156 @@ interface(`files_getattr_generic_locks',` + ## + ## + # +-interface(`files_delete_generic_locks',` ++interface(`files_manage_var_symlinks',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- delete_files_pattern($1, var_lock_t, var_lock_t) ++ manage_lnk_files_pattern($1, var_t, var_t) + ') + + ######################################## + ## +-## Create, read, write, and delete generic +-## lock files. ++## Create objects in the /var directory + ## + ## + ## + ## Domain allowed access. + ## + ## ++## ++## ++## The type of the object to be created ++## ++## ++## ++## ++## The object class. ++## ++## ++## ++## ++## The name of the object being created. ++## ++## + # +-interface(`files_manage_generic_locks',` ++interface(`files_var_filetrans',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- manage_dirs_pattern($1, var_lock_t, var_lock_t) +- manage_files_pattern($1, var_lock_t, var_lock_t) ++ filetrans_pattern($1, var_t, $2, $3, $4) + ') + + ######################################## + ## +-## Delete all lock files. ++## Get the attributes of the /var/lib directory. + ## + ## + ## + ## Domain allowed access. + ## + ## +-## + # +-interface(`files_delete_all_locks',` ++interface(`files_getattr_var_lib_dirs',` + gen_require(` +- attribute lockfile; +- type var_t, var_lock_t; ++ type var_t, var_lib_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- delete_files_pattern($1, lockfile, lockfile) ++ getattr_dirs_pattern($1, var_t, var_lib_t) + ') + + ######################################## + ## +-## Read all lock files. ++## Search the /var/lib directory. + ## ++## ++##

++## Search the /var/lib directory. This is ++## necessary to access files or directories under ++## /var/lib that have a private type. For example, a ++## domain accessing a private library file in the ++## /var/lib directory: ++##

++##

++## allow mydomain_t mylibfile_t:file read_file_perms; ++## files_search_var_lib(mydomain_t) ++##

++##
+ ## + ## + ## Domain allowed access. + ## + ## ++## + # +-interface(`files_read_all_locks',` ++interface(`files_search_var_lib',` + gen_require(` +- attribute lockfile; +- type var_t, var_lock_t; ++ type var_t, var_lib_t; + ') + +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- allow $1 { var_t var_lock_t }:dir search_dir_perms; +- allow $1 lockfile:dir list_dir_perms; +- read_files_pattern($1, lockfile, lockfile) +- read_lnk_files_pattern($1, lockfile, lockfile) ++ search_dirs_pattern($1, var_t, var_lib_t) + ') + + ######################################## + ## +-## manage all lock files. ++## Do not audit attempts to search the ++## contents of /var/lib. + ## + ## + ## +-## Domain allowed access. ++## Domain to not audit. + ## + ## ++## + # +-interface(`files_manage_all_locks',` ++interface(`files_dontaudit_search_var_lib',` + gen_require(` +- attribute lockfile; +- type var_t, var_lock_t; ++ type var_lib_t; + ') + +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- allow $1 { var_t var_lock_t }:dir search_dir_perms; +- manage_dirs_pattern($1, lockfile, lockfile) +- manage_files_pattern($1, lockfile, lockfile) +- manage_lnk_files_pattern($1, lockfile, lockfile) ++ dontaudit $1 var_lib_t:dir search_dir_perms; + ') + + ######################################## + ## +-## Create an object in the locks directory, with a private +-## type using a type transition. ++## List the contents of the /var/lib directory. + ## + ## + ## + ## Domain allowed access. + ## + ## +-## +-## +-## The type of the object to be created. +-## +-## +-## +-## +-## The object class of the object being created. +-## +-## +-## +-## +-## The name of the object being created. +-## +-## + # +-interface(`files_lock_filetrans',` ++interface(`files_list_var_lib',` + gen_require(` +- type var_t, var_lock_t; ++ type var_t, var_lib_t; + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_lock_t:lnk_file read_lnk_file_perms; +- filetrans_pattern($1, var_lock_t, $2, $3, $4) ++ list_dirs_pattern($1, var_t, var_lib_t) + ') + +-######################################## ++########################################### + ## +-## Do not audit attempts to get the attributes +-## of the /var/run directory. ++## Read-write /var/lib directories + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_getattr_pid_dirs',` ++interface(`files_rw_var_lib_dirs',` + gen_require(` +- type var_run_t; ++ type var_lib_t; + ') + +- dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; +- dontaudit $1 var_run_t:dir getattr; ++ rw_dirs_pattern($1, var_lib_t, var_lib_t) + ') + + ######################################## + ## +-## Set the attributes of the /var/run directory. ++## Create directories in /var/lib + ## + ## + ## +@@ -5974,59 +6814,71 @@ interface(`files_dontaudit_getattr_pid_dirs',` + ## + ## + # +-interface(`files_setattr_pid_dirs',` ++interface(`files_create_var_lib_dirs',` + gen_require(` +- type var_run_t; ++ type var_lib_t; + ') + +- allow $1 var_run_t:lnk_file read_lnk_file_perms; +- allow $1 var_run_t:dir setattr; ++ allow $1 var_lib_t:dir { create rw_dir_perms }; + ') + ++ + ######################################## + ## +-## Search the contents of runtime process +-## ID directories (/var/run). ++## Create objects in the /var/lib directory + ## + ## + ## + ## Domain allowed access. + ## + ## ++## ++## ++## The type of the object to be created ++## ++## ++## ++## ++## The object class. ++## ++## ++## ++## ++## The name of the object being created. ++## ++## + # +-interface(`files_search_pids',` ++interface(`files_var_lib_filetrans',` + gen_require(` +- type var_t, var_run_t; ++ type var_t, var_lib_t; + ') + +- allow $1 var_run_t:lnk_file read_lnk_file_perms; +- search_dirs_pattern($1, var_t, var_run_t) ++ allow $1 var_t:dir search_dir_perms; ++ filetrans_pattern($1, var_lib_t, $2, $3, $4) + ') + + ######################################## + ## +-## Do not audit attempts to search +-## the /var/run directory. ++## Read generic files in /var/lib. + ## + ## + ## +-## Domain to not audit. ++## Domain allowed access. + ## + ## + # +-interface(`files_dontaudit_search_pids',` ++interface(`files_read_var_lib_files',` + gen_require(` +- type var_run_t; ++ type var_t, var_lib_t; + ') + +- dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; +- dontaudit $1 var_run_t:dir search_dir_perms; ++ allow $1 var_lib_t:dir list_dir_perms; ++ read_files_pattern($1, { var_t var_lib_t }, var_lib_t) + ') + + ######################################## + ## +-## List the contents of the runtime process +-## ID directories (/var/run). ++## Read generic symbolic links in /var/lib + ## + ## + ## +@@ -6034,18 +6886,18 @@ interface(`files_dontaudit_search_pids',` + ## + ## + # +-interface(`files_list_pids',` ++interface(`files_read_var_lib_symlinks',` + gen_require(` +- type var_t, var_run_t; ++ type var_t, var_lib_t; + ') + +- allow $1 var_run_t:lnk_file read_lnk_file_perms; +- list_dirs_pattern($1, var_t, var_run_t) ++ read_lnk_files_pattern($1, { var_t var_lib_t }, var_lib_t) + ') + + ######################################## + ## +-## Read generic process ID files. ++## manage generic symbolic links ++## in the /var/lib directory. + ## + ## + ## +@@ -6053,19 +6905,1228 @@ interface(`files_list_pids',` + ## + ## + # +-interface(`files_read_generic_pids',` ++interface(`files_manage_var_lib_symlinks',` + gen_require(` ++ type var_lib_t; ++ ') ++ ++ manage_lnk_files_pattern($1,var_lib_t,var_lib_t) ++') ++ ++# cjp: the next two interfaces really need to be fixed ++# in some way. They really neeed their own types. ++ ++######################################## ++## ++## Create, read, write, and delete the ++## pseudorandom number generator seed. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_manage_urandom_seed',` ++ gen_require(` ++ type var_t, var_lib_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ manage_files_pattern($1, var_lib_t, var_lib_t) ++') ++ ++######################################## ++## ++## Allow domain to manage mount tables ++## necessary for rpcd, nfsd, etc. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_manage_mounttab',` ++ gen_require(` ++ type var_t, var_lib_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ manage_files_pattern($1, var_lib_t, var_lib_t) ++') ++ ++######################################## ++## ++## List generic lock directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_list_locks',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ list_dirs_pattern($1, var_t, var_lock_t) ++') ++ ++######################################## ++## ++## Search the locks directory (/var/lock). ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_search_locks',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_pids($1) ++ allow $1 var_lock_t:lnk_file read_lnk_file_perms; ++ search_dirs_pattern($1, var_t, var_lock_t) ++') ++ ++######################################## ++## ++## Do not audit attempts to search the ++## locks directory (/var/lock). ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_search_locks',` ++ gen_require(` ++ type var_lock_t; ++ ') ++ ++ dontaudit $1 var_lock_t:lnk_file read_lnk_file_perms; ++ dontaudit $1 var_lock_t:dir search_dir_perms; ++') ++ ++######################################## ++## ++## Do not audit attempts to read/write inherited ++## locks (/var/lock). ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_rw_inherited_locks',` ++ gen_require(` ++ type var_lock_t; ++ ') ++ ++ dontaudit $1 var_lock_t:file rw_inherited_file_perms; ++') ++ ++######################################## ++## ++## Set the attributes of the /var/lock directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_setattr_lock_dirs',` ++ gen_require(` ++ type var_lock_t; ++ ') ++ ++ allow $1 var_lock_t:dir setattr; ++') ++ ++######################################## ++## ++## Add and remove entries in the /var/lock ++## directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_rw_lock_dirs',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ rw_dirs_pattern($1, var_t, var_lock_t) ++') ++ ++######################################## ++## ++## Create lock directories ++## ++## ++## ++## Domain allowed access ++## ++## ++# ++interface(`files_create_lock_dirs',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ allow $1 var_lock_t:lnk_file read_lnk_file_perms; ++ create_dirs_pattern($1, var_lock_t, var_lock_t) ++') ++ ++######################################## ++## ++## Relabel to and from all lock directory types. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_relabel_all_lock_dirs',` ++ gen_require(` ++ attribute lockfile; ++ type var_t, var_lock_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ allow $1 var_lock_t:lnk_file read_lnk_file_perms; ++ relabel_dirs_pattern($1, lockfile, lockfile) ++') ++ ++######################################## ++## ++## Relabel to and from all lock file types. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_relabel_all_lock_files',` ++ gen_require(` ++ attribute lockfile; ++ type var_t, var_lock_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ allow $1 var_lock_t:lnk_file read_lnk_file_perms; ++ relabel_files_pattern($1, lockfile, lockfile) ++') ++ ++######################################## ++## ++## Get the attributes of generic lock files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_getattr_generic_locks',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ allow $1 var_lock_t:dir list_dir_perms; ++ getattr_files_pattern($1, var_lock_t, var_lock_t) ++') ++ ++######################################## ++## ++## Delete generic lock files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_delete_generic_locks',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ delete_files_pattern($1, var_lock_t, var_lock_t) ++') ++ ++######################################## ++## ++## Create, read, write, and delete generic ++## lock files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_manage_generic_locks',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ manage_files_pattern($1, var_lock_t, var_lock_t) ++') ++ ++######################################## ++## ++## Delete all lock files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`files_delete_all_locks',` ++ gen_require(` ++ attribute lockfile; ++ type var_t, var_lock_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ allow $1 var_lock_t:lnk_file read_lnk_file_perms; ++ delete_files_pattern($1, lockfile, lockfile) ++') ++ ++######################################## ++## ++## Read all lock files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_read_all_locks',` ++ gen_require(` ++ attribute lockfile; ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ allow $1 lockfile:dir list_dir_perms; ++ read_files_pattern($1, lockfile, lockfile) ++ read_lnk_files_pattern($1, lockfile, lockfile) ++') ++ ++######################################## ++## ++## manage all lock files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_manage_all_locks',` ++ gen_require(` ++ attribute lockfile; ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ manage_dirs_pattern($1, lockfile, lockfile) ++ manage_files_pattern($1, lockfile, lockfile) ++ manage_lnk_files_pattern($1, lockfile, lockfile) ++') ++ ++######################################## ++## ++## Create an object in the locks directory, with a private ++## type using a type transition. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++## ++## The type of the object to be created. ++## ++## ++## ++## ++## The object class of the object being created. ++## ++## ++## ++## ++## The name of the object being created. ++## ++## ++# ++interface(`files_lock_filetrans',` ++ gen_require(` ++ type var_t, var_lock_t; ++ ') ++ ++ files_search_locks($1) ++ filetrans_pattern($1, var_lock_t, $2, $3, $4) ++') ++ ++######################################## ++## ++## Do not audit attempts to get the attributes ++## of the /var/run directory. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_getattr_pid_dirs',` ++ gen_require(` ++ type var_run_t; ++ ') ++ ++ dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; ++ dontaudit $1 var_run_t:dir getattr; ++') ++ ++######################################## ++## ++## Set the attributes of the /var/run directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_setattr_pid_dirs',` ++ gen_require(` ++ type var_run_t; ++ ') ++ ++ files_search_pids($1) ++ allow $1 var_run_t:dir setattr; ++') ++ ++######################################## ++## ++## Search the contents of runtime process ++## ID directories (/var/run). ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_search_pids',` ++ gen_require(` ++ type var_t, var_run_t; ++ ') ++ ++ allow $1 var_t:lnk_file read_lnk_file_perms; ++ allow $1 var_run_t:lnk_file read_lnk_file_perms; ++ search_dirs_pattern($1, var_t, var_run_t) ++') ++ ++###################################### ++## ++## Add and remove entries from pid directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_rw_pid_dirs',` ++ gen_require(` ++ type var_run_t; ++ ') ++ ++ allow $1 var_run_t:dir rw_dir_perms; ++') ++ ++####################################### ++## ++## Create generic pid directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_create_var_run_dirs',` ++ gen_require(` ++ type var_t, var_run_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ allow $1 var_run_t:dir create_dir_perms; ++') ++ ++######################################## ++## ++## Do not audit attempts to search ++## the /var/run directory. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_search_pids',` ++ gen_require(` ++ type var_run_t; ++ ') ++ ++ dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; ++ dontaudit $1 var_run_t:dir search_dir_perms; ++') ++ ++######################################## ++## ++## Do not audit attempts to search ++## the all /var/run directory. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_search_all_pids',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ dontaudit $1 pidfile:dir search_dir_perms; ++') ++ ++######################################## ++## ++## Allow search the all /var/run directory. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_search_all_pids',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ allow $1 pidfile:dir search_dir_perms; ++') ++ ++######################################## ++## ++## List the contents of the runtime process ++## ID directories (/var/run). ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_list_pids',` ++ gen_require(` ++ type var_t, var_run_t; ++ ') ++ ++ files_search_pids($1) ++ list_dirs_pattern($1, var_t, var_run_t) ++') ++ ++######################################## ++## ++## Read generic process ID files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_read_generic_pids',` ++ gen_require(` ++ type var_t, var_run_t; ++ ') ++ ++ files_search_pids($1) ++ list_dirs_pattern($1, var_t, var_run_t) ++ read_files_pattern($1, var_run_t, var_run_t) ++') ++ ++######################################## ++## ++## Write named generic process ID pipes ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_write_generic_pid_pipes',` ++ gen_require(` ++ type var_run_t; ++ ') ++ ++ files_search_pids($1) ++ allow $1 var_run_t:fifo_file write; ++') ++ ++######################################## ++## ++## Create an object in the process ID directory, with a private type. ++## ++## ++##

++## Create an object in the process ID directory (e.g., /var/run) ++## with a private type. Typically this is used for creating ++## private PID files in /var/run with the private type instead ++## of the general PID file type. To accomplish this goal, ++## either the program must be SELinux-aware, or use this interface. ++##

++##

++## Related interfaces: ++##

++##
    ++##
  • files_pid_file()
  • ++##
++##

++## Example usage with a domain that can create and ++## write its PID file with a private PID file type in the ++## /var/run directory: ++##

++##

++## type mypidfile_t; ++## files_pid_file(mypidfile_t) ++## allow mydomain_t mypidfile_t:file { create_file_perms write_file_perms }; ++## files_pid_filetrans(mydomain_t, mypidfile_t, file) ++##

++##
++## ++## ++## Domain allowed access. ++## ++## ++## ++## ++## The type of the object to be created. ++## ++## ++## ++## ++## The object class of the object being created. ++## ++## ++## ++## ++## The name of the object being created. ++## ++## ++## ++# ++interface(`files_pid_filetrans',` ++ gen_require(` ++ type var_t, var_run_t; ++ ') ++ ++ allow $1 var_t:dir search_dir_perms; ++ filetrans_pattern($1, var_run_t, $2, $3, $4) ++') ++ ++######################################## ++## ++## Create a generic lock directory within the run directories ++## ++## ++## ++## Domain allowed access ++## ++## ++## ++## ++## The name of the object being created. ++## ++## ++# ++interface(`files_pid_filetrans_lock_dir',` ++ gen_require(` ++ type var_lock_t; ++ ') ++ ++ files_pid_filetrans($1, var_lock_t, dir, $2) ++') ++ ++######################################## ++## ++## rw generic pid files inherited from another process ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_rw_inherited_generic_pid_files',` ++ gen_require(` ++ type var_run_t; ++ ') ++ ++ allow $1 var_run_t:file rw_inherited_file_perms; ++') ++ ++######################################## ++## ++## Read and write generic process ID files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_rw_generic_pids',` ++ gen_require(` ++ type var_t, var_run_t; ++ ') ++ ++ files_search_pids($1) ++ list_dirs_pattern($1, var_t, var_run_t) ++ rw_files_pattern($1, var_run_t, var_run_t) ++') ++ ++######################################## ++## ++## Do not audit attempts to get the attributes of ++## daemon runtime data files. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_getattr_all_pids',` ++ gen_require(` ++ attribute pidfile; ++ type var_run_t; ++ ') ++ ++ dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; ++ dontaudit $1 pidfile:file getattr; ++') ++ ++######################################## ++## ++## Do not audit attempts to write to daemon runtime data files. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_write_all_pids',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; ++ dontaudit $1 pidfile:file write; ++') ++ ++######################################## ++## ++## Do not audit attempts to ioctl daemon runtime data files. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`files_dontaudit_ioctl_all_pids',` ++ gen_require(` ++ attribute pidfile; ++ type var_run_t; ++ ') ++ ++ dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; ++ dontaudit $1 pidfile:file ioctl; ++') ++ ++######################################## ++## ++## Relable all pid directories ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_relabel_all_pid_dirs',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ relabel_dirs_pattern($1, pidfile, pidfile) ++') ++ ++######################################## ++## ++## Delete all pid sockets ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_delete_all_pid_sockets',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ allow $1 pidfile:sock_file delete_sock_file_perms; ++') ++ ++######################################## ++## ++## Create all pid sockets ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_create_all_pid_sockets',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ allow $1 pidfile:sock_file create_sock_file_perms; ++') ++ ++######################################## ++## ++## Create all pid named pipes ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_create_all_pid_pipes',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ allow $1 pidfile:fifo_file create_fifo_file_perms; ++') ++ ++######################################## ++## ++## Delete all pid named pipes ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_delete_all_pid_pipes',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ allow $1 pidfile:fifo_file delete_fifo_file_perms; ++') ++ ++######################################## ++## ++## manage all pidfile directories ++## in the /var/run directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_manage_all_pid_dirs',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ manage_dirs_pattern($1,pidfile,pidfile) ++') ++ ++ ++######################################## ++## ++## Read all process ID files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`files_read_all_pids',` ++ gen_require(` ++ attribute pidfile; ++ type var_t; ++ ') ++ ++ list_dirs_pattern($1, var_t, pidfile) ++ read_files_pattern($1, pidfile, pidfile) ++ read_lnk_files_pattern($1, pidfile, pidfile) ++') ++ ++######################################## ++## ++## Relable all pid files ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_relabel_all_pid_files',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ relabel_files_pattern($1, pidfile, pidfile) ++') ++ ++######################################## ++## ++## Execute generic programs in /var/run in the caller domain. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_exec_generic_pid_files',` ++ gen_require(` ++ type var_run_t; ++ ') ++ ++ exec_files_pattern($1, var_run_t, var_run_t) ++') ++ ++######################################## ++## ++## Write all sockets ++## in the /var/run directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_write_all_pid_sockets',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ allow $1 pidfile:sock_file write_sock_file_perms; ++') ++ ++######################################## ++## ++## manage all pidfiles ++## in the /var/run directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_manage_all_pids',` ++ gen_require(` ++ attribute pidfile; ++ ') ++ ++ manage_files_pattern($1,pidfile,pidfile) ++') ++ ++######################################## ++## ++## Mount filesystems on all polyinstantiation ++## member directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_mounton_all_poly_members',` ++ gen_require(` ++ attribute polymember; ++ ') ++ ++ allow $1 polymember:dir mounton; ++') ++ ++######################################## ++## ++## Delete all process IDs. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`files_delete_all_pids',` ++ 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 }) ++') ++ ++######################################## ++## ++## Delete all process ID directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_delete_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, var_run_t) +- read_files_pattern($1, var_run_t, var_run_t) + files_search_pids($1) + allow $1 var_t:dir search_dir_perms; + delete_dirs_pattern($1, pidfile, pidfile) @@ -14102,30 +16600,36 @@ index f962f76..9cb7e98 100644 + ') + + list_dirs_pattern($1, var_t, var_spool_t) -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Write named generic process ID pipes +## Create, read, write, and delete generic +## spool directories (/var/spool). -+## -+## -+## -+## Domain allowed access. -+## -+## -+# + ## + ## + ## +@@ -6073,43 +8134,170 @@ interface(`files_read_generic_pids',` + ## + ## + # +-interface(`files_write_generic_pid_pipes',` +interface(`files_manage_generic_spool_dirs',` -+ gen_require(` + gen_require(` +- type var_run_t; + type var_t, var_spool_t; -+ ') -+ + ') + +- allow $1 var_run_t:lnk_file read_lnk_file_perms; +- allow $1 var_run_t:fifo_file write; + allow $1 var_t:dir search_dir_perms; + manage_dirs_pattern($1, var_spool_t, var_spool_t) -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Create an object in the process ID directory, with a private type. +## Read generic spool files. +## +## @@ -14275,17 +16779,40 @@ index f962f76..9cb7e98 100644 +######################################## +## +## Create a core files in / -+## -+## -+##

+ ##

+ ## + ##

+-## Create an object in the process ID directory (e.g., /var/run) +-## with a private type. Typically this is used for creating +-## private PID files in /var/run with the private type instead +-## of the general PID file type. To accomplish this goal, +-## either the program must be SELinux-aware, or use this interface. +-##

+-##

+-## Related interfaces: +-##

+-##
    +-##
  • files_pid_file()
  • +-##
+-##

+-## Example usage with a domain that can create and +-## write its PID file with a private PID file type in the +-## /var/run directory: +-##

+-##

+-## type mypidfile_t; +-## files_pid_file(mypidfile_t) +-## allow mydomain_t mypidfile_t:file { create_file_perms write_file_perms }; +-## files_pid_filetrans(mydomain_t, mypidfile_t, file) +## Create a core file in /, -+##

-+##
-+## -+## -+## Domain allowed access. -+## -+## + ##

+ ## + ## +@@ -6117,80 +8305,157 @@ interface(`files_write_generic_pid_pipes',` + ## Domain allowed access. + ##
+ ## +-## +## +# +interface(`files_manage_root_files',` @@ -14326,12 +16853,14 @@ index f962f76..9cb7e98 100644 +## type transition. +## +## -+## + ## +-## The type of the object to be created. +## Domain allowed access. -+## -+## -+## -+## + ## + ## + ## + ## +-## The object class of the object being created. +## The class of the object being created. +## +## @@ -14362,10 +16891,11 @@ index f962f76..9cb7e98 100644 +## +## +## The class of the object being created. -+## -+## -+## -+## + ## + ## + ## + ## +-## The name of the object being created. +## The name of the object being created. +## +## @@ -14386,314 +16916,432 @@ index f962f76..9cb7e98 100644 +## +## +## Domain allowed access. -+## -+## -+# + ## + ## +-## + # +-interface(`files_pid_filetrans',` +interface(`files_manage_generic_pids_symlinks',` -+ gen_require(` + gen_require(` +- type var_t, var_run_t; + type var_run_t; -+ ') -+ + ') + +- allow $1 var_t:dir search_dir_perms; +- allow $1 var_run_t:lnk_file read_lnk_file_perms; +- filetrans_pattern($1, var_run_t, $2, $3, $4) + manage_lnk_files_pattern($1,var_run_t,var_run_t) -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Create a generic lock directory within the run directories +## Do not audit attempts to getattr +## all tmpfs files. -+## -+## -+## + ## + ## +-## +-## Domain allowed access +-## +-## +-## + ## +-## The name of the object being created. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_pid_filetrans_lock_dir',` +interface(`files_dontaudit_getattr_tmpfs_files',` -+ gen_require(` + gen_require(` +- type var_lock_t; + attribute tmpfsfile; -+ ') -+ + ') + +- files_pid_filetrans($1, var_lock_t, dir, $2) + allow $1 tmpfsfile:file getattr; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Read and write generic process ID files. +## Allow delete all tmpfs files. -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_rw_generic_pids',` +interface(`files_delete_tmpfs_files',` -+ gen_require(` + gen_require(` +- type var_t, var_run_t; + attribute tmpfsfile; -+ ') -+ + ') + +- allow $1 var_run_t:lnk_file read_lnk_file_perms; +- list_dirs_pattern($1, var_t, var_run_t) +- rw_files_pattern($1, var_run_t, var_run_t) + allow $1 tmpfsfile:file delete_file_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Do not audit attempts to get the attributes of +-## daemon runtime data files. +## Allow read write all tmpfs files -+## -+## -+## -+## Domain to not audit. -+## -+## -+# + ## + ## + ## +@@ -6198,19 +8463,17 @@ interface(`files_rw_generic_pids',` + ## + ## + # +-interface(`files_dontaudit_getattr_all_pids',` +interface(`files_rw_tmpfs_files',` -+ gen_require(` + gen_require(` +- attribute pidfile; +- type var_run_t; + attribute tmpfsfile; -+ ') -+ + ') + +- dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; +- dontaudit $1 pidfile:file getattr; + allow $1 tmpfsfile:file { read write }; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Do not audit attempts to write to daemon runtime data files. +## Do not audit attempts to read security files -+## -+## -+## -+## Domain to not audit. -+## -+## -+# + ## + ## + ## +@@ -6218,18 +8481,17 @@ interface(`files_dontaudit_getattr_all_pids',` + ## + ## + # +-interface(`files_dontaudit_write_all_pids',` +interface(`files_dontaudit_read_security_files',` -+ gen_require(` + gen_require(` +- attribute pidfile; + attribute security_file_type; -+ ') -+ + ') + +- dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; +- dontaudit $1 pidfile:file write; + dontaudit $1 security_file_type:file read_file_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Do not audit attempts to ioctl daemon runtime data files. +## Do not audit attempts to search security files -+## -+## -+## -+## Domain to not audit. -+## -+## -+# + ## + ## + ## +@@ -6237,129 +8499,118 @@ interface(`files_dontaudit_write_all_pids',` + ## + ## + # +-interface(`files_dontaudit_ioctl_all_pids',` +interface(`files_dontaudit_search_security_files',` -+ gen_require(` + gen_require(` +- attribute pidfile; +- type var_run_t; + attribute security_file_type; -+ ') -+ + ') + +- dontaudit $1 var_run_t:lnk_file read_lnk_file_perms; +- dontaudit $1 pidfile:file ioctl; + dontaudit $1 security_file_type:dir search_dir_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Read all process ID files. +## Do not audit attempts to read security dirs -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## +-## + # +-interface(`files_read_all_pids',` +interface(`files_dontaudit_list_security_dirs',` -+ gen_require(` + gen_require(` +- attribute pidfile; +- type var_t, var_run_t; + attribute security_file_type; -+ ') -+ + ') + +- allow $1 var_run_t:lnk_file read_lnk_file_perms; +- list_dirs_pattern($1, var_t, pidfile) +- read_files_pattern($1, pidfile, pidfile) + dontaudit $1 security_file_type:dir list_dir_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Delete all process IDs. +## rw any files inherited from another process -+## -+## -+## -+## Domain allowed access. -+## -+## + ## + ## + ## + ## Domain allowed access. + ## + ## +-## +## +## +## Object type. +## +## -+# + # +-interface(`files_delete_all_pids',` +interface(`files_rw_all_inherited_files',` -+ gen_require(` + gen_require(` +- attribute pidfile; +- type var_t, var_run_t; + attribute file_type; -+ ') -+ + ') + +- 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 }) + allow $1 { file_type $2 }:file rw_inherited_file_perms; + allow $1 { file_type $2 }:fifo_file rw_inherited_fifo_file_perms; + allow $1 { file_type $2 }:sock_file rw_inherited_sock_file_perms; + allow $1 { file_type $2 }:chr_file rw_inherited_chr_file_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Delete all process ID directories. +## Allow any file point to be the entrypoint of this domain -+## -+## -+## -+## Domain allowed access. -+## -+## + ## + ## + ## + ## Domain allowed access. + ## + ## +## -+# + # +-interface(`files_delete_all_pid_dirs',` +interface(`files_entrypoint_all_files',` -+ gen_require(` + gen_require(` +- attribute pidfile; +- type var_t, var_run_t; + attribute file_type; -+ ') + ') +- +- 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) + allow $1 file_type:file entrypoint; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Create, read, write and delete all +-## var_run (pid) content +## Do not audit attempts to rw inherited file perms +## of non security files. -+## -+## -+## + ## + ## + ## +-## Domain alloed access. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_manage_all_pids',` +interface(`files_dontaudit_all_non_security_leaks',` -+ gen_require(` + gen_require(` +- attribute pidfile; + attribute non_security_file_type; -+ ') -+ + ') + +- manage_dirs_pattern($1, pidfile, pidfile) +- manage_files_pattern($1, pidfile, pidfile) +- manage_lnk_files_pattern($1, pidfile, pidfile) + dontaudit $1 non_security_file_type:file_class_set rw_inherited_file_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Mount filesystems on all polyinstantiation +-## member directories. +## Do not audit attempts to read or write +## all leaked files. -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_mounton_all_poly_members',` +interface(`files_dontaudit_leaks',` -+ gen_require(` + gen_require(` +- attribute polymember; + attribute file_type; -+ ') -+ + ') + +- allow $1 polymember:dir mounton; + dontaudit $1 file_type:file rw_inherited_file_perms; + dontaudit $1 file_type:lnk_file { read }; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Search the contents of generic spool +-## directories (/var/spool). +## Allow domain to create_file_ass all types -+## -+## -+## -+## Domain allowed access. -+## -+## -+# + ## + ## + ## +@@ -6367,18 +8618,19 @@ interface(`files_mounton_all_poly_members',` + ## + ## + # +-interface(`files_search_spool',` +interface(`files_create_as_is_all_files',` -+ gen_require(` + gen_require(` +- type var_t, var_spool_t; + attribute file_type; + class kernel_service create_files_as; -+ ') -+ + ') + +- search_dirs_pattern($1, var_t, var_spool_t) + allow $1 file_type:kernel_service create_files_as; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Do not audit attempts to search generic +-## spool directories. +## Do not audit attempts to check the +## access on all files -+## -+## -+## -+## Domain to not audit. -+## -+## -+# + ## + ## + ## +@@ -6386,132 +8638,227 @@ interface(`files_search_spool',` + ## + ## + # +-interface(`files_dontaudit_search_spool',` +interface(`files_dontaudit_all_access_check',` -+ gen_require(` + gen_require(` +- type var_spool_t; + attribute file_type; -+ ') -+ + ') + +- dontaudit $1 var_spool_t:dir search_dir_perms; + dontaudit $1 file_type:dir_file_class_set audit_access; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## List the contents of generic spool +-## (/var/spool) directories. +## Do not audit attempts to write to all files -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_list_spool',` +interface(`files_dontaudit_write_all_files',` -+ gen_require(` + gen_require(` +- type var_t, var_spool_t; + attribute file_type; -+ ') -+ + ') + +- list_dirs_pattern($1, var_t, var_spool_t) + dontaudit $1 file_type:dir_file_class_set write; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Create, read, write, and delete generic +-## spool directories (/var/spool). +## Allow domain to delete to all files -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_manage_generic_spool_dirs',` +interface(`files_delete_all_non_security_files',` -+ gen_require(` + gen_require(` +- type var_t, var_spool_t; + attribute non_security_file_type; -+ ') -+ + ') + +- allow $1 var_t:dir search_dir_perms; +- manage_dirs_pattern($1, var_spool_t, var_spool_t) + allow $1 non_security_file_type:dir del_entry_dir_perms; + allow $1 non_security_file_type:file_class_set delete_file_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Read generic spool files. +## Allow domain to delete to all dirs -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain to not audit. -+## -+## -+# + ## + ## + # +-interface(`files_read_generic_spool',` +interface(`files_delete_all_non_security_dirs',` -+ gen_require(` + gen_require(` +- type var_t, var_spool_t; + attribute non_security_file_type; -+ ') -+ + ') + +- list_dirs_pattern($1, var_t, var_spool_t) +- read_files_pattern($1, var_spool_t, var_spool_t) + allow $1 non_security_file_type:dir { del_entry_dir_perms delete_dir_perms }; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Create, read, write, and delete generic +-## spool files. +## Transition named content in the var_run_t directory -+## -+## -+## + ## + ## + ## +-## Domain allowed access. +## Domain allowed access. -+## -+## -+# + ## + ## + # +-interface(`files_manage_generic_spool',` +interface(`files_filetrans_named_content',` -+ gen_require(` + gen_require(` +- type var_t, var_spool_t; + type etc_t; + type mnt_t; + type usr_t; @@ -14702,8 +17350,10 @@ index f962f76..9cb7e98 100644 + type var_run_t; + type var_lock_t; + type tmp_t; -+ ') -+ + ') + +- allow $1 var_t:dir search_dir_perms; +- manage_files_pattern($1, var_spool_t, var_spool_t) + files_pid_filetrans($1, mnt_t, dir, "media") + files_root_filetrans($1, etc_runtime_t, file, ".readahead") + files_root_filetrans($1, etc_runtime_t, file, ".autorelabel") @@ -14743,13 +17393,16 @@ index f962f76..9cb7e98 100644 + files_var_filetrans($1, tmp_t, dir, "tmp") + files_var_filetrans($1, var_run_t, dir, "run") + files_var_filetrans($1, etc_runtime_t, file, ".updated") -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Create objects in the spool directory +-## with a private type with a type transition. +## Make the specified type a +## base file. -+## + ## +-## +## +##

+## Identify file type as base file type. Tools will use this attribute, @@ -14757,10 +17410,12 @@ index f962f76..9cb7e98 100644 +##

+##
+## -+## + ## +-## Domain allowed access. +## Type to be used as a base files. -+## -+## + ## + ## +-## +## +# +interface(`files_base_file',` @@ -14782,10 +17437,12 @@ index f962f76..9cb7e98 100644 +##

+## +## -+## + ## +-## Type to which the created node will be transitioned. +## Type to be used as a base read only files. -+## -+## + ## + ## +-## +## +# +interface(`files_ro_base_file',` @@ -14801,10 +17458,13 @@ index f962f76..9cb7e98 100644 +## Read all ro base files. +## +## -+## + ## +-## Object class(es) (single or set including {}) for which this +-## the transition will occur. +## Domain allowed access. -+## -+## + ## + ## +-## +## +# +interface(`files_read_all_base_ro_files',` @@ -14822,54 +17482,104 @@ index f962f76..9cb7e98 100644 +## Execute all base ro files. +## +## -+## + ## +-## The name of the object being created. +## Domain allowed access. -+## -+## + ## + ## +## -+# + # +-interface(`files_spool_filetrans',` +interface(`files_exec_all_base_ro_files',` -+ gen_require(` + gen_require(` +- type var_t, var_spool_t; + attribute base_ro_file_type; -+ ') -+ + ') + +- allow $1 var_t:dir search_dir_perms; +- filetrans_pattern($1, var_spool_t, $2, $3, $4) + can_exec($1, base_ro_file_type) -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Allow access to manage all polyinstantiated +-## directories on the system. +## Allow the specified domain to modify the systemd configuration of +## any file. -+## -+## -+## -+## Domain allowed access. -+## -+## -+# + ## + ## + ## +@@ -6519,53 +8866,17 @@ interface(`files_spool_filetrans',` + ## + ## + # +-interface(`files_polyinstantiate_all',` +interface(`files_config_all_files',` -+ gen_require(` + gen_require(` +- attribute polydir, polymember, polyparent; +- type poly_t; + attribute file_type; -+ ') -+ + ') + +- # Need to give access to /selinux/member +- selinux_compute_member($1) +- +- # Need sys_admin capability for mounting +- allow $1 self:capability { chown fsetid sys_admin fowner }; +- +- # Need to give access to the directories to be polyinstantiated +- allow $1 polydir:dir { create open getattr search write add_name setattr mounton rmdir }; +- +- # Need to give access to the polyinstantiated subdirectories +- allow $1 polymember:dir search_dir_perms; +- +- # Need to give access to parent directories where original +- # is remounted for polyinstantiation aware programs (like gdm) +- allow $1 polyparent:dir { getattr mounton }; +- +- # Need to give permission to create directories where applicable +- allow $1 self:process setfscreate; +- allow $1 polymember: dir { create setattr relabelto }; +- allow $1 polydir: dir { write add_name open }; +- allow $1 polyparent:dir { open read write remove_name add_name relabelfrom relabelto }; +- +- # Default type for mountpoints +- allow $1 poly_t:dir { create mounton }; +- fs_unmount_xattr_fs($1) +- +- fs_mount_tmpfs($1) +- fs_unmount_tmpfs($1) +- +- ifdef(`distro_redhat',` +- # namespace.init +- files_search_tmp($1) +- files_search_home($1) +- corecmd_exec_bin($1) +- seutil_domtrans_setfiles($1) +- ') + allow $1 file_type:service all_service_perms; -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Unconfined access to files. +## Get the status of etc_t files -+## -+## -+## -+## Domain allowed access. -+## -+## -+# + ## + ## + ## +@@ -6573,10 +8884,10 @@ interface(`files_polyinstantiate_all',` + ## + ## + # +-interface(`files_unconfined',` +interface(`files_status_etc',` -+ gen_require(` + gen_require(` +- attribute files_unconfined_type; + type etc_t; -+ ') -+ + ') + +- typeattribute $1 files_unconfined_type; + allow $1 etc_t:service status; ') diff --git a/policy/modules/kernel/files.te b/policy/modules/kernel/files.te @@ -19398,7 +22108,7 @@ index e100d88..c652350 100644 +') + diff --git a/policy/modules/kernel/kernel.te b/policy/modules/kernel/kernel.te -index 8dbab4c..7c405f5 100644 +index 8dbab4c..092e065 100644 --- a/policy/modules/kernel/kernel.te +++ b/policy/modules/kernel/kernel.te @@ -25,6 +25,9 @@ attribute kern_unconfined; @@ -19494,11 +22204,11 @@ index 8dbab4c..7c405f5 100644 +allow unlabeled_t self:filesystem associate; + +# Need the following because we are type alias of file_t. -+files_mountpoint(unlabeled_t) -+files_base_file(unlabeled_t) ++files_type(unlabeled_t) +kernel_rootfs_mountpoint(unlabeled_t) +sid file gen_context(system_u:object_r:unlabeled_t,s0) +typealias unlabeled_t alias file_t; ++neverallow * unlabeled_t:file entrypoint; # These initial sids are no longer used, and can be removed: sid any_socket gen_context(system_u:object_r:unlabeled_t,mls_systemhigh) @@ -26397,7 +29107,7 @@ index cc877c7..b8e6e98 100644 + xserver_rw_xdm_pipes(ssh_agent_type) +') diff --git a/policy/modules/services/xserver.fc b/policy/modules/services/xserver.fc -index 8274418..12a5645 100644 +index 8274418..53f66a4 100644 --- a/policy/modules/services/xserver.fc +++ b/policy/modules/services/xserver.fc @@ -2,13 +2,38 @@ @@ -26462,7 +29172,7 @@ index 8274418..12a5645 100644 /etc/X11/[wx]dm/Xreset.* -- gen_context(system_u:object_r:xsession_exec_t,s0) /etc/X11/[wxg]dm/Xsession -- gen_context(system_u:object_r:xsession_exec_t,s0) /etc/X11/wdm(/.*)? gen_context(system_u:object_r:xdm_rw_etc_t,s0) -@@ -46,26 +79,34 @@ HOME_DIR/\.Xauthority.* -- gen_context(system_u:object_r:xauth_home_t,s0) +@@ -46,26 +79,35 @@ HOME_DIR/\.Xauthority.* -- gen_context(system_u:object_r:xauth_home_t,s0) # /tmp # @@ -26497,13 +29207,14 @@ index 8274418..12a5645 100644 /usr/bin/Xorg -- gen_context(system_u:object_r:xserver_exec_t,s0) +/usr/bin/Xvnc -- gen_context(system_u:object_r:xserver_exec_t,s0) +/usr/bin/x11vnc -- gen_context(system_u:object_r:xserver_exec_t,s0) ++/usr/bin/nvidia.* -- gen_context(system_u:object_r:xserver_exec_t,s0) + +/usr/libexec/Xorg\.bin -- gen_context(system_u:object_r:xserver_exec_t,s0) +/usr/libexec/Xorg\.wrap -- gen_context(system_u:object_r:xserver_exec_t,s0) /usr/lib/qt-.*/etc/settings(/.*)? gen_context(system_u:object_r:xdm_var_run_t,s0) -@@ -91,19 +132,34 @@ ifndef(`distro_debian',` +@@ -91,19 +133,34 @@ ifndef(`distro_debian',` /var/[xgkw]dm(/.*)? gen_context(system_u:object_r:xserver_log_t,s0) /var/lib/gdm(3)?(/.*)? gen_context(system_u:object_r:xdm_var_lib_t,s0) @@ -26542,7 +29253,7 @@ index 8274418..12a5645 100644 /var/run/xdm\.pid -- gen_context(system_u:object_r:xdm_var_run_t,s0) /var/run/lxdm\.auth -- gen_context(system_u:object_r:xdm_var_run_t,s0) /var/run/lxdm\.pid -- gen_context(system_u:object_r:xdm_var_run_t,s0) -@@ -111,7 +167,18 @@ ifndef(`distro_debian',` +@@ -111,7 +168,18 @@ ifndef(`distro_debian',` /var/run/slim.* gen_context(system_u:object_r:xdm_var_run_t,s0) /var/run/xauth(/.*)? gen_context(system_u:object_r:xdm_var_run_t,s0) /var/run/xdmctl(/.*)? gen_context(system_u:object_r:xdm_var_run_t,s0) @@ -43602,10 +46313,10 @@ index 0000000..0e4185f +/var/run/initramfs(/.*)? <> diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if new file mode 100644 -index 0000000..21f7c14 +index 0000000..3380372 --- /dev/null +++ b/policy/modules/system/systemd.if -@@ -0,0 +1,1678 @@ +@@ -0,0 +1,1698 @@ +## SELinux policy for systemd components + +###################################### @@ -45284,12 +47995,32 @@ index 0000000..21f7c14 + + allow $1 systemd_coredump_tmpfs_t:file rw_file_perms; +') ++ ++######################################## ++## ++## Allow process to read hwdb config file. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`systemd_hwdb_read_config',` ++ gen_require(` ++ type systemd_hwdb_etc_t; ++ ') ++ ++ files_search_etc($1) ++ allow $1 systemd_hwdb_etc_t:file read_file_perms; ++') diff --git a/policy/modules/system/systemd.te b/policy/modules/system/systemd.te new file mode 100644 -index 0000000..605f160 +index 0000000..45fcf4c --- /dev/null +++ b/policy/modules/system/systemd.te -@@ -0,0 +1,909 @@ +@@ -0,0 +1,919 @@ +policy_module(systemd, 1.0.0) + +####################################### @@ -45409,6 +48140,9 @@ index 0000000..605f160 +#domain for gpt-auto-generator +systemd_domain_template(systemd_gpt_generator) + ++type systemd_gpt_generator_unit_file_t; ++systemd_unit_file(systemd_gpt_generator_unit_file_t) ++ +#domain for systemd-machined +systemd_domain_template(systemd_machined) + @@ -45987,6 +48721,8 @@ index 0000000..605f160 +allow systemd_rfkill_t self:netlink_kobject_uevent_socket create_socket_perms; + +manage_files_pattern(systemd_rfkill_t, systemd_rfkill_var_lib_t, systemd_rfkill_var_lib_t) ++manage_dirs_pattern(systemd_rfkill_t, systemd_rfkill_var_lib_t, systemd_rfkill_var_lib_t) ++init_var_lib_filetrans(systemd_rfkill_t, systemd_rfkill_var_lib_t, dir, "rfkill") + +kernel_dgram_send(systemd_rfkill_t) + @@ -46134,6 +48870,11 @@ index 0000000..605f160 + +storage_raw_read_fixed_disk(systemd_gpt_generator_t) + ++allow systemd_gpt_generator_t systemd_gpt_generator_unit_file_t:file manage_file_perms; ++systemd_unit_file_filetrans(systemd_gpt_generator_t, systemd_gpt_generator_unit_file_t, file) ++systemd_create_unit_file_dirs(systemd_gpt_generator_t) ++systemd_create_unit_file_lnk(systemd_gpt_generator_t) ++ +####################################### +# +# systemd_resolved domain diff --git a/policy-rawhide-contrib.patch b/policy-rawhide-contrib.patch index ba812ef..6008469 100644 --- a/policy-rawhide-contrib.patch +++ b/policy-rawhide-contrib.patch @@ -3459,10 +3459,10 @@ index 0000000..d8b04b5 + spamassassin_read_pid_files(antivirus_domain) +') diff --git a/apache.fc b/apache.fc -index 7caefc3..4313ba3 100644 +index 7caefc3..754c30f 100644 --- a/apache.fc +++ b/apache.fc -@@ -1,162 +1,212 @@ +@@ -1,162 +1,214 @@ -HOME_DIR/((www)|(web)|(public_html))(/.+)? gen_context(system_u:object_r:httpd_user_content_t,s0) -HOME_DIR/((www)|(web)|(public_html))/cgi-bin(/.+)? gen_context(system_u:object_r:httpd_user_script_exec_t,s0) +HOME_DIR/((www)|(web)|(public_html))(/.+)? gen_context(system_u:object_r:httpd_user_content_t,s0) @@ -3635,6 +3635,7 @@ index 7caefc3..4313ba3 100644 +/usr/share/wordpress/wp-content/uploads(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) +/usr/share/wordpress/wp-content/upgrade(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) +/usr/share/wordpress/wp-includes/.*\.php -- gen_context(system_u:object_r:httpd_sys_script_exec_t,s0) ++/usr/local/nagios/sbin(/.*)? gen_context(system_u:object_r:httpd_sys_script_exec_t,s0) +/usr/share/z-push(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0) + +/var/cache/httpd(/.*)? gen_context(system_u:object_r:httpd_cache_t,s0) @@ -3792,6 +3793,7 @@ index 7caefc3..4313ba3 100644 +/var/www/html(/.*)?/sites/default/files(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t, s0) +/var/www/html/configuration\.php gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) +/var/www/html(/.*)?/wp-content(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) ++/var/www/html(/.*)?/wp_backups(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) +/var/www/html(/.*)?/uploads(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) +/var/www/html/owncloud/data(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) +/var/www/gallery/albums(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0) @@ -8065,7 +8067,7 @@ index 1a7a97e..2c7252a 100644 domain_system_change_exemption($1) role_transition $2 apmd_initrc_exec_t system_r; diff --git a/apm.te b/apm.te -index 7fd431b..41f2a57 100644 +index 7fd431b..708ae24 100644 --- a/apm.te +++ b/apm.te @@ -35,12 +35,15 @@ files_type(apmd_var_lib_t) @@ -8156,7 +8158,7 @@ index 7fd431b..41f2a57 100644 optional_policy(` automount_domtrans(apmd_t) -@@ -206,11 +211,15 @@ optional_policy(` +@@ -206,11 +211,20 @@ optional_policy(` ') optional_policy(` @@ -8171,6 +8173,11 @@ index 7fd431b..41f2a57 100644 + +optional_policy(` + systemd_dbus_chat_logind(apmd_t) ++') ++ ++optional_policy(` ++ systemd_start_power_services(apmd_t) ++ systemd_status_power_services(apmd_t) ') optional_policy(` @@ -9792,7 +9799,7 @@ index e73fb79..2badfc0 100644 domain_system_change_exemption($1) role_transition $2 bitlbee_initrc_exec_t system_r; diff --git a/bitlbee.te b/bitlbee.te -index f5c1a48..f7b4f1d 100644 +index f5c1a48..d8e7d55 100644 --- a/bitlbee.te +++ b/bitlbee.te @@ -35,9 +35,12 @@ files_pid_file(bitlbee_var_run_t) @@ -9810,7 +9817,7 @@ index f5c1a48..f7b4f1d 100644 allow bitlbee_t bitlbee_conf_t:dir list_dir_perms; allow bitlbee_t bitlbee_conf_t:file read_file_perms; -@@ -45,7 +48,9 @@ allow bitlbee_t bitlbee_conf_t:file read_file_perms; +@@ -45,22 +48,25 @@ allow bitlbee_t bitlbee_conf_t:file read_file_perms; manage_dirs_pattern(bitlbee_t, bitlbee_log_t, bitlbee_log_t) append_files_pattern(bitlbee_t, bitlbee_log_t, bitlbee_log_t) create_files_pattern(bitlbee_t, bitlbee_log_t, bitlbee_log_t) @@ -9820,7 +9827,15 @@ index f5c1a48..f7b4f1d 100644 manage_files_pattern(bitlbee_t, bitlbee_tmp_t, bitlbee_tmp_t) manage_dirs_pattern(bitlbee_t, bitlbee_tmp_t, bitlbee_tmp_t) -@@ -59,8 +64,8 @@ manage_files_pattern(bitlbee_t, bitlbee_var_run_t, bitlbee_var_run_t) + files_tmp_filetrans(bitlbee_t, bitlbee_tmp_t, { dir file }) + + manage_files_pattern(bitlbee_t, bitlbee_var_t, bitlbee_var_t) +-files_var_lib_filetrans(bitlbee_t, bitlbee_var_t, file) ++manage_dirs_pattern(bitlbee_t, bitlbee_var_t, bitlbee_var_t) ++files_var_lib_filetrans(bitlbee_t, bitlbee_var_t,{dir file}) + + manage_dirs_pattern(bitlbee_t, bitlbee_var_run_t, bitlbee_var_run_t) + manage_files_pattern(bitlbee_t, bitlbee_var_run_t, bitlbee_var_run_t) manage_sock_files_pattern(bitlbee_t, bitlbee_var_run_t, bitlbee_var_run_t) files_pid_filetrans(bitlbee_t, bitlbee_var_run_t, { dir file sock_file }) @@ -9830,7 +9845,7 @@ index f5c1a48..f7b4f1d 100644 corenet_all_recvfrom_unlabeled(bitlbee_t) corenet_all_recvfrom_netlabel(bitlbee_t) -@@ -98,7 +103,9 @@ corenet_tcp_sendrecv_http_cache_port(bitlbee_t) +@@ -98,7 +104,9 @@ corenet_tcp_sendrecv_http_cache_port(bitlbee_t) corenet_sendrecv_ircd_server_packets(bitlbee_t) corenet_tcp_bind_ircd_port(bitlbee_t) @@ -9840,7 +9855,7 @@ index f5c1a48..f7b4f1d 100644 corenet_tcp_connect_ircd_port(bitlbee_t) corenet_tcp_sendrecv_ircd_port(bitlbee_t) -@@ -109,16 +116,17 @@ corenet_tcp_sendrecv_interwise_port(bitlbee_t) +@@ -109,16 +117,17 @@ corenet_tcp_sendrecv_interwise_port(bitlbee_t) dev_read_rand(bitlbee_t) dev_read_urand(bitlbee_t) @@ -15493,7 +15508,7 @@ index 8e27a37..c69be28 100644 + ps_process_pattern($1, colord_t) +') diff --git a/colord.te b/colord.te -index 9f2dfb2..3d5988c 100644 +index 9f2dfb2..def3424 100644 --- a/colord.te +++ b/colord.te @@ -8,6 +8,7 @@ policy_module(colord, 1.1.0) @@ -15560,18 +15575,18 @@ index 9f2dfb2..3d5988c 100644 auth_use_nsswitch(colord_t) +-logging_send_syslog_msg(colord_t) +init_read_state(colord_t) -+ - logging_send_syslog_msg(colord_t) -miscfiles_read_localization(colord_t) -+systemd_read_logind_sessions_files(colord_t) ++logging_send_syslog_msg(colord_t) -tunable_policy(`use_nfs_home_dirs',` - fs_getattr_nfs(colord_t) - fs_read_nfs_files(colord_t) -') -- ++systemd_read_logind_sessions_files(colord_t) + -tunable_policy(`use_samba_home_dirs',` - fs_getattr_cifs(colord_t) - fs_read_cifs_files(colord_t) @@ -15597,7 +15612,14 @@ index 9f2dfb2..3d5988c 100644 ') optional_policy(` -@@ -137,3 +147,16 @@ optional_policy(` +@@ -134,6 +144,23 @@ optional_policy(` + ') + + optional_policy(` ++ systemd_hwdb_read_config(colord_t) ++') ++ ++optional_policy(` udev_read_db(colord_t) udev_read_pid_files(colord_t) ') @@ -16274,14 +16296,16 @@ index ce9f040..dc29445 100644 +') diff --git a/conman.fc b/conman.fc new file mode 100644 -index 0000000..d2f5c80 +index 0000000..b13a6f6 --- /dev/null +++ b/conman.fc -@@ -0,0 +1,8 @@ +@@ -0,0 +1,10 @@ +/usr/lib/systemd/system/conman.* -- gen_context(system_u:object_r:conman_unit_file_t,s0) + +/usr/sbin/conmand -- gen_context(system_u:object_r:conman_exec_t,s0) + ++/usr/share/conman/exec(/.*)? gen_context(system_u:object_r:conman_unconfined_script_exec_t,s0) ++ +/var/log/conman(/.*)? gen_context(system_u:object_r:conman_log_t,s0) +/var/log/conman\.old(/.*)? gen_context(system_u:object_r:conman_log_t,s0) + @@ -16437,10 +16461,10 @@ index 0000000..1cc5fa4 +') diff --git a/conman.te b/conman.te new file mode 100644 -index 0000000..3bc9494 +index 0000000..722f400 --- /dev/null +++ b/conman.te -@@ -0,0 +1,78 @@ +@@ -0,0 +1,93 @@ +policy_module(conman, 1.0.0) + +######################################## @@ -16472,6 +16496,10 @@ index 0000000..3bc9494 +type conman_unit_file_t; +systemd_unit_file(conman_unit_file_t) + ++type conman_unconfined_script_t; ++type conman_unconfined_script_exec_t; ++application_domain(conman_unconfined_script_t, conman_unconfined_script_exec_t) ++ +######################################## +# +# conman local policy @@ -16519,6 +16547,17 @@ index 0000000..3bc9494 +optional_policy(` + freeipmi_stream_connect(conman_t) +') ++ ++######################################## ++# ++# conman script local policy ++# ++ ++domtrans_pattern(conman_t, conman_unconfined_script_exec_t, conman_unconfined_script_t) ++ ++optional_policy(` ++ unconfined_domain(conman_unconfined_script_t) ++') diff --git a/consolekit.fc b/consolekit.fc index 23c9558..29e5fd3 100644 --- a/consolekit.fc @@ -20301,10 +20340,10 @@ index 001b502..47199aa 100644 optional_policy(` diff --git a/cups.fc b/cups.fc -index 949011e..9437dbe 100644 +index 949011e..8f8bc20 100644 --- a/cups.fc +++ b/cups.fc -@@ -1,77 +1,91 @@ +@@ -1,77 +1,92 @@ -/etc/alchemist/namespace/printconf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) -/etc/cups(/.*)? gen_context(system_u:object_r:cupsd_etc_t,s0) @@ -20423,6 +20462,7 @@ index 949011e..9437dbe 100644 +/var/ekpd(/.*)? gen_context(system_u:object_r:cupsd_var_run_t,s0) +/var/run/cups(/.*)? gen_context(system_u:object_r:cupsd_var_run_t,mls_systemhigh) +/var/run/hplip(/.*) gen_context(system_u:object_r:cupsd_var_run_t,s0) ++/var/run/ecblp0 -- gen_context(system_u:object_r:cupsd_var_run_t,s0) +/var/run/hp.*\.pid -- gen_context(system_u:object_r:cupsd_var_run_t,s0) +/var/run/hp.*\.port -- gen_context(system_u:object_r:cupsd_var_run_t,s0) /var/run/ptal-printd(/.*)? gen_context(system_u:object_r:ptal_var_run_t,s0) @@ -26168,7 +26208,7 @@ index d5badb7..c2431fc 100644 + admin_pattern($1, dovecot_passwd_t) ') diff --git a/dovecot.te b/dovecot.te -index 0aabc7e..e1c4564 100644 +index 0aabc7e..315aa2f 100644 --- a/dovecot.te +++ b/dovecot.te @@ -7,12 +7,10 @@ policy_module(dovecot, 1.16.1) @@ -26422,7 +26462,7 @@ index 0aabc7e..e1c4564 100644 sendmail_domtrans(dovecot_t) ') -@@ -227,46 +223,67 @@ optional_policy(` +@@ -227,46 +223,69 @@ optional_policy(` ######################################## # @@ -26450,14 +26490,16 @@ index 0aabc7e..e1c4564 100644 allow dovecot_auth_t dovecot_var_run_t:dir list_dir_perms; manage_sock_files_pattern(dovecot_auth_t, dovecot_var_run_t, dovecot_var_run_t) -+dovecot_stream_connect_auth(dovecot_auth_t) ++manage_fifo_files_pattern(dovecot_auth_t, dovecot_var_run_t, dovecot_var_run_t) -allow dovecot_auth_t dovecot_t:unix_stream_socket { connectto rw_stream_socket_perms }; -+corecmd_exec_bin(dovecot_auth_t) ++dovecot_stream_connect_auth(dovecot_auth_t) -files_search_pids(dovecot_auth_t) -files_read_usr_files(dovecot_auth_t) -files_read_var_lib_files(dovecot_auth_t) ++corecmd_exec_bin(dovecot_auth_t) ++ +logging_send_audit_msgs(dovecot_auth_t) auth_domtrans_chk_passwd(dovecot_auth_t) @@ -26499,7 +26541,7 @@ index 0aabc7e..e1c4564 100644 mysql_stream_connect(dovecot_auth_t) mysql_read_config(dovecot_auth_t) mysql_tcp_connect(dovecot_auth_t) -@@ -277,53 +294,79 @@ optional_policy(` +@@ -277,53 +296,79 @@ optional_policy(` ') optional_policy(` @@ -26598,7 +26640,7 @@ index 0aabc7e..e1c4564 100644 mta_read_queue(dovecot_deliver_t) ') -@@ -332,5 +375,6 @@ optional_policy(` +@@ -332,5 +377,6 @@ optional_policy(` ') optional_policy(` @@ -36873,10 +36915,10 @@ index 6517fad..f183748 100644 + allow $1 hypervkvp_unit_file_t:service all_service_perms; ') diff --git a/hypervkvp.te b/hypervkvp.te -index 4eb7041..76a5802 100644 +index 4eb7041..fc5435f 100644 --- a/hypervkvp.te +++ b/hypervkvp.te -@@ -5,24 +5,142 @@ policy_module(hypervkvp, 1.0.0) +@@ -5,24 +5,146 @@ policy_module(hypervkvp, 1.0.0) # Declarations # @@ -36909,10 +36951,9 @@ index 4eb7041..76a5802 100644 + +type hypervvssd_unit_file_t; +systemd_unit_file(hypervvssd_unit_file_t) - - ######################################## - # --# Local policy ++ ++######################################## ++# +# hyperv domain local policy +# + @@ -36926,9 +36967,10 @@ index 4eb7041..76a5802 100644 +corecmd_exec_bin(hyperv_domain) + +dev_read_sysfs(hyperv_domain) -+ -+######################################## -+# + + ######################################## + # +-# Local policy +# hypervkvp local policy +# + @@ -36950,6 +36992,8 @@ index 4eb7041..76a5802 100644 + +corecmd_getattr_all_executables(hypervkvp_t) + ++dev_rw_hypervkvp(hypervkvp_t) ++ +domain_read_all_domains_state(hypervkvp_t) + +seutil_exec_setfiles(hypervkvp_t) @@ -37020,6 +37064,8 @@ index 4eb7041..76a5802 100644 -allow hypervkvpd_t self:fifo_file rw_fifo_file_perms; -allow hypervkvpd_t self:unix_stream_socket create_stream_socket_perms; +allow hypervvssd_t self:capability sys_admin; ++ ++dev_rw_hypervvssd(hypervvssd_t) -logging_send_syslog_msg(hypervkvpd_t) +files_list_boot(hypervvssd_t) @@ -38899,7 +38945,7 @@ index 59ad3b3..bd02cc8 100644 + +/var/spool/pyicq-t(/.*)? gen_context(system_u:object_r:pyicqt_var_spool_t,s0) diff --git a/jabber.if b/jabber.if -index 7eb3811..d5d5ae7 100644 +index 7eb3811..629af1e 100644 --- a/jabber.if +++ b/jabber.if @@ -1,29 +1,76 @@ @@ -39091,7 +39137,15 @@ index 7eb3811..d5d5ae7 100644 init_labeled_script_domtrans($1, jabberd_initrc_exec_t) domain_system_change_exemption($1) -@@ -97,7 +175,4 @@ interface(`jabber_admin',` +@@ -89,15 +167,9 @@ interface(`jabber_admin',` + files_search_locks($1) + admin_pattern($1, jabberd_lock_t) + +- logging_search_logs($1) +- admin_pattern($1, jabberd_log_t) +- + files_search_spool($1) + admin_pattern($1, jabberd_spool_t) files_search_var_lib($1) admin_pattern($1, jabberd_var_lib_t) @@ -45154,7 +45208,7 @@ index dd8e01a..9cd6b0b 100644 ## ## diff --git a/logrotate.te b/logrotate.te -index be0ab84..24e669e 100644 +index be0ab84..3c99496 100644 --- a/logrotate.te +++ b/logrotate.te @@ -5,16 +5,22 @@ policy_module(logrotate, 1.15.0) @@ -45184,7 +45238,7 @@ index be0ab84..24e669e 100644 type logrotate_lock_t; files_lock_file(logrotate_lock_t) -@@ -25,21 +31,27 @@ files_tmp_file(logrotate_tmp_t) +@@ -25,21 +31,30 @@ files_tmp_file(logrotate_tmp_t) type logrotate_var_lib_t; files_type(logrotate_var_lib_t) @@ -45202,6 +45256,9 @@ index be0ab84..24e669e 100644 +allow logrotate_t self:capability { chown dac_override dac_read_search kill fsetid fowner setuid setgid sys_resource sys_nice sys_ptrace }; +dontaudit logrotate_t self:capability { sys_resource net_admin }; + ++# dontaudited due to systemctl command. ++dontaudit logrotate_t self:process setrlimit; ++ +allow logrotate_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; + +# Set a context other than the default one for newly created files. @@ -45218,7 +45275,7 @@ index be0ab84..24e669e 100644 allow logrotate_t self:shm create_shm_perms; allow logrotate_t self:sem create_sem_perms; allow logrotate_t self:msgq create_msgq_perms; -@@ -48,36 +60,52 @@ allow logrotate_t self:msg { send receive }; +@@ -48,36 +63,52 @@ allow logrotate_t self:msg { send receive }; allow logrotate_t logrotate_lock_t:file manage_file_perms; files_lock_filetrans(logrotate_t, logrotate_lock_t, file) @@ -45276,7 +45333,7 @@ index be0ab84..24e669e 100644 files_manage_generic_spool(logrotate_t) files_manage_generic_spool_dirs(logrotate_t) files_getattr_generic_locks(logrotate_t) -@@ -95,32 +123,52 @@ mls_process_write_to_clearance(logrotate_t) +@@ -95,32 +126,52 @@ mls_process_write_to_clearance(logrotate_t) selinux_get_fs_mount(logrotate_t) selinux_get_enforce_mode(logrotate_t) @@ -45335,7 +45392,7 @@ index be0ab84..24e669e 100644 ') optional_policy(` -@@ -135,16 +183,17 @@ optional_policy(` +@@ -135,16 +186,17 @@ optional_policy(` optional_policy(` apache_read_config(logrotate_t) @@ -45355,7 +45412,7 @@ index be0ab84..24e669e 100644 ') optional_policy(` -@@ -170,6 +219,11 @@ optional_policy(` +@@ -170,6 +222,11 @@ optional_policy(` ') optional_policy(` @@ -45367,7 +45424,7 @@ index be0ab84..24e669e 100644 fail2ban_stream_connect(logrotate_t) ') -@@ -178,7 +232,7 @@ optional_policy(` +@@ -178,7 +235,7 @@ optional_policy(` ') optional_policy(` @@ -45376,7 +45433,7 @@ index be0ab84..24e669e 100644 ') optional_policy(` -@@ -198,17 +252,18 @@ optional_policy(` +@@ -198,17 +255,18 @@ optional_policy(` ') optional_policy(` @@ -45398,7 +45455,7 @@ index be0ab84..24e669e 100644 ') optional_policy(` -@@ -216,6 +271,14 @@ optional_policy(` +@@ -216,6 +274,14 @@ optional_policy(` ') optional_policy(` @@ -45413,7 +45470,7 @@ index be0ab84..24e669e 100644 samba_exec_log(logrotate_t) ') -@@ -228,26 +291,43 @@ optional_policy(` +@@ -228,26 +294,43 @@ optional_policy(` ') optional_policy(` @@ -46041,7 +46098,7 @@ index d314333..27ede09 100644 + ') ') diff --git a/lsm.te b/lsm.te -index 4ec0eea..03738f2 100644 +index 4ec0eea..db7c68b 100644 --- a/lsm.te +++ b/lsm.te @@ -4,6 +4,13 @@ policy_module(lsm, 1.0.0) @@ -46083,7 +46140,7 @@ index 4ec0eea..03738f2 100644 allow lsmd_t self:unix_stream_socket create_stream_socket_perms; manage_dirs_pattern(lsmd_t, lsmd_var_run_t, lsmd_var_run_t) -@@ -26,4 +44,68 @@ manage_lnk_files_pattern(lsmd_t, lsmd_var_run_t, lsmd_var_run_t) +@@ -26,4 +44,69 @@ manage_lnk_files_pattern(lsmd_t, lsmd_var_run_t, lsmd_var_run_t) manage_sock_files_pattern(lsmd_t, lsmd_var_run_t, lsmd_var_run_t) files_pid_filetrans(lsmd_t, lsmd_var_run_t, { dir file sock_file }) @@ -46152,6 +46209,7 @@ index 4ec0eea..03738f2 100644 +storage_raw_rw_fixed_disk(lsmd_plugin_t) +storage_read_scsi_generic(lsmd_plugin_t) +storage_write_scsi_generic(lsmd_plugin_t) ++storage_dev_filetrans_named_fixed_disk(lsmd_plugin_t) diff --git a/lttng-tools.fc b/lttng-tools.fc new file mode 100644 index 0000000..bdd17ca @@ -60252,7 +60310,7 @@ index a9c60ff..ad4f14a 100644 + refpolicywarn(`$0($*) has been deprecated.') ') diff --git a/nsd.te b/nsd.te -index 47bb1d2..3316c17 100644 +index 47bb1d2..17db1a1 100644 --- a/nsd.te +++ b/nsd.te @@ -9,9 +9,7 @@ type nsd_t; @@ -60329,7 +60387,7 @@ index 47bb1d2..3316c17 100644 corenet_all_recvfrom_netlabel(nsd_t) corenet_tcp_sendrecv_generic_if(nsd_t) corenet_udp_sendrecv_generic_if(nsd_t) -@@ -72,16 +72,17 @@ corenet_tcp_sendrecv_all_ports(nsd_t) +@@ -72,16 +72,20 @@ corenet_tcp_sendrecv_all_ports(nsd_t) corenet_udp_sendrecv_all_ports(nsd_t) corenet_tcp_bind_generic_node(nsd_t) corenet_udp_bind_generic_node(nsd_t) @@ -60338,6 +60396,9 @@ index 47bb1d2..3316c17 100644 corenet_tcp_bind_dns_port(nsd_t) corenet_udp_bind_dns_port(nsd_t) +corenet_sendrecv_dns_server_packets(nsd_t) ++corenet_tcp_bind_nsd_control_port(nsd_t) ++corenet_sendrecv_nsd_control_server_packets(nsd_t) ++corenet_tcp_connect_nsd_control_port(nsd_t) dev_read_sysfs(nsd_t) +dev_read_urand(nsd_t) @@ -60349,7 +60410,7 @@ index 47bb1d2..3316c17 100644 fs_getattr_all_fs(nsd_t) fs_search_auto_mountpoints(nsd_t) -@@ -90,8 +91,6 @@ auth_use_nsswitch(nsd_t) +@@ -90,8 +94,6 @@ auth_use_nsswitch(nsd_t) logging_send_syslog_msg(nsd_t) @@ -60358,7 +60419,7 @@ index 47bb1d2..3316c17 100644 userdom_dontaudit_use_unpriv_user_fds(nsd_t) userdom_dontaudit_search_user_home_dirs(nsd_t) -@@ -105,23 +104,24 @@ optional_policy(` +@@ -105,23 +107,24 @@ optional_policy(` ######################################## # @@ -60391,7 +60452,7 @@ index 47bb1d2..3316c17 100644 manage_files_pattern(nsd_crond_t, nsd_zone_t, nsd_zone_t) filetrans_pattern(nsd_crond_t, nsd_conf_t, nsd_zone_t, file) -@@ -133,27 +133,27 @@ kernel_read_system_state(nsd_crond_t) +@@ -133,29 +136,33 @@ kernel_read_system_state(nsd_crond_t) corecmd_exec_bin(nsd_crond_t) corecmd_exec_shell(nsd_crond_t) @@ -60425,6 +60486,12 @@ index 47bb1d2..3316c17 100644 userdom_dontaudit_search_user_home_dirs(nsd_crond_t) optional_policy(` ++ nsd_read_pid(nsd_crond_t) ++') ++ ++optional_policy(` + cron_system_entry(nsd_crond_t, nsd_exec_t) + ') diff --git a/nslcd.fc b/nslcd.fc index 402100e..ce913b2 100644 --- a/nslcd.fc @@ -67427,10 +67494,10 @@ index 0000000..80246e6 + diff --git a/pcp.te b/pcp.te new file mode 100644 -index 0000000..2fecf5d +index 0000000..5eb733c --- /dev/null +++ b/pcp.te -@@ -0,0 +1,278 @@ +@@ -0,0 +1,279 @@ +policy_module(pcp, 1.0.0) + +######################################## @@ -67555,6 +67622,7 @@ index 0000000..2fecf5d + +corenet_tcp_bind_amqp_port(pcp_pmcd_t) +corenet_tcp_connect_amqp_port(pcp_pmcd_t) ++corenet_tcp_connect_http_port(pcp_pmcd_t) + +dev_read_sysfs(pcp_pmcd_t) + @@ -68146,7 +68214,7 @@ index d2fc677..86dce34 100644 ') + diff --git a/pegasus.te b/pegasus.te -index 608f454..0aa43fc 100644 +index 608f454..6a92354 100644 --- a/pegasus.te +++ b/pegasus.te @@ -5,13 +5,12 @@ policy_module(pegasus, 1.9.0) @@ -68165,7 +68233,7 @@ index 608f454..0aa43fc 100644 type pegasus_cache_t; files_type(pegasus_cache_t) -@@ -30,20 +29,334 @@ files_type(pegasus_mof_t) +@@ -30,20 +29,335 @@ files_type(pegasus_mof_t) type pegasus_var_run_t; files_pid_file(pegasus_var_run_t) @@ -68307,6 +68375,7 @@ index 608f454..0aa43fc 100644 +') + +optional_policy(` ++ sssd_read_public_files(pegasus_openlmi_services_t) + sssd_stream_connect(pegasus_openlmi_services_t) +') + @@ -68505,7 +68574,7 @@ index 608f454..0aa43fc 100644 allow pegasus_t pegasus_conf_t:lnk_file read_lnk_file_perms; manage_dirs_pattern(pegasus_t, pegasus_cache_t, pegasus_cache_t) -@@ -54,22 +367,22 @@ files_var_filetrans(pegasus_t, pegasus_cache_t, { dir file lnk_file }) +@@ -54,22 +368,22 @@ files_var_filetrans(pegasus_t, pegasus_cache_t, { dir file lnk_file }) manage_dirs_pattern(pegasus_t, pegasus_data_t, pegasus_data_t) manage_files_pattern(pegasus_t, pegasus_data_t, pegasus_data_t) manage_lnk_files_pattern(pegasus_t, pegasus_data_t, pegasus_data_t) @@ -68536,7 +68605,7 @@ index 608f454..0aa43fc 100644 kernel_read_network_state(pegasus_t) kernel_read_kernel_sysctls(pegasus_t) -@@ -80,27 +393,21 @@ kernel_read_net_sysctls(pegasus_t) +@@ -80,27 +394,21 @@ kernel_read_net_sysctls(pegasus_t) kernel_read_xen_state(pegasus_t) kernel_write_xen_state(pegasus_t) @@ -68569,7 +68638,7 @@ index 608f454..0aa43fc 100644 corecmd_exec_bin(pegasus_t) corecmd_exec_shell(pegasus_t) -@@ -114,9 +421,11 @@ files_getattr_all_dirs(pegasus_t) +@@ -114,9 +422,11 @@ files_getattr_all_dirs(pegasus_t) auth_use_nsswitch(pegasus_t) auth_domtrans_chk_passwd(pegasus_t) @@ -68581,7 +68650,7 @@ index 608f454..0aa43fc 100644 files_list_var_lib(pegasus_t) files_read_var_lib_files(pegasus_t) -@@ -128,18 +437,29 @@ init_stream_connect_script(pegasus_t) +@@ -128,18 +438,29 @@ init_stream_connect_script(pegasus_t) logging_send_audit_msgs(pegasus_t) logging_send_syslog_msg(pegasus_t) @@ -68617,7 +68686,7 @@ index 608f454..0aa43fc 100644 ') optional_policy(` -@@ -151,16 +471,24 @@ optional_policy(` +@@ -151,16 +472,24 @@ optional_policy(` ') optional_policy(` @@ -68646,7 +68715,7 @@ index 608f454..0aa43fc 100644 ') optional_policy(` -@@ -168,7 +496,7 @@ optional_policy(` +@@ -168,7 +497,7 @@ optional_policy(` ') optional_policy(` @@ -68655,7 +68724,7 @@ index 608f454..0aa43fc 100644 ') optional_policy(` -@@ -180,6 +508,7 @@ optional_policy(` +@@ -180,6 +509,7 @@ optional_policy(` ') optional_policy(` @@ -91316,7 +91385,7 @@ index f1140ef..642e062 100644 + files_pid_filetrans($1, rsync_var_run_t, file, "rsyncd.lock") ') diff --git a/rsync.te b/rsync.te -index abeb302..85582ef 100644 +index abeb302..6836678 100644 --- a/rsync.te +++ b/rsync.te @@ -6,67 +6,45 @@ policy_module(rsync, 1.13.0) @@ -91332,40 +91401,24 @@ index abeb302..85582ef 100644 +##

## -gen_tunable(rsync_use_cifs, false) -- --## --##

--## Determine whether rsync can --## use fuse file systems. --##

--##
--gen_tunable(rsync_use_fusefs, false) -- --## --##

--## Determine whether rsync can use --## nfs file systems. --##

--##
--gen_tunable(rsync_use_nfs, false) +gen_tunable(rsync_client, false) ## -##

-## Determine whether rsync can --## run as a client +-## use fuse file systems. -##

+##

+## Allow rsync to export any files/directories read only. +##

##
--gen_tunable(rsync_client, false) +-gen_tunable(rsync_use_fusefs, false) +gen_tunable(rsync_export_all_ro, false) ## -##

--## Determine whether rsync can --## export all content read only. +-## Determine whether rsync can use +-## nfs file systems. -##

+##

+## Allow rsync to modify public files @@ -91373,21 +91426,37 @@ index abeb302..85582ef 100644 +## labeled public_content_rw_t. +##

##
--gen_tunable(rsync_export_all_ro, false) +-gen_tunable(rsync_use_nfs, false) +gen_tunable(rsync_anon_write, false) ## ##

--## Determine whether rsync can modify --## public files used for public file --## transfer services. Directories/Files must --## be labeled public_content_rw_t. +-## Determine whether rsync can +-## run as a client +## Allow rsync server to manage all files/directories on the system. ##

##
--gen_tunable(allow_rsync_anon_write, false) +-gen_tunable(rsync_client, false) +gen_tunable(rsync_full_access, false) +-## +-##

+-## Determine whether rsync can +-## export all content read only. +-##

+-##
+-gen_tunable(rsync_export_all_ro, false) +- +-## +-##

+-## Determine whether rsync can modify +-## public files used for public file +-## transfer services. Directories/Files must +-## be labeled public_content_rw_t. +-##

+-##
+-gen_tunable(allow_rsync_anon_write, false) +- -attribute_role rsync_roles; type rsync_t; @@ -91413,14 +91482,14 @@ index abeb302..85582ef 100644 -allow rsync_t self:tcp_socket { accept listen }; +allow rsync_t self:tcp_socket create_stream_socket_perms; +allow rsync_t self:udp_socket connected_socket_perms; - --allow rsync_t rsync_etc_t:file read_file_perms; ++ +# for identd +# cjp: this should probably only be inetd_child_t rules? +# search home and kerberos also. +allow rsync_t self:netlink_tcpdiag_socket r_netlink_socket_perms; +#end for identd -+ + +-allow rsync_t rsync_etc_t:file read_file_perms; +read_files_pattern(rsync_t, rsync_etc_t, rsync_etc_t) allow rsync_t rsync_data_t:dir list_dir_perms; @@ -91437,7 +91506,7 @@ index abeb302..85582ef 100644 logging_log_filetrans(rsync_t, rsync_log_t, file) manage_dirs_pattern(rsync_t, rsync_tmp_t, rsync_tmp_t) -@@ -108,91 +96,84 @@ kernel_read_kernel_sysctls(rsync_t) +@@ -108,46 +96,55 @@ kernel_read_kernel_sysctls(rsync_t) kernel_read_system_state(rsync_t) kernel_read_network_state(rsync_t) @@ -91474,76 +91543,63 @@ index abeb302..85582ef 100644 -tunable_policy(`allow_rsync_anon_write',` - miscfiles_manage_public_files(rsync_t) --') +userdom_home_manager(rsync_t) ++ ++optional_policy(` ++ daemontools_service_domain(rsync_t, rsync_exec_t) + ') -tunable_policy(`rsync_client',` - corenet_sendrecv_rsync_client_packets(rsync_t) - corenet_tcp_connect_rsync_port(rsync_t) +optional_policy(` -+ daemontools_service_domain(rsync_t, rsync_exec_t) ++ kerberos_use(rsync_t) +') - corenet_sendrecv_ssh_client_packets(rsync_t) - corenet_tcp_connect_ssh_port(rsync_t) - corenet_tcp_sendrecv_ssh_port(rsync_t) +optional_policy(` -+ kerberos_use(rsync_t) ++ inetd_service_domain(rsync_t, rsync_exec_t) +') - manage_dirs_pattern(rsync_t, rsync_data_t, rsync_data_t) - manage_files_pattern(rsync_t, rsync_data_t, rsync_data_t) - manage_lnk_files_pattern(rsync_t, rsync_data_t, rsync_data_t) +optional_policy(` -+ inetd_service_domain(rsync_t, rsync_exec_t) ++ mta_send_mail(rsync_t) ++') ++ ++tunable_policy(`rsync_anon_write',` ++ miscfiles_manage_public_files(rsync_t) ++') ++ ++tunable_policy(`rsync_full_access',` ++ allow rsync_t self:capability { dac_override dac_read_search }; ++ files_manage_non_auth_files(rsync_t) ') --tunable_policy(`rsync_export_all_ro',` -- fs_read_noxattr_fs_files(rsync_t) -- fs_read_nfs_files(rsync_t) -- fs_read_fusefs_files(rsync_t) -- fs_read_cifs_files(rsync_t) -- files_list_non_auth_dirs(rsync_t) -- files_read_non_auth_files(rsync_t) -- files_read_non_auth_symlinks(rsync_t) -- auth_tunable_read_shadow(rsync_t) -+optional_policy(` -+ mta_send_mail(rsync_t) + tunable_policy(`rsync_export_all_ro',` +@@ -161,38 +158,24 @@ tunable_policy(`rsync_export_all_ro',` + auth_tunable_read_shadow(rsync_t) ') -tunable_policy(`rsync_use_cifs',` - fs_list_cifs(rsync_t) - fs_read_cifs_files(rsync_t) - fs_read_cifs_symlinks(rsync_t) -+tunable_policy(`rsync_anon_write',` -+ miscfiles_manage_public_files(rsync_t) - ') - +-') +- -tunable_policy(`rsync_use_fusefs',` - fs_search_fusefs(rsync_t) - fs_read_fusefs_files(rsync_t) - fs_read_fusefs_symlinks(rsync_t) -+tunable_policy(`rsync_full_access',` -+ allow rsync_t self:capability { dac_override dac_read_search }; -+ files_manage_non_auth_files(rsync_t) - ') - +-') +- -tunable_policy(`rsync_use_nfs',` - fs_list_nfs(rsync_t) -+tunable_policy(`rsync_export_all_ro',` -+ files_getattr_all_pipes(rsync_t) -+ fs_read_noxattr_fs_files(rsync_t) - fs_read_nfs_files(rsync_t) +- fs_read_nfs_files(rsync_t) - fs_read_nfs_symlinks(rsync_t) -+ fs_read_cifs_files(rsync_t) -+ files_read_non_security_files(rsync_t) -+ auth_tunable_read_shadow(rsync_t) - ') - --optional_policy(` -- tunable_policy(`rsync_client',` -- ssh_exec(rsync_t) -- ') +tunable_policy(`rsync_client',` + corenet_tcp_connect_rsync_port(rsync_t) + corenet_tcp_connect_ssh_port(rsync_t) @@ -91553,13 +91609,17 @@ index abeb302..85582ef 100644 ') optional_policy(` -- daemontools_service_domain(rsync_t, rsync_exec_t) -+ tunable_policy(`rsync_client',` + tunable_policy(`rsync_client',` +- ssh_exec(rsync_t) + ssh_exec(rsync_t) -+ ') + ') ') -optional_policy(` +- daemontools_service_domain(rsync_t, rsync_exec_t) +-') +- +-optional_policy(` - kerberos_use(rsync_t) -') +auth_can_read_shadow_passwords(rsync_t) @@ -92121,7 +92181,7 @@ index b8b66ff..a93346e 100644 +/var/lib/samba/scripts(/.*)? gen_context(system_u:object_r:samba_unconfined_script_exec_t,s0) +') diff --git a/samba.if b/samba.if -index 50d07fb..e9569d2 100644 +index 50d07fb..a34db48 100644 --- a/samba.if +++ b/samba.if @@ -1,8 +1,12 @@ @@ -92778,7 +92838,7 @@ index 50d07fb..e9569d2 100644 files_search_pids($1) - read_files_pattern($1, { smbd_var_run_t winbind_var_run_t }, winbind_var_run_t) + manage_dirs_pattern($1, winbind_var_run_t, winbind_var_run_t) -+ manage_files_pattern($1, winbin_var_run_t, winbind_var_run_t) ++ manage_files_pattern($1, winbind_var_run_t, winbind_var_run_t) + manage_sock_files_pattern($1, winbind_var_run_t, winbind_var_run_t) +') + @@ -94491,10 +94551,10 @@ index 0000000..b21026b +') diff --git a/sandbox.te b/sandbox.te new file mode 100644 -index 0000000..eb990f6 +index 0000000..6b3fab1 --- /dev/null +++ b/sandbox.te -@@ -0,0 +1,64 @@ +@@ -0,0 +1,65 @@ +policy_module(sandbox,1.0.0) + +attribute sandbox_domain; @@ -94547,7 +94607,8 @@ index 0000000..eb990f6 +dev_dontaudit_getattr_all(sandbox_domain) + +files_rw_all_inherited_files(sandbox_domain, -exec_type -configfile -usr_t -lib_t -locale_t -var_t -var_run_t -device_t -rpm_log_t ) -+files_entrypoint_all_files(sandbox_domain) ++corecmd_entrypoint_all_executables(sandbox_domain) ++files_entrypoint_all_mountpoint(sandbox_domain) + +files_read_config_files(sandbox_domain) +files_read_var_files(sandbox_domain) @@ -94971,10 +95032,10 @@ index 0000000..3e89d71 +') diff --git a/sandboxX.te b/sandboxX.te new file mode 100644 -index 0000000..3dc39bf +index 0000000..24cb7ca --- /dev/null +++ b/sandboxX.te -@@ -0,0 +1,506 @@ +@@ -0,0 +1,508 @@ +policy_module(sandboxX,1.0.0) + +dbus_stub() @@ -95146,10 +95207,12 @@ index 0000000..3dc39bf + +files_search_home(sandbox_x_domain) +files_dontaudit_list_all_mountpoints(sandbox_x_domain) -+files_entrypoint_all_files(sandbox_x_domain) +files_read_config_files(sandbox_x_domain) +files_read_usr_symlinks(sandbox_x_domain) + +++corecmd_entrypoint_all_executables(sandbox_x_domain) +++files_entrypoint_all_mountpoint(sandbox_x_domain) ++ +fs_getattr_tmpfs(sandbox_x_domain) +fs_getattr_xattr_fs(sandbox_x_domain) +fs_list_inotifyfs(sandbox_x_domain) @@ -96934,7 +96997,7 @@ index d14b6bf..da5d41d 100644 +/var/run/sendmail\.pid -- gen_context(system_u:object_r:sendmail_var_run_t,s0) +/var/run/sm-client\.pid -- gen_context(system_u:object_r:sendmail_var_run_t,s0) diff --git a/sendmail.if b/sendmail.if -index 35ad2a7..6b75e85 100644 +index 35ad2a7..afdc7da 100644 --- a/sendmail.if +++ b/sendmail.if @@ -1,4 +1,4 @@ @@ -97111,7 +97174,15 @@ index 35ad2a7..6b75e85 100644 ##
## ## -@@ -265,8 +321,7 @@ interface(`sendmail_log_filetrans_sendmail_log',` +@@ -231,7 +287,6 @@ interface(`sendmail_manage_log',` + # + interface(`sendmail_create_log',` + refpolicywarn(`$0($*) has been deprecated, use sendmail_log_filetrans_sendmail_log() instead.') +- sendmail_log_filetrans_sendmail_log($1, $2, $3) + ') + + ######################################## +@@ -265,8 +320,7 @@ interface(`sendmail_log_filetrans_sendmail_log',` ######################################## ## @@ -97121,7 +97192,7 @@ index 35ad2a7..6b75e85 100644 ## ## ## -@@ -285,58 +340,27 @@ interface(`sendmail_manage_tmp_files',` +@@ -285,58 +339,27 @@ interface(`sendmail_manage_tmp_files',` ######################################## ## @@ -97188,7 +97259,7 @@ index 35ad2a7..6b75e85 100644 ## ## ## -@@ -355,12 +379,17 @@ interface(`sendmail_admin',` +@@ -355,12 +378,17 @@ interface(`sendmail_admin',` type sendmail_t, sendmail_initrc_exec_t, sendmail_log_t; type sendmail_tmp_t, sendmail_var_run_t, unconfined_sendmail_t; type sendmail_keytab_t; @@ -97209,7 +97280,7 @@ index 35ad2a7..6b75e85 100644 domain_system_change_exemption($1) role_transition $2 sendmail_initrc_exec_t system_r; -@@ -376,6 +405,6 @@ interface(`sendmail_admin',` +@@ -376,6 +404,6 @@ interface(`sendmail_admin',` files_list_pids($1) admin_pattern($1, sendmail_var_run_t) @@ -109332,10 +109403,10 @@ index 3d11c6a..b19a117 100644 optional_policy(` diff --git a/virt.fc b/virt.fc -index a4f20bc..c88e3e4 100644 +index a4f20bc..d8b1fd1 100644 --- a/virt.fc +++ b/virt.fc -@@ -1,51 +1,103 @@ +@@ -1,51 +1,109 @@ -HOME_DIR/\.libvirt(/.*)? gen_context(system_u:object_r:virt_home_t,s0) -HOME_DIR/\.libvirt/qemu(/.*)? gen_context(system_u:object_r:svirt_home_t,s0) -HOME_DIR/\.virtinst(/.*)? gen_context(system_u:object_r:virt_home_t,s0) @@ -109358,11 +109429,13 @@ index a4f20bc..c88e3e4 100644 -/etc/libvirt -d gen_context(system_u:object_r:virt_etc_t,s0) +/etc/libvirt -d gen_context(system_u:object_r:virt_etc_t,s0) ++/etc/libvirt/virtlogd.conf -- gen_context(system_u:object_r:virtlogd_etc_t,s0) /etc/libvirt/[^/]* -- gen_context(system_u:object_r:virt_etc_t,s0) /etc/libvirt/[^/]* -d gen_context(system_u:object_r:virt_etc_rw_t,s0) -/etc/libvirt/.*/.* gen_context(system_u:object_r:virt_etc_rw_t,s0) +/etc/libvirt/.*/.* gen_context(system_u:object_r:virt_etc_rw_t,s0) +/etc/rc\.d/init\.d/libvirtd -- gen_context(system_u:object_r:virtd_initrc_exec_t,s0) ++/etc/rc\.d/init\.d/virtlogd -- gen_context(system_u:object_r:virtlogd_initrc_exec_t,s0) +/etc/xen -d gen_context(system_u:object_r:virt_etc_t,s0) +/etc/xen/[^/]* -- gen_context(system_u:object_r:virt_etc_t,s0) +/etc/xen/[^/]* -d gen_context(system_u:object_r:virt_etc_rw_t,s0) @@ -109388,7 +109461,7 @@ index a4f20bc..c88e3e4 100644 /usr/sbin/libvirt-qmf -- gen_context(system_u:object_r:virt_qmf_exec_t,s0) /usr/sbin/libvirtd -- gen_context(system_u:object_r:virtd_exec_t,s0) +/usr/sbin/virtlockd -- gen_context(system_u:object_r:virtd_exec_t,s0) -+/usr/sbin/virtlogd -- gen_context(system_u:object_r:virtd_exec_t,s0) ++/usr/sbin/virtlogd -- gen_context(system_u:object_r:virtlogd_exec_t,s0) +/usr/bin/virt-who -- gen_context(system_u:object_r:virtd_exec_t,s0) +/usr/bin/virsh -- gen_context(system_u:object_r:virsh_exec_t,s0) +/usr/sbin/condor_vm-gahp -- gen_context(system_u:object_r:virtd_exec_t,s0) @@ -109407,24 +109480,34 @@ index a4f20bc..c88e3e4 100644 +/var/lib/libvirt/images(/.*)? gen_context(system_u:object_r:virt_image_t,s0) +/var/lib/libvirt/isos(/.*)? gen_context(system_u:object_r:virt_content_t,s0) +/var/lib/libvirt/qemu(/.*)? gen_context(system_u:object_r:qemu_var_run_t,s0-mls_systemhigh) -+ + +-/var/log/log(/.*)? gen_context(system_u:object_r:virt_log_t,s0) +-/var/log/libvirt(/.*)? gen_context(system_u:object_r:virt_log_t,s0) +-/var/log/vdsm(/.*)? gen_context(system_u:object_r:virt_log_t,s0) +/var/lock/xl -- gen_context(system_u:object_r:virt_log_t,s0) +/var/log/log(/.*)? gen_context(system_u:object_r:virt_log_t,s0) +/var/log/libvirt(/.*)? gen_context(system_u:object_r:virt_log_t,s0) +/var/log/vdsm(/.*)? gen_context(system_u:object_r:virt_log_t,s0) +/var/run/libvirtd\.pid -- gen_context(system_u:object_r:virt_var_run_t,s0) ++/var/run/virtlogd\.pid -- gen_context(system_u:object_r:virtlogd_var_run_t,s0) +/var/run/libvirt(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) +/var/run/libvirt/qemu(/.*)? gen_context(system_u:object_r:qemu_var_run_t,s0-mls_systemhigh) +/var/run/libvirt/lxc(/.*)? gen_context(system_u:object_r:virt_lxc_var_run_t,s0) ++/var/run/libvirt/virtlogd-sock -s gen_context(system_u:object_r:virtlogd_var_run_t,s0) +/var/run/libvirt-sandbox(/.*)? gen_context(system_u:object_r:virt_lxc_var_run_t,s0) +/var/run/vdsm(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) --/var/log/log(/.*)? gen_context(system_u:object_r:virt_log_t,s0) --/var/log/libvirt(/.*)? gen_context(system_u:object_r:virt_log_t,s0) --/var/log/vdsm(/.*)? gen_context(system_u:object_r:virt_log_t,s0) +-/var/vdsm(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) +/var/vdsm(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) --/var/vdsm(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) +-/var/run/libguestfs(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) +-/var/run/libvirtd\.pid -- gen_context(system_u:object_r:virt_var_run_t,s0) +-/var/run/libvirt(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) +-/var/run/libvirt/lxc(/.*)? gen_context(system_u:object_r:virtd_lxc_var_run_t,s0) +-/var/run/libvirt-sandbox(/.*)? gen_context(system_u:object_r:virtd_lxc_var_run_t,s0) +-/var/run/libvirt/qemu(/.*)? gen_context(system_u:object_r:svirt_var_run_t,s0-mls_systemhigh) +-/var/run/user/[^/]*/libguestfs(/.*)? gen_context(system_u:object_r:virt_home_t,s0) +-/var/run/vdsm(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) +# support for AEOLUS project +/usr/bin/imagefactory -- gen_context(system_u:object_r:virtd_exec_t,s0) +/usr/bin/imgfac\.py -- gen_context(system_u:object_r:virtd_exec_t,s0) @@ -109434,15 +109517,7 @@ index a4f20bc..c88e3e4 100644 +/var/lib/oz/isos(/.*)? gen_context(system_u:object_r:virt_content_t,s0) +/var/lib/vdsm(/.*)? gen_context(system_u:object_r:virt_content_t,s0) +/var/lib/rkt/cas(/.*)? gen_context(system_u:object_r:container_image_t,s0) - --/var/run/libguestfs(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) --/var/run/libvirtd\.pid -- gen_context(system_u:object_r:virt_var_run_t,s0) --/var/run/libvirt(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) --/var/run/libvirt/lxc(/.*)? gen_context(system_u:object_r:virtd_lxc_var_run_t,s0) --/var/run/libvirt-sandbox(/.*)? gen_context(system_u:object_r:virtd_lxc_var_run_t,s0) --/var/run/libvirt/qemu(/.*)? gen_context(system_u:object_r:svirt_var_run_t,s0-mls_systemhigh) --/var/run/user/[^/]*/libguestfs(/.*)? gen_context(system_u:object_r:virt_home_t,s0) --/var/run/vdsm(/.*)? gen_context(system_u:object_r:virt_var_run_t,s0) ++ +# add support vios-proxy-* +/usr/bin/vios-proxy-host -- gen_context(system_u:object_r:virtd_exec_t,s0) +/usr/bin/vios-proxy-guest -- gen_context(system_u:object_r:virtd_exec_t,s0) @@ -109466,6 +109541,8 @@ index a4f20bc..c88e3e4 100644 + +/usr/libexec/qemu-ga(/.*)? gen_context(system_u:object_r:virt_qemu_ga_exec_t,s0) + ++/usr/lib/systemd/system/*virtlogd.* gen_context(system_u:object_r:virtlogd_unit_file_t,s0) ++ +/usr/lib/systemd/system/virt.*\.service -- gen_context(system_u:object_r:virtd_unit_file_t,s0) +/usr/lib/systemd/system/libvirt.*\.service -- gen_context(system_u:object_r:virtd_unit_file_t,s0) +/usr/lib/systemd/system/.*xen.*\.service -- gen_context(system_u:object_r:virtd_unit_file_t,s0) @@ -109478,10 +109555,10 @@ index a4f20bc..c88e3e4 100644 +/var/log/qemu-ga\.log.* -- gen_context(system_u:object_r:virt_qemu_ga_log_t,s0) +/var/log/qemu-ga(/.*)? gen_context(system_u:object_r:virt_qemu_ga_log_t,s0) diff --git a/virt.if b/virt.if -index facdee8..280e040 100644 +index facdee8..816d860 100644 --- a/virt.if +++ b/virt.if -@@ -1,318 +1,226 @@ +@@ -1,318 +1,231 @@ -## Libvirt virtualization API. +## Libvirt virtualization API @@ -109652,6 +109729,7 @@ index facdee8..280e040 100644 + attribute virt_tmpfs_type; + attribute virt_ptynode; + type qemu_exec_t; ++ type virtlogd_t; ') - corecmd_search_bin($1) @@ -109674,6 +109752,10 @@ index facdee8..280e040 100644 + + allow $1_t $1_devpts_t:chr_file { rw_chr_file_perms setattr_chr_file_perms }; + term_create_pty($1_t, $1_devpts_t) ++ ++ # Allow domain to write to pipes connected to virtlogd ++ allow $1_t virtlogd_t:fd use; ++ allow $1_t virtlogd_t:fifo_file rw_inherited_fifo_file_perms; ') ######################################## @@ -109897,7 +109979,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -320,18 +228,17 @@ interface(`virt_run_svirt_lxc_domain',` +@@ -320,18 +233,17 @@ interface(`virt_run_svirt_lxc_domain',` ## ## # @@ -109921,7 +110003,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -339,18 +246,18 @@ interface(`virt_getattr_virtd_exec_files',` +@@ -339,18 +251,18 @@ interface(`virt_getattr_virtd_exec_files',` ## ## # @@ -109945,7 +110027,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -358,18 +265,18 @@ interface(`virt_stream_connect',` +@@ -358,18 +270,18 @@ interface(`virt_stream_connect',` ## ## # @@ -109968,7 +110050,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -383,7 +290,6 @@ interface(`virt_read_config',` +@@ -383,7 +295,6 @@ interface(`virt_read_config',` ') files_search_etc($1) @@ -109976,7 +110058,7 @@ index facdee8..280e040 100644 read_files_pattern($1, virt_etc_t, virt_etc_t) read_files_pattern($1, virt_etc_rw_t, virt_etc_rw_t) read_lnk_files_pattern($1, virt_etc_rw_t, virt_etc_rw_t) -@@ -391,8 +297,7 @@ interface(`virt_read_config',` +@@ -391,8 +302,7 @@ interface(`virt_read_config',` ######################################## ## @@ -109986,7 +110068,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -406,7 +311,6 @@ interface(`virt_manage_config',` +@@ -406,7 +316,6 @@ interface(`virt_manage_config',` ') files_search_etc($1) @@ -109994,7 +110076,7 @@ index facdee8..280e040 100644 manage_files_pattern($1, virt_etc_t, virt_etc_t) manage_files_pattern($1, virt_etc_rw_t, virt_etc_rw_t) manage_lnk_files_pattern($1, virt_etc_rw_t, virt_etc_rw_t) -@@ -414,8 +318,25 @@ interface(`virt_manage_config',` +@@ -414,8 +323,25 @@ interface(`virt_manage_config',` ######################################## ## @@ -110022,7 +110104,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -434,6 +355,7 @@ interface(`virt_read_content',` +@@ -434,6 +360,7 @@ interface(`virt_read_content',` read_files_pattern($1, virt_content_t, virt_content_t) read_lnk_files_pattern($1, virt_content_t, virt_content_t) read_blk_files_pattern($1, virt_content_t, virt_content_t) @@ -110030,7 +110112,7 @@ index facdee8..280e040 100644 tunable_policy(`virt_use_nfs',` fs_list_nfs($1) -@@ -450,8 +372,7 @@ interface(`virt_read_content',` +@@ -450,8 +377,7 @@ interface(`virt_read_content',` ######################################## ## @@ -110040,7 +110122,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -459,35 +380,17 @@ interface(`virt_read_content',` +@@ -459,35 +385,17 @@ interface(`virt_read_content',` ## ## # @@ -110079,7 +110161,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -495,53 +398,38 @@ interface(`virt_manage_virt_content',` +@@ -495,53 +403,38 @@ interface(`virt_manage_virt_content',` ## ## # @@ -110144,7 +110226,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -549,34 +437,21 @@ interface(`virt_home_filetrans_virt_content',` +@@ -549,34 +442,21 @@ interface(`virt_home_filetrans_virt_content',` ## ## # @@ -110187,7 +110269,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -584,32 +459,36 @@ interface(`virt_manage_svirt_home_content',` +@@ -584,32 +464,36 @@ interface(`virt_manage_svirt_home_content',` ## ## # @@ -110224,19 +110306,19 @@ index facdee8..280e040 100644 ## -## +## - ## --## Class of the object being created. ++## +## Type to which the created node will be transitioned. +## +## +## -+## + ## +-## Class of the object being created. +## Object class(es) (single or set including {}) for which this +## the transition will occur. ## ## ## -@@ -618,54 +497,36 @@ interface(`virt_relabel_svirt_home_content',` +@@ -618,54 +502,36 @@ interface(`virt_relabel_svirt_home_content',` ## ## # @@ -110300,7 +110382,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -673,54 +534,472 @@ interface(`virt_home_filetrans',` +@@ -673,54 +539,472 @@ interface(`virt_home_filetrans',` ## ## # @@ -110539,14 +110621,13 @@ index facdee8..280e040 100644 +interface(`virt_rw_chr_files',` + gen_require(` + attribute virt_image_type; - ') ++ ') + + rw_chr_files_pattern($1, virt_image_type, virt_image_type) - ') - - ######################################## - ## --## Relabel virt home content. ++') ++ ++######################################## ++## +## Create, read, write, and delete +## svirt cache files. +## @@ -110669,13 +110750,14 @@ index facdee8..280e040 100644 +interface(`virt_exec_sandbox_files',` + gen_require(` + type svirt_sandbox_file_t; -+ ') + ') + + can_exec($1, svirt_sandbox_file_t) -+') -+ -+######################################## -+## + ') + + ######################################## + ## +-## Relabel virt home content. +## Allow any svirt_sandbox_file_t to be an entrypoint of this domain +## +## @@ -110795,7 +110877,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -728,52 +1007,80 @@ interface(`virt_manage_generic_virt_home_content',` +@@ -728,52 +1012,80 @@ interface(`virt_manage_generic_virt_home_content',` ## ## # @@ -110896,7 +110978,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -781,19 +1088,17 @@ interface(`virt_home_filetrans_virt_home',` +@@ -781,19 +1093,17 @@ interface(`virt_home_filetrans_virt_home',` ## ## # @@ -110920,7 +111002,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -801,18 +1106,17 @@ interface(`virt_read_pid_files',` +@@ -801,18 +1111,17 @@ interface(`virt_read_pid_files',` ## ## # @@ -110943,7 +111025,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -820,18 +1124,17 @@ interface(`virt_manage_pid_files',` +@@ -820,18 +1129,17 @@ interface(`virt_manage_pid_files',` ## ## # @@ -110966,7 +111048,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -839,20 +1142,17 @@ interface(`virt_search_lib',` +@@ -839,20 +1147,17 @@ interface(`virt_search_lib',` ## ## # @@ -110991,7 +111073,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -860,74 +1160,123 @@ interface(`virt_read_lib_files',` +@@ -860,74 +1165,123 @@ interface(`virt_read_lib_files',` ## ## # @@ -111139,7 +111221,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -935,117 +1284,153 @@ interface(`virt_read_log',` +@@ -935,117 +1289,153 @@ interface(`virt_read_log',` ## ## # @@ -111344,7 +111426,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -1053,15 +1438,17 @@ interface(`virt_rw_all_image_chr_files',` +@@ -1053,15 +1443,17 @@ interface(`virt_rw_all_image_chr_files',` ## ## # @@ -111367,7 +111449,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -1069,21 +1456,17 @@ interface(`virt_manage_svirt_cache',` +@@ -1069,21 +1461,17 @@ interface(`virt_manage_svirt_cache',` ## ## # @@ -111393,7 +111475,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -1091,36 +1474,36 @@ interface(`virt_manage_virt_cache',` +@@ -1091,36 +1479,36 @@ interface(`virt_manage_virt_cache',` ## ## # @@ -111450,7 +111532,7 @@ index facdee8..280e040 100644 ## ## ## -@@ -1136,50 +1519,76 @@ interface(`virt_manage_images',` +@@ -1136,50 +1524,76 @@ interface(`virt_manage_images',` # interface(`virt_admin',` gen_require(` @@ -111560,10 +111642,10 @@ index facdee8..280e040 100644 + ps_process_pattern(virtd_t, $1) ') diff --git a/virt.te b/virt.te -index f03dcf5..ae377ac 100644 +index f03dcf5..2a1d3e5 100644 --- a/virt.te +++ b/virt.te -@@ -1,150 +1,234 @@ +@@ -1,451 +1,395 @@ -policy_module(virt, 1.7.4) +policy_module(virt, 1.5.0) @@ -111860,6 +111942,23 @@ index f03dcf5..ae377ac 100644 type virtd_keytab_t; files_type(virtd_keytab_t) ++type virtlogd_t, virt_system_domain; ++type virtlogd_exec_t, virt_file_type; ++init_daemon_domain(virtlogd_t, virtlogd_exec_t) ++ ++type virtlogd_etc_t, virt_file_type; ++files_config_file(virtlogd_etc_t) ++ ++type virtlogd_var_run_t, virt_file_type; ++files_pid_file(virtlogd_var_run_t) ++ ++type virtlogd_unit_file_t, virt_file_type; ++systemd_unit_file(virtlogd_unit_file_t) ++ ++type virtlogd_initrc_exec_t, virt_file_type; ++init_script_file(virtlogd_initrc_exec_t) ++ ++ +type qemu_var_run_t, virt_file_type; +typealias qemu_var_run_t alias svirt_var_run_t; +files_pid_file(qemu_var_run_t) @@ -111867,9 +111966,12 @@ index f03dcf5..ae377ac 100644 + ifdef(`enable_mcs',` init_ranged_daemon_domain(virtd_t, virtd_exec_t, s0 - mcs_systemhigh) ++ init_ranged_daemon_domain(virtlogd_t, virtlogd_exec_t, s0 - mcs_systemhigh) ') -@@ -153,299 +237,140 @@ ifdef(`enable_mls',` + + ifdef(`enable_mls',` init_ranged_daemon_domain(virtd_t, virtd_exec_t, s0 - mls_systemhigh) ++ init_ranged_daemon_domain(virtlogd_t, virtlogd_exec_t, s0 - mls_systemhigh) ') -type virt_qmf_t; @@ -112126,34 +112228,34 @@ index f03dcf5..ae377ac 100644 - -dontaudit svirt_t virt_content_t:file write_file_perms; -dontaudit svirt_t virt_content_t:dir rw_dir_perms; -- ++allow svirt_t self:process ptrace; + -append_files_pattern(svirt_t, virt_home_t, virt_home_t) -manage_dirs_pattern(svirt_t, svirt_home_t, svirt_home_t) -manage_files_pattern(svirt_t, svirt_home_t, svirt_home_t) -manage_sock_files_pattern(svirt_t, svirt_home_t, svirt_home_t) - -filetrans_pattern(svirt_t, virt_home_t, svirt_home_t, dir, "qemu") -+allow svirt_t self:process ptrace; - +- -stream_connect_pattern(svirt_t, svirt_home_t, svirt_home_t, virtd_t) +- +-corenet_udp_sendrecv_generic_if(svirt_t) +-corenet_udp_sendrecv_generic_node(svirt_t) +-corenet_udp_sendrecv_all_ports(svirt_t) +-corenet_udp_bind_generic_node(svirt_t) +# it was a part of auth_use_nsswitch +allow svirt_t self:netlink_route_socket r_netlink_socket_perms; - corenet_udp_sendrecv_generic_if(svirt_t) - corenet_udp_sendrecv_generic_node(svirt_t) - corenet_udp_sendrecv_all_ports(svirt_t) - corenet_udp_bind_generic_node(svirt_t) -- -corenet_all_recvfrom_unlabeled(svirt_t) -corenet_all_recvfrom_netlabel(svirt_t) -corenet_tcp_sendrecv_generic_if(svirt_t) --corenet_udp_sendrecv_generic_if(svirt_t) + corenet_udp_sendrecv_generic_if(svirt_t) -corenet_tcp_sendrecv_generic_node(svirt_t) --corenet_udp_sendrecv_generic_node(svirt_t) + corenet_udp_sendrecv_generic_node(svirt_t) -corenet_tcp_sendrecv_all_ports(svirt_t) --corenet_udp_sendrecv_all_ports(svirt_t) + corenet_udp_sendrecv_all_ports(svirt_t) -corenet_tcp_bind_generic_node(svirt_t) --corenet_udp_bind_generic_node(svirt_t) + corenet_udp_bind_generic_node(svirt_t) - -corenet_sendrecv_all_server_packets(svirt_t) corenet_udp_bind_all_ports(svirt_t) @@ -112249,7 +112351,7 @@ index f03dcf5..ae377ac 100644 read_files_pattern(virtd_t, virt_etc_t, virt_etc_t) read_lnk_files_pattern(virtd_t, virt_etc_t, virt_etc_t) -@@ -455,42 +380,29 @@ manage_files_pattern(virtd_t, virt_etc_rw_t, virt_etc_rw_t) +@@ -455,42 +399,29 @@ manage_files_pattern(virtd_t, virt_etc_rw_t, virt_etc_rw_t) manage_lnk_files_pattern(virtd_t, virt_etc_rw_t, virt_etc_rw_t) filetrans_pattern(virtd_t, virt_etc_t, virt_etc_rw_t, dir) @@ -112296,24 +112398,26 @@ index f03dcf5..ae377ac 100644 logging_log_filetrans(virtd_t, virt_log_t, { file dir }) manage_dirs_pattern(virtd_t, virt_var_lib_t, virt_var_lib_t) -@@ -503,23 +415,20 @@ manage_files_pattern(virtd_t, virt_var_run_t, virt_var_run_t) +@@ -503,23 +434,24 @@ manage_files_pattern(virtd_t, virt_var_run_t, virt_var_run_t) manage_sock_files_pattern(virtd_t, virt_var_run_t, virt_var_run_t) files_pid_filetrans(virtd_t, virt_var_run_t, { file dir }) -manage_dirs_pattern(virtd_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t) -manage_files_pattern(virtd_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t) -filetrans_pattern(virtd_t, virt_var_run_t, virtd_lxc_var_run_t, dir, "lxc") -- --stream_connect_pattern(virtd_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t, virtd_lxc_t) --stream_connect_pattern(virtd_t, svirt_var_run_t, svirt_var_run_t, virt_domain) -- --can_exec(virtd_t, virt_tmp_t) +manage_dirs_pattern(virtd_t, virt_lxc_var_run_t, virt_lxc_var_run_t) +manage_files_pattern(virtd_t, virt_lxc_var_run_t, virt_lxc_var_run_t) +filetrans_pattern(virtd_t, virt_var_run_t, virt_lxc_var_run_t, dir, "lxc") +allow virtd_t virt_lxc_var_run_t:file { relabelfrom relabelto }; +stream_connect_pattern(virtd_t, virt_lxc_var_run_t, virt_lxc_var_run_t, virtd_lxc_t) +-stream_connect_pattern(virtd_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t, virtd_lxc_t) +-stream_connect_pattern(virtd_t, svirt_var_run_t, svirt_var_run_t, virt_domain) ++# libvirtd is permitted to talk to virtlogd ++stream_connect_pattern(virtd_t, virt_var_run_t, virtlogd_var_run_t, virtlogd_t) + +-can_exec(virtd_t, virt_tmp_t) + -kernel_read_crypto_sysctls(virtd_t) kernel_read_system_state(virtd_t) kernel_read_network_state(virtd_t) @@ -112327,7 +112431,7 @@ index f03dcf5..ae377ac 100644 corecmd_exec_bin(virtd_t) corecmd_exec_shell(virtd_t) -@@ -527,24 +436,16 @@ corecmd_exec_shell(virtd_t) +@@ -527,24 +459,16 @@ corecmd_exec_shell(virtd_t) corenet_all_recvfrom_netlabel(virtd_t) corenet_tcp_sendrecv_generic_if(virtd_t) corenet_tcp_sendrecv_generic_node(virtd_t) @@ -112355,7 +112459,7 @@ index f03dcf5..ae377ac 100644 dev_rw_sysfs(virtd_t) dev_read_urand(virtd_t) dev_read_rand(virtd_t) -@@ -555,20 +456,26 @@ dev_rw_vhost(virtd_t) +@@ -555,20 +479,26 @@ dev_rw_vhost(virtd_t) dev_setattr_generic_usb_dev(virtd_t) dev_relabel_generic_usb_dev(virtd_t) @@ -112386,7 +112490,7 @@ index f03dcf5..ae377ac 100644 fs_list_auto_mountpoints(virtd_t) fs_getattr_all_fs(virtd_t) fs_rw_anon_inodefs_files(virtd_t) -@@ -601,15 +508,18 @@ term_use_ptmx(virtd_t) +@@ -601,15 +531,18 @@ term_use_ptmx(virtd_t) auth_use_nsswitch(virtd_t) @@ -112406,7 +112510,7 @@ index f03dcf5..ae377ac 100644 selinux_validate_context(virtd_t) -@@ -620,18 +530,26 @@ seutil_read_file_contexts(virtd_t) +@@ -620,18 +553,26 @@ seutil_read_file_contexts(virtd_t) sysnet_signull_ifconfig(virtd_t) sysnet_signal_ifconfig(virtd_t) sysnet_domtrans_ifconfig(virtd_t) @@ -112443,7 +112547,7 @@ index f03dcf5..ae377ac 100644 tunable_policy(`virt_use_nfs',` fs_manage_nfs_dirs(virtd_t) -@@ -640,7 +558,7 @@ tunable_policy(`virt_use_nfs',` +@@ -640,7 +581,7 @@ tunable_policy(`virt_use_nfs',` ') tunable_policy(`virt_use_samba',` @@ -112452,7 +112556,7 @@ index f03dcf5..ae377ac 100644 fs_manage_cifs_files(virtd_t) fs_read_cifs_symlinks(virtd_t) ') -@@ -665,20 +583,12 @@ optional_policy(` +@@ -665,20 +606,12 @@ optional_policy(` ') optional_policy(` @@ -112473,7 +112577,7 @@ index f03dcf5..ae377ac 100644 ') optional_policy(` -@@ -691,20 +601,26 @@ optional_policy(` +@@ -691,20 +624,26 @@ optional_policy(` dnsmasq_kill(virtd_t) dnsmasq_signull(virtd_t) dnsmasq_create_pid_dirs(virtd_t) @@ -112504,7 +112608,7 @@ index f03dcf5..ae377ac 100644 ') optional_policy(` -@@ -712,11 +628,18 @@ optional_policy(` +@@ -712,11 +651,18 @@ optional_policy(` ') optional_policy(` @@ -112523,24 +112627,26 @@ index f03dcf5..ae377ac 100644 policykit_domtrans_auth(virtd_t) policykit_domtrans_resolve(virtd_t) policykit_read_lib(virtd_t) -@@ -727,7 +650,15 @@ optional_policy(` +@@ -727,10 +673,18 @@ optional_policy(` ') optional_policy(` -- sasl_connect(virtd_t) + sanlock_stream_connect(virtd_t) +') + +optional_policy(` -+ sasl_connect(virtd_t) + sasl_connect(virtd_t) + ') + + optional_policy(` ++ setrans_manage_pid_files(virtd_t) +') + +optional_policy(` -+ setrans_manage_pid_files(virtd_t) - ') + kernel_read_xen_state(virtd_t) + kernel_write_xen_state(virtd_t) - optional_policy(` -@@ -746,44 +677,278 @@ optional_policy(` +@@ -746,44 +700,321 @@ optional_policy(` udev_read_pid_files(virtd_t) ') @@ -112551,33 +112657,24 @@ index f03dcf5..ae377ac 100644 ######################################## # -# Virsh local policy -+# virtual domains common policy ++# virtlogd local policy # -+allow virt_domain self:capability2 compromise_kernel; -+allow virt_domain self:process { setrlimit signal_perms getsched setsched }; -+allow virt_domain self:fifo_file rw_fifo_file_perms; -+allow virt_domain self:shm create_shm_perms; -+allow virt_domain self:unix_stream_socket { connectto create_stream_socket_perms }; -+allow virt_domain self:unix_dgram_socket { create_socket_perms sendto }; -+allow virt_domain self:tcp_socket create_stream_socket_perms; -+allow virt_domain self:udp_socket create_socket_perms; -+allow virt_domain self:netlink_kobject_uevent_socket create_socket_perms; -allow virsh_t self:capability { setpcap dac_override ipc_lock sys_nice sys_tty_config }; -allow virsh_t self:process { getcap getsched setsched setcap signal }; -allow virsh_t self:fifo_file rw_fifo_file_perms; -allow virsh_t self:unix_stream_socket { accept connectto listen }; -allow virsh_t self:tcp_socket { accept listen }; -+list_dirs_pattern(virt_domain, virt_content_t, virt_content_t) -+read_files_pattern(virt_domain, virt_content_t, virt_content_t) -+dontaudit virt_domain virt_content_t:file write_file_perms; -+dontaudit virt_domain virt_content_t:dir write; ++# virtlogd is allowed to manage files it creates in /var/run/libvirt ++manage_files_pattern(virtlogd_t, virt_var_run_t, virtlogd_var_run_t) -manage_files_pattern(virsh_t, virt_image_type, virt_image_type) -manage_blk_files_pattern(virsh_t, virt_image_type, virt_image_type) -manage_lnk_files_pattern(virsh_t, virt_image_type, virt_image_type) -+kernel_read_net_sysctls(virt_domain) -+kernel_read_network_state(virt_domain) ++# virtlogd needs to read /etc/libvirt/virtlogd.conf only ++allow virtlogd_t virtlogd_etc_t:file read_file_perms; ++files_search_etc(virtlogd_t) ++allow virtlogd_t virt_etc_t:dir search; -manage_dirs_pattern(virsh_t, svirt_lxc_file_t, svirt_lxc_file_t) -manage_files_pattern(virsh_t, svirt_lxc_file_t, svirt_lxc_file_t) @@ -112585,6 +112682,64 @@ index f03dcf5..ae377ac 100644 -manage_lnk_files_pattern(virsh_t, svirt_lxc_file_t, svirt_lxc_file_t) -manage_sock_files_pattern(virsh_t, svirt_lxc_file_t, svirt_lxc_file_t) -manage_fifo_files_pattern(virsh_t, svirt_lxc_file_t, svirt_lxc_file_t) ++# virtlogd creates /var/run/libvirt/virtlogd-sock with isolated ++# context from other stuff in /var/run/libvirt ++filetrans_pattern(virtlogd_t, virt_var_run_t, virtlogd_var_run_t, { sock_file }) ++# This lets systemd create the socket itself too + +-manage_dirs_pattern(virsh_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t) +-manage_files_pattern(virsh_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t) +-filetrans_pattern(virsh_t, virt_var_run_t, virtd_lxc_var_run_t, dir, "lxc") ++# virtlogd creates a /var/run/virtlogd.pid file ++allow virtlogd_t virtlogd_var_run_t:file manage_file_perms; ++manage_sock_files_pattern(virtlogd_t, virt_var_run_t, virtlogd_var_run_t) ++files_pid_filetrans(virtlogd_t, virtlogd_var_run_t, file) + +-dontaudit virsh_t virt_var_lib_t:file read_file_perms; ++kernel_read_network_state(virtlogd_t) + +-allow virsh_t svirt_lxc_domain:process transition; ++allow virtlogd_t self:unix_stream_socket create_stream_socket_perms; + +-can_exec(virsh_t, virsh_exec_t) ++dev_read_sysfs(virtlogd_t) ++ ++logging_send_syslog_msg(virtlogd_t) ++ ++auth_use_nsswitch(virtlogd_t) ++ ++manage_files_pattern(virtlogd_t, virt_log_t, virt_log_t) ++ ++ ++# Allow virtlogd to look at /proc/$PID/status ++# to authenticate the connecting libvirtd ++allow virtlogd_t virtd_t:dir list_dir_perms; ++allow virtlogd_t virtd_t:file read_file_perms; ++allow virtlogd_t virtd_t:lnk_file read_lnk_file_perms; ++ ++ ++######################################## ++# ++# virtual domains common policy ++# ++allow virt_domain self:capability2 compromise_kernel; ++allow virt_domain self:process { setrlimit signal_perms getsched setsched }; ++allow virt_domain self:fifo_file rw_fifo_file_perms; ++allow virt_domain self:shm create_shm_perms; ++allow virt_domain self:unix_stream_socket { connectto create_stream_socket_perms }; ++allow virt_domain self:unix_dgram_socket { create_socket_perms sendto }; ++allow virt_domain self:tcp_socket create_stream_socket_perms; ++allow virt_domain self:udp_socket create_socket_perms; ++allow virt_domain self:netlink_kobject_uevent_socket create_socket_perms; ++ ++list_dirs_pattern(virt_domain, virt_content_t, virt_content_t) ++read_files_pattern(virt_domain, virt_content_t, virt_content_t) ++dontaudit virt_domain virt_content_t:file write_file_perms; ++dontaudit virt_domain virt_content_t:dir write; + ++kernel_read_net_sysctls(virt_domain) ++kernel_read_network_state(virt_domain) ++ +userdom_search_user_home_content(virt_domain) +userdom_read_user_home_content_symlinks(virt_domain) +userdom_read_all_users_state(virt_domain) @@ -112594,15 +112749,11 @@ index f03dcf5..ae377ac 100644 +manage_sock_files_pattern(virt_domain, svirt_home_t, svirt_home_t) +filetrans_pattern(virt_domain, virt_home_t, svirt_home_t, { dir sock_file file }) +stream_connect_pattern(virt_domain, svirt_home_t, svirt_home_t, virtd_t) - --manage_dirs_pattern(virsh_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t) --manage_files_pattern(virsh_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t) --filetrans_pattern(virsh_t, virt_var_run_t, virtd_lxc_var_run_t, dir, "lxc") ++ +manage_dirs_pattern(virt_domain, virt_cache_t, virt_cache_t) +manage_files_pattern(virt_domain, virt_cache_t, virt_cache_t) +files_var_filetrans(virt_domain, virt_cache_t, { file dir }) - --dontaudit virsh_t virt_var_lib_t:file read_file_perms; ++ +read_lnk_files_pattern(virt_domain, virt_image_t, virt_image_t) + +manage_dirs_pattern(virt_domain, svirt_image_t, svirt_image_t) @@ -112634,11 +112785,9 @@ index f03dcf5..ae377ac 100644 +stream_connect_pattern(virt_domain, qemu_var_run_t, qemu_var_run_t, virtd_t) + +dontaudit virtd_t virt_domain:process { siginh noatsecure rlimitinh }; - --allow virsh_t svirt_lxc_domain:process transition; ++ +dontaudit virt_domain virt_tmpfs_type:file { read write }; - --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) @@ -112696,7 +112845,7 @@ index f03dcf5..ae377ac 100644 +term_getattr_pty_fs(virt_domain) +term_use_generic_ptys(virt_domain) +term_use_ptmx(virt_domain) - ++ +tunable_policy(`virt_use_execmem',` + allow virt_domain self:process { execmem execstack }; +') @@ -112841,7 +112990,7 @@ index f03dcf5..ae377ac 100644 kernel_read_system_state(virsh_t) kernel_read_network_state(virsh_t) kernel_read_kernel_sysctls(virsh_t) -@@ -794,25 +959,18 @@ kernel_write_xen_state(virsh_t) +@@ -794,25 +1025,18 @@ kernel_write_xen_state(virsh_t) corecmd_exec_bin(virsh_t) corecmd_exec_shell(virsh_t) @@ -112868,7 +113017,7 @@ index f03dcf5..ae377ac 100644 fs_getattr_all_fs(virsh_t) fs_manage_xenfs_dirs(virsh_t) -@@ -821,23 +979,25 @@ fs_search_auto_mountpoints(virsh_t) +@@ -821,23 +1045,25 @@ fs_search_auto_mountpoints(virsh_t) storage_raw_read_fixed_disk(virsh_t) @@ -112885,10 +113034,10 @@ index f03dcf5..ae377ac 100644 -logging_send_syslog_msg(virsh_t) +systemd_exec_systemctl(virsh_t) -+ -+auth_read_passwd(virsh_t) -miscfiles_read_localization(virsh_t) ++auth_read_passwd(virsh_t) ++ +logging_send_syslog_msg(virsh_t) sysnet_dns_name_resolve(virsh_t) @@ -112902,7 +113051,7 @@ index f03dcf5..ae377ac 100644 tunable_policy(`virt_use_nfs',` fs_manage_nfs_dirs(virsh_t) -@@ -856,14 +1016,20 @@ optional_policy(` +@@ -856,14 +1082,20 @@ optional_policy(` ') optional_policy(` @@ -112924,7 +113073,7 @@ index f03dcf5..ae377ac 100644 xen_stream_connect(virsh_t) xen_stream_connect_xenstore(virsh_t) ') -@@ -888,49 +1054,65 @@ optional_policy(` +@@ -888,49 +1120,66 @@ optional_policy(` kernel_read_xen_state(virsh_ssh_t) kernel_write_xen_state(virsh_ssh_t) @@ -112958,7 +113107,8 @@ index f03dcf5..ae377ac 100644 +allow virtd_t virtd_lxc_t:unix_stream_socket create_stream_socket_perms; -allow virtd_lxc_t svirt_lxc_domain:process { getattr getsched setsched transition signal signull sigkill }; -+files_entrypoint_all_files(virtd_lxc_t) ++corecmd_entrypoint_all_executables(virtd_lxc_t) ++files_entrypoint_all_mountpoint(virtd_lxc_t) allow virtd_lxc_t virt_image_type:dir mounton; manage_files_pattern(virtd_lxc_t, virt_image_t, virt_image_t) @@ -113008,7 +113158,7 @@ index f03dcf5..ae377ac 100644 corecmd_exec_bin(virtd_lxc_t) corecmd_exec_shell(virtd_lxc_t) -@@ -942,17 +1124,16 @@ dev_read_urand(virtd_lxc_t) +@@ -942,17 +1191,16 @@ dev_read_urand(virtd_lxc_t) domain_use_interactive_fds(virtd_lxc_t) @@ -113028,7 +113178,7 @@ index f03dcf5..ae377ac 100644 fs_getattr_all_fs(virtd_lxc_t) fs_manage_tmpfs_dirs(virtd_lxc_t) fs_manage_tmpfs_chr_files(virtd_lxc_t) -@@ -964,8 +1145,23 @@ fs_rw_cgroup_files(virtd_lxc_t) +@@ -964,8 +1212,23 @@ fs_rw_cgroup_files(virtd_lxc_t) fs_unmount_all_fs(virtd_lxc_t) fs_relabelfrom_tmpfs(virtd_lxc_t) @@ -113052,7 +113202,7 @@ index f03dcf5..ae377ac 100644 selinux_get_enforce_mode(virtd_lxc_t) selinux_get_fs_mount(virtd_lxc_t) selinux_validate_context(virtd_lxc_t) -@@ -974,194 +1170,352 @@ selinux_compute_create_context(virtd_lxc_t) +@@ -974,194 +1237,355 @@ selinux_compute_create_context(virtd_lxc_t) selinux_compute_relabel_context(virtd_lxc_t) selinux_compute_user_contexts(virtd_lxc_t) @@ -113175,7 +113325,10 @@ index f03dcf5..ae377ac 100644 +files_search_all_mountpoints(svirt_sandbox_domain) +files_dontaudit_list_all_mountpoints(svirt_sandbox_domain) +files_dontaudit_write_etc_runtime_files(svirt_sandbox_domain) -+files_entrypoint_all_files(svirt_sandbox_domain) ++ ++files_entrypoint_all_mountpoint(svirt_sandbox_domain) ++corecmd_entrypoint_all_executables(svirt_sandbox_domain) ++ +files_list_var(svirt_sandbox_domain) +files_list_var_lib(svirt_sandbox_domain) +files_search_all(svirt_sandbox_domain) @@ -113216,6 +113369,23 @@ index f03dcf5..ae377ac 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) ++') ++ ++optional_policy(` ++ gear_read_pid_files(svirt_sandbox_domain) ++') ++ ++optional_policy(` ++ mta_dontaudit_read_spool_symlinks(svirt_sandbox_domain) ++') ++ ++optional_policy(` ++ ssh_use_ptys(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 }; @@ -113300,30 +113470,11 @@ index f03dcf5..ae377ac 100644 - -mta_dontaudit_read_spool_symlinks(svirt_lxc_domain) +optional_policy(` -+ apache_exec_modules(svirt_sandbox_domain) -+ apache_read_sys_content(svirt_sandbox_domain) -+') -+ -+optional_policy(` -+ gear_read_pid_files(svirt_sandbox_domain) ++ udev_read_pid_files(svirt_sandbox_domain) +') optional_policy(` - udev_read_pid_files(svirt_lxc_domain) -+ mta_dontaudit_read_spool_symlinks(svirt_sandbox_domain) - ') - - optional_policy(` -- apache_exec_modules(svirt_lxc_domain) -- apache_read_sys_content(svirt_lxc_domain) -+ ssh_use_ptys(svirt_sandbox_domain) -+') -+ -+optional_policy(` -+ udev_read_pid_files(svirt_sandbox_domain) -+') -+ -+optional_policy(` + userhelper_dontaudit_write_config(svirt_sandbox_domain) +') + @@ -113345,9 +113496,11 @@ index f03dcf5..ae377ac 100644 + fs_manage_fusefs_dirs(svirt_sandbox_domain) + fs_manage_fusefs_files(svirt_sandbox_domain) + fs_manage_fusefs_symlinks(svirt_sandbox_domain) -+') -+ -+optional_policy(` + ') + + optional_policy(` +- apache_exec_modules(svirt_lxc_domain) +- apache_read_sys_content(svirt_lxc_domain) + docker_read_share_files(svirt_sandbox_domain) + docker_exec_share_files(svirt_sandbox_domain) + docker_lib_filetrans(svirt_sandbox_domain,svirt_sandbox_file_t, sock_file) @@ -113500,7 +113653,8 @@ index f03dcf5..ae377ac 100644 + +list_dirs_pattern(svirt_qemu_net_t, virt_content_t, virt_content_t) +read_files_pattern(svirt_qemu_net_t, virt_content_t, virt_content_t) -+ + +-allow svirt_prot_exec_t self:process { execmem execstack }; +append_files_pattern(svirt_qemu_net_t, virt_log_t, virt_log_t) + +kernel_read_irq_sysctls(svirt_qemu_net_t) @@ -113518,8 +113672,7 @@ index f03dcf5..ae377ac 100644 +fs_manage_cgroup_files(svirt_qemu_net_t) + +term_pty(svirt_sandbox_file_t) - --allow svirt_prot_exec_t self:process { execmem execstack }; ++ +auth_use_nsswitch(svirt_qemu_net_t) + +rpm_read_db(svirt_qemu_net_t) @@ -113546,7 +113699,7 @@ index f03dcf5..ae377ac 100644 allow virt_qmf_t self:tcp_socket create_stream_socket_perms; allow virt_qmf_t self:netlink_route_socket create_netlink_socket_perms; -@@ -1174,12 +1528,12 @@ dev_read_sysfs(virt_qmf_t) +@@ -1174,12 +1598,12 @@ dev_read_sysfs(virt_qmf_t) dev_read_rand(virt_qmf_t) dev_read_urand(virt_qmf_t) @@ -113561,7 +113714,7 @@ index f03dcf5..ae377ac 100644 sysnet_read_config(virt_qmf_t) optional_policy(` -@@ -1192,7 +1546,7 @@ optional_policy(` +@@ -1192,7 +1616,7 @@ optional_policy(` ######################################## # @@ -113570,7 +113723,7 @@ index f03dcf5..ae377ac 100644 # allow virt_bridgehelper_t self:process { setcap getcap }; -@@ -1201,11 +1555,255 @@ allow virt_bridgehelper_t self:tcp_socket create_stream_socket_perms; +@@ -1201,11 +1625,255 @@ allow virt_bridgehelper_t self:tcp_socket create_stream_socket_perms; allow virt_bridgehelper_t self:tun_socket create_socket_perms; allow virt_bridgehelper_t self:unix_dgram_socket create_socket_perms; diff --git a/selinux-policy.spec b/selinux-policy.spec index 4bd4dee..e698fb2 100644 --- a/selinux-policy.spec +++ b/selinux-policy.spec @@ -19,7 +19,7 @@ Summary: SELinux policy configuration Name: selinux-policy Version: 3.13.1 -Release: 179%{?dist} +Release: 180%{?dist} License: GPLv2+ Group: System Environment/Base Source: serefpolicy-%{version}.tgz @@ -653,6 +653,44 @@ exit 0 %endif %changelog +* Wed Mar 30 2016 Lukas Vrabec 3.13.1-180 +- Allow dovecot_auth_t domain to manage also dovecot_var_run_t fifo files. BZ(1320415) +- Allow colord to read /etc/udev/hwdb.bin. rhzb#1316514 +- sandboxX.te: Allow sandbox domain to have entrypoint access only for executables and mountpoints. +- Allow sandbox domain to have entrypoint access only for executables and mountpoints. +- Allow bitlee to create bitlee_var_t dirs. +- Allow CIM provider to read sssd public files. +- Fix some broken interfaces in distro policy. +- Allow power button to shutdown the laptop. +- Allow lsm plugins to create named fixed disks. rhbz#1238066 +- Allow hyperv domains to rw hyperv devices. rhbz#1241636 +- Label /var/www/html(/.*)?/wp_backups(/.*)? as httpd_sys_rw_content_t. +- Create conman_unconfined_script_t type for conman script stored in /use/share/conman/exec/ +- Allow rsync_export_all_ro boolean to read also non_auth_dirs/files/symlinks. +- Allow pmdaapache labeled as pcp_pmcd_t access to port 80 for apache diagnostics +- Label nagios scripts as httpd_sys_script_exec_t. +- Allow nsd_t to bind on nsf_control tcp port. Allow nsd_crond_t to read nsd pid. +- Fix couple of cosmetic thing in new virtlogd_t policy. rhbz #1311576 +- Merge pull request #104 from berrange/rawhide-contrib-virtlogd +- Label /var/run/ecblp0 as cupsd_var_run_t due to this fifo_file is used by epson drivers. rhbz#1310336 +- Dontaudit logrotate to setrlimit itself. rhbz#1309604 +- Add filename transition that /etc/princap will be created with cupsd_rw_etc_t label in cups_filetrans_named_content() interface. +- Allow pcp_pmie and pcp_pmlogger to read all domains state. +- Allow systemd-gpt-generator to create and manage systemd gpt generator unit files. BZ(1319446) +- Merge pull request #115 from rhatdan/nvidea +- Label all nvidia binaries as xserver_exec_t +- Add new systemd_hwdb_read_config() interface. rhbz#1316514 +- Add back corecmd_read_all_executables() interface. +- Call files_type() instead of file_type() for unlabeled_t. +- Add files_entrypoint_all_mountpoint() interface. +- Make unlabeled only as a file_type type. It is a type for fallback if there is an issue with labeling. +- Add corecmd_entrypoint_all_executables() interface. +- Create hyperv* devices and create rw interfaces for this devices. rhbz#1309361 +- Add neverallow assertion for unlabaled_t to increase policy security. +- Allow systemd-rfkill to create /var/lib/systemd/rfkill dir. rhbz#1319499 +- Label 8952 tcp port as nsd_control. +- Allow to log out to gdm after screen was resized in session via vdagent. Resolves: rhbz#1249020 + * Wed Mar 16 2016 Lukas Vrabec 3.13.1-179 - Add filename transition that /etc/princap will be created with cupsd_rw_etc_t label in cups_filetrans_named_content() interface. - Revert "Add filename transition that /etc/princap will be created with cupsd_rw_etc_t label in cups_filetrans_named_content."