diff --git a/.selinux-policy.metadata b/.selinux-policy.metadata
index 75fe480..f47fe12 100644
--- a/.selinux-policy.metadata
+++ b/.selinux-policy.metadata
@@ -1,4 +1,4 @@
c21486a81ff7085007e30fb56ae8612607c5cc69 SOURCES/serefpolicy-contrib-3.12.1.tgz
-036245dbc144b57e1805e15e07a737fcd0119390 SOURCES/permissivedomains.pp
-e5d300354838008da0d531041df7aa168e6d3e93 SOURCES/config.tgz
+4fd46bd7d17737f2e7c0b287a11d6362d918da8f SOURCES/permissivedomains.pp
+5054dc0ae7f7378c4f6670e89544246558e20dc4 SOURCES/config.tgz
7c268e6658b024719ad248965c27398304ac9e79 SOURCES/serefpolicy-3.12.1.tgz
diff --git a/SOURCES/file_contexts.subs_dist b/SOURCES/file_contexts.subs_dist
index 500ef4d..5550852 100644
--- a/SOURCES/file_contexts.subs_dist
+++ b/SOURCES/file_contexts.subs_dist
@@ -5,10 +5,12 @@
/lib /usr/lib
/lib64 /usr/lib
/usr/lib64 /usr/lib
-/usr/local /usr
/usr/local/lib64 /usr/lib
/usr/local/lib32 /usr/lib
+/etc/init.d /etc/rc.d/init.d
/etc/systemd/system /usr/lib/systemd/system
/var/lib/xguest/home /home
/var/named/chroot/usr/lib64 /usr/lib
/var/named/chroot/lib64 /usr/lib
+/var/home /home
+/var/roothome /root
diff --git a/SOURCES/modules-targeted-contrib.conf b/SOURCES/modules-targeted-contrib.conf
index 67cdd0f..62763f2 100644
--- a/SOURCES/modules-targeted-contrib.conf
+++ b/SOURCES/modules-targeted-contrib.conf
@@ -216,6 +216,13 @@ brctl = module
bugzilla = module
# Layer: services
+# Module: bumblebee
+#
+# Support NVIDIA Optimus technology under Linux
+#
+bumblebee = module
+
+# Layer: services
# Module: cachefilesd
#
# CacheFiles userspace management daemon
@@ -658,6 +665,13 @@ firstboot = module
fprintd = module
# Layer: services
+# Module: freqset
+#
+# Utility for CPU frequency scaling
+#
+freqset = module
+
+# Layer: services
# Module: ftp
#
# File transfer protocol service
@@ -874,6 +888,13 @@ kdump = module
#
kerberos = module
+# Layer: services
+# Module: keepalived
+#
+# keepalived - load-balancing and high-availability service
+#
+keepalived = module
+
# Module: keyboardd
#
# system-setup-keyboard is a keyboard layout daemon that monitors
@@ -1043,6 +1064,13 @@ memcached = module
milter = module
# Layer: services
+# Module: mip6d
+#
+# UMIP Mobile IPv6 and NEMO Basic Support protocol implementation
+#
+mip6d = module
+
+# Layer: services
# Module: mock
#
# Policy for mock rpm builder
@@ -1265,6 +1293,13 @@ openshift-origin = module
openshift = module
# Layer: services
+# Module: opensm
+#
+# InfiniBand subnet manager and administration (SM/SA)
+#
+opensm = module
+
+# Layer: services
# Module: openvpn
#
# Policy for OPENVPN full-featured SSL VPN solution
@@ -1278,6 +1313,13 @@ openvpn = module
#
openvswitch = module
+# Layer: services
+# Module: osad
+#
+# Client-side service written in Python that responds to pings
+#
+osad = module
+
# Layer: contrib
# Module: prelude
#
@@ -1535,6 +1577,13 @@ radvd = module
raid = module
# Layer: services
+# Module: rasdaemon
+#
+# The rasdaemon program is a daemon with monitors the RAS trace events from /sys/kernel/debug/tracing
+#
+rasdaemon = module
+
+# Layer: services
# Module: rdisc
#
# Network router discovery daemon
@@ -2330,3 +2379,102 @@ motion = module
# rtas policy
#
rtas = module
+
+# Layer: contrib
+# Module: ninfod
+#
+# Respond to IPv6 Node Information Queries
+#
+ninfod = module
+
+# Layer: contrib
+# Module: openwsman
+#
+# WS-Management Server
+#
+openwsman = module
+
+# Layer: contrib
+# Module: freeipmi
+#
+# Remote-Console (out-of-band) and System Management Software (in-band)
+# based on IntelligentPlatform Management Interface specification
+#
+freeipmi = module
+
+# Layer: contrib
+# Module: conman
+#
+# Conman is a program for connecting to remote consoles being managed by conmand
+#
+conman = module
+
+# Layer: contrib
+# Module: docker
+#
+# Docker
+#
+docker = module
+
+# Layer: contrib
+# Module: freeipmi
+#
+# ipa policy module contain SELinux policies for IPA services
+#
+ipa = module
+
+# Layer: contrib
+# Module: snapper
+#
+# snapper policy
+#
+snapper = module
+
+# Layer: services
+# Module: vmtools
+#
+# VMware Tools daemon
+#
+vmtools = module
+
+# Layer: services
+# Module: speech-dispatcher
+#
+# speech-dispatcher - server process managing speech requests in Speech Dispatcher
+#
+speech-dispatcher = module
+
+# Layer: contrib
+# Module: rkhunter
+#
+# rkhunter policy for /var/lib/rkhunter
+#
+rkhunter = module
+
+# Layer: contrib
+# Module: pcp
+#
+# pcp policy
+#
+pcp = module
+
+# Layer: contrib
+# Module: bacula
+#
+# bacula policy
+#
+bacula = module
+
+# Layer: contrib
+# Module: rhnsd
+#
+# rhnsd policy
+#
+rhnsd = module
+
+# Layer: contrib
+# Module: gear
+#
+# gear policy
+#
+gear = module
diff --git a/SOURCES/policy-f20-base.patch b/SOURCES/policy-f20-base.patch
index 0722c5a..3c28671 100644
--- a/SOURCES/policy-f20-base.patch
+++ b/SOURCES/policy-f20-base.patch
@@ -71,6 +71,24 @@ index 881a292..80110a4 100644
system_r:xdm_t:s0 staff_r:staff_t:s0
staff_r:staff_su_t:s0 staff_r:staff_t:s0
staff_r:staff_sudo_t:s0 staff_r:staff_t:s0
+diff --git a/config/appconfig-mcs/sysadm_u_default_contexts b/config/appconfig-mcs/sysadm_u_default_contexts
+new file mode 100644
+index 0000000..b8fda95
+--- /dev/null
++++ b/config/appconfig-mcs/sysadm_u_default_contexts
+@@ -0,0 +1,12 @@
++system_r:local_login_t:s0 sysadm_r:sysadm_t:s0
++system_r:remote_login_t:s0 sysadm_r:sysadm_t:s0
++system_r:sshd_t:s0 sysadm_r:sysadm_t:s0
++system_r:crond_t:s0 sysadm_r:sysadm_t:s0
++system_r:xdm_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_su_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_sudo_t:s0 sysadm_r:sysadm_t:s0
++system_r:initrc_su_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_su_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_sudo_t:s0 sysadm_r:sysadm_t:s0
++
diff --git a/config/appconfig-mcs/systemd_contexts b/config/appconfig-mcs/systemd_contexts
new file mode 100644
index 0000000..ff32acc
@@ -144,6 +162,24 @@ index c2a5ea8..f63999e 100644
system_r:xdm_t staff_r:staff_t
staff_r:staff_su_t staff_r:staff_t
staff_r:staff_sudo_t staff_r:staff_t
+diff --git a/config/appconfig-standard/sysadm_u_default_contexts b/config/appconfig-standard/sysadm_u_default_contexts
+new file mode 100644
+index 0000000..b8fda95
+--- /dev/null
++++ b/config/appconfig-standard/sysadm_u_default_contexts
+@@ -0,0 +1,12 @@
++system_r:local_login_t:s0 sysadm_r:sysadm_t:s0
++system_r:remote_login_t:s0 sysadm_r:sysadm_t:s0
++system_r:sshd_t:s0 sysadm_r:sysadm_t:s0
++system_r:crond_t:s0 sysadm_r:sysadm_t:s0
++system_r:xdm_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_su_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_sudo_t:s0 sysadm_r:sysadm_t:s0
++system_r:initrc_su_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_su_t:s0 sysadm_r:sysadm_t:s0
++sysadm_r:sysadm_sudo_t:s0 sysadm_r:sysadm_t:s0
++
diff --git a/config/appconfig-standard/systemd_contexts b/config/appconfig-standard/systemd_contexts
new file mode 100644
index 0000000..ff32acc
@@ -2693,7 +2729,7 @@ index 99e3903..7270808 100644
########################################
diff --git a/policy/modules/admin/usermanage.te b/policy/modules/admin/usermanage.te
-index d555767..3053e39 100644
+index d555767..049a211 100644
--- a/policy/modules/admin/usermanage.te
+++ b/policy/modules/admin/usermanage.te
@@ -5,18 +5,18 @@ policy_module(usermanage, 1.18.1)
@@ -2901,6 +2937,15 @@ index d555767..3053e39 100644
')
optional_policy(`
+@@ -270,7 +297,7 @@ optional_policy(`
+ # Passwd local policy
+ #
+
+-allow passwd_t self:capability { chown dac_override fsetid setuid setgid sys_nice sys_resource };
++allow passwd_t self:capability { chown dac_override ipc_lock fsetid setuid setgid sys_nice sys_resource };
+ dontaudit passwd_t self:capability sys_tty_config;
+ allow passwd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
+ allow passwd_t self:process { setrlimit setfscreate };
@@ -285,6 +312,7 @@ allow passwd_t self:shm create_shm_perms;
allow passwd_t self:sem create_sem_perms;
allow passwd_t self:msgq create_msgq_perms;
@@ -2975,7 +3020,7 @@ index d555767..3053e39 100644
userdom_use_unpriv_users_fds(passwd_t)
# make sure that getcon succeeds
userdom_getattr_all_users(passwd_t)
-@@ -349,9 +389,17 @@ userdom_read_user_tmp_files(passwd_t)
+@@ -349,9 +389,18 @@ userdom_read_user_tmp_files(passwd_t)
# user generally runs this from their home directory, so do not audit a search
# on user home dir
userdom_dontaudit_search_user_home_content(passwd_t)
@@ -2985,6 +3030,7 @@ index d555767..3053e39 100644
- nscd_run(passwd_t, passwd_roles)
+ gnome_exec_keyringd(passwd_t)
+ gnome_manage_cache_home_dir(passwd_t)
++ gnome_manage_generic_cache_sockets(passwd_t)
+ gnome_stream_connect_gkeyringd(passwd_t)
+')
+
@@ -2994,7 +3040,7 @@ index d555767..3053e39 100644
')
########################################
-@@ -398,9 +446,10 @@ dev_read_urand(sysadm_passwd_t)
+@@ -398,9 +447,10 @@ dev_read_urand(sysadm_passwd_t)
fs_getattr_xattr_fs(sysadm_passwd_t)
fs_search_auto_mountpoints(sysadm_passwd_t)
@@ -3007,7 +3053,7 @@ index d555767..3053e39 100644
auth_manage_shadow(sysadm_passwd_t)
auth_relabel_shadow(sysadm_passwd_t)
auth_etc_filetrans_shadow(sysadm_passwd_t)
-@@ -413,7 +462,6 @@ files_read_usr_files(sysadm_passwd_t)
+@@ -413,7 +463,6 @@ files_read_usr_files(sysadm_passwd_t)
domain_use_interactive_fds(sysadm_passwd_t)
@@ -3015,7 +3061,7 @@ index d555767..3053e39 100644
files_relabel_etc_files(sysadm_passwd_t)
files_read_etc_runtime_files(sysadm_passwd_t)
# for nscd lookups
-@@ -423,19 +471,17 @@ files_dontaudit_search_pids(sysadm_passwd_t)
+@@ -423,19 +472,17 @@ files_dontaudit_search_pids(sysadm_passwd_t)
# correctly without it. Do not audit write denials to utmp.
init_dontaudit_rw_utmp(sysadm_passwd_t)
@@ -3037,7 +3083,7 @@ index d555767..3053e39 100644
')
########################################
-@@ -443,7 +489,8 @@ optional_policy(`
+@@ -443,7 +490,8 @@ optional_policy(`
# Useradd local policy
#
@@ -3047,7 +3093,7 @@ index d555767..3053e39 100644
dontaudit useradd_t self:capability sys_tty_config;
allow useradd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
allow useradd_t self:process setfscreate;
-@@ -458,6 +505,10 @@ allow useradd_t self:unix_stream_socket create_stream_socket_perms;
+@@ -458,6 +506,10 @@ allow useradd_t self:unix_stream_socket create_stream_socket_perms;
allow useradd_t self:unix_dgram_socket sendto;
allow useradd_t self:unix_stream_socket connectto;
@@ -3058,7 +3104,7 @@ index d555767..3053e39 100644
# for getting the number of groups
kernel_read_kernel_sysctls(useradd_t)
-@@ -465,36 +516,36 @@ corecmd_exec_shell(useradd_t)
+@@ -465,36 +517,37 @@ corecmd_exec_shell(useradd_t)
# Execute /usr/bin/{passwd,chfn,chsh} and /usr/sbin/{useradd,vipw}.
corecmd_exec_bin(useradd_t)
@@ -3074,6 +3120,7 @@ index d555767..3053e39 100644
files_relabel_etc_files(useradd_t)
files_read_etc_runtime_files(useradd_t)
+files_manage_etc_files(useradd_t)
++files_create_var_lib_dirs(useradd_t)
+files_rw_var_lib_dirs(useradd_t)
fs_search_auto_mountpoints(useradd_t)
@@ -3107,7 +3154,7 @@ index d555767..3053e39 100644
auth_manage_shadow(useradd_t)
auth_relabel_shadow(useradd_t)
auth_etc_filetrans_shadow(useradd_t)
-@@ -505,33 +556,36 @@ init_rw_utmp(useradd_t)
+@@ -505,33 +558,36 @@ init_rw_utmp(useradd_t)
logging_send_audit_msgs(useradd_t)
logging_send_syslog_msg(useradd_t)
@@ -3158,7 +3205,7 @@ index d555767..3053e39 100644
optional_policy(`
apache_manage_all_user_content(useradd_t)
')
-@@ -542,7 +596,12 @@ optional_policy(`
+@@ -542,7 +598,12 @@ optional_policy(`
')
optional_policy(`
@@ -3172,7 +3219,7 @@ index d555767..3053e39 100644
')
optional_policy(`
-@@ -550,6 +609,11 @@ optional_policy(`
+@@ -550,6 +611,11 @@ optional_policy(`
')
optional_policy(`
@@ -3184,7 +3231,7 @@ index d555767..3053e39 100644
tunable_policy(`samba_domain_controller',`
samba_append_log(useradd_t)
')
-@@ -559,3 +623,12 @@ optional_policy(`
+@@ -559,3 +625,12 @@ optional_policy(`
rpm_use_fds(useradd_t)
rpm_rw_pipes(useradd_t)
')
@@ -3365,7 +3412,7 @@ index 7590165..fb30c11 100644
+ fs_mounton_fusefs(seunshare_domain)
+')
diff --git a/policy/modules/kernel/corecommands.fc b/policy/modules/kernel/corecommands.fc
-index 644d4d7..6e7dd83 100644
+index 644d4d7..ad789c2 100644
--- a/policy/modules/kernel/corecommands.fc
+++ b/policy/modules/kernel/corecommands.fc
@@ -1,9 +1,10 @@
@@ -3677,7 +3724,7 @@ index 644d4d7..6e7dd83 100644
/usr/share/system-config-selinux/polgen\.py -- gen_context(system_u:object_r:bin_t,s0)
/usr/share/system-config-selinux/system-config-selinux\.py -- gen_context(system_u:object_r:bin_t,s0)
/usr/share/system-config-display/system-config-display -- gen_context(system_u:object_r:bin_t,s0)
-@@ -383,11 +458,15 @@ ifdef(`distro_suse', `
+@@ -383,11 +458,16 @@ ifdef(`distro_suse', `
#
# /var
#
@@ -3687,6 +3734,7 @@ index 644d4d7..6e7dd83 100644
/var/ftp/bin(/.*)? gen_context(system_u:object_r:bin_t,s0)
/var/lib/asterisk/agi-bin(/.*)? gen_context(system_u:object_r:bin_t,s0)
++/var/lib/dirsrv/scripts-INSTANCE -- gen_context(system_u:object_r:bin_t,s0)
+/var/lib/iscan/interpreter gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/ruby/gems(/.*)?/helper-scripts(/.*)? gen_context(system_u:object_r:bin_t,s0)
+/usr/share/gems(/.*)?/helper-scripts(/.*)? gen_context(system_u:object_r:bin_t,s0)
@@ -3694,7 +3742,7 @@ index 644d4d7..6e7dd83 100644
/usr/lib/yp/.+ -- gen_context(system_u:object_r:bin_t,s0)
/var/qmail/bin -d gen_context(system_u:object_r:bin_t,s0)
-@@ -397,3 +476,12 @@ ifdef(`distro_suse', `
+@@ -397,3 +477,12 @@ ifdef(`distro_suse', `
ifdef(`distro_suse',`
/var/lib/samba/bin/.+ gen_context(system_u:object_r:bin_t,s0)
')
@@ -5549,7 +5597,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 4edc40d..06129ea 100644
+index 4edc40d..72e1a41 100644
--- a/policy/modules/kernel/corenetwork.te.in
+++ b/policy/modules/kernel/corenetwork.te.in
@@ -5,6 +5,7 @@ policy_module(corenetwork, 1.18.4)
@@ -5623,7 +5671,7 @@ index 4edc40d..06129ea 100644
# reserved_port_t is the type of INET port numbers below 1024.
#
type reserved_port_t, port_type, reserved_port_type;
-@@ -84,10 +107,10 @@ network_port(amanda, udp,10080-10082,s0, tcp,10080-10083,s0)
+@@ -84,54 +107,68 @@ network_port(amanda, udp,10080-10082,s0, tcp,10080-10083,s0)
network_port(amavisd_recv, tcp,10024,s0)
network_port(amavisd_send, tcp,10025,s0)
network_port(amqp, udp,5671-5672,s0, tcp,5671-5672,s0)
@@ -5636,7 +5684,9 @@ index 4edc40d..06129ea 100644
network_port(asterisk, tcp,1720,s0, udp,2427,s0, udp,2727,s0, udp,4569,s0)
network_port(audit, tcp,60,s0)
network_port(auth, tcp,113,s0)
-@@ -96,19 +119,19 @@ network_port(boinc, tcp,31416,s0)
+ network_port(bgp, tcp,179,s0, udp,179,s0, tcp,2605,s0, udp,2605,s0)
++network_port(bacula, tcp,9103,s0, udp,9103,s0)
+ network_port(boinc, tcp,31416,s0)
network_port(boinc_client, tcp,1043,s0, udp,1034,s0)
network_port(biff) # no defined portcon
network_port(certmaster, tcp,51235,s0)
@@ -5652,14 +5702,21 @@ index 4edc40d..06129ea 100644
network_port(commplex_main, tcp,5000,s0, udp,5000,s0)
network_port(comsat, udp,512,s0)
network_port(condor, tcp,9618,s0, udp,9618,s0)
- network_port(couchdb, tcp,5984,s0, udp,5984,s0)
+-network_port(couchdb, tcp,5984,s0, udp,5984,s0)
-network_port(cslistener, tcp,9000,s0, udp,9000,s0)
-network_port(ctdb, tcp,4379,s0, udp,4397,s0)
++network_port(conman, tcp,7890,s0, udp,7890,s0)
++network_port(connlcli, tcp,1358,s0, udp,1358,s0)
++network_port(couchdb, tcp,5984,s0, udp,5984,s0, tcp,6984,s0, udp,6984,s0)
+network_port(ctdb, tcp,4379,s0, udp,4379,s0)
network_port(cvs, tcp,2401,s0, udp,2401,s0)
network_port(cyphesis, tcp,6767,s0, tcp,6769,s0, tcp,6780-6799,s0, udp,32771,s0)
network_port(daap, tcp,3689,s0, udp,3689,s0)
-@@ -119,19 +142,26 @@ network_port(dhcpc, udp,68,s0, tcp,68,s0, udp,546,s0, tcp, 546,s0, udp,5546,s0,
+ network_port(dbskkd, tcp,1178,s0)
+ network_port(dcc, udp,6276,s0, udp,6277,s0)
+ network_port(dccm, tcp,5679,s0, udp,5679,s0)
++network_port(dey_sapi, tcp,4330,s0)
+ network_port(dhcpc, udp,68,s0, tcp,68,s0, udp,546,s0, tcp, 546,s0, udp,5546,s0, tcp,5546,s0)
network_port(dhcpd, udp,67,s0, udp,547,s0, tcp, 547,s0, udp,548,s0, tcp, 548,s0, tcp,647,s0, udp,647,s0, tcp,847,s0, udp,847,s0, tcp,7911,s0)
network_port(dict, tcp,2628,s0)
network_port(distccd, tcp,3632,s0)
@@ -5676,9 +5733,12 @@ index 4edc40d..06129ea 100644
-network_port(ftp, tcp,21,s0, tcp,990,s0, udp,990,s0)
+network_port(fmpro_internal, tcp,5003,s0, udp,5003,s0)
+network_port(flash, tcp,843,s0, tcp,1935,s0, udp,1935,s0)
++network_port(freeipmi, tcp,9225,s0, udp,9225,s0)
+network_port(ftp, tcp,21,s0, tcp,989,s0, udp,989,s0, tcp,990,s0, udp,990,s0)
network_port(ftp_data, tcp,20,s0)
network_port(gatekeeper, udp,1718,s0, udp,1719,s0, tcp,1721,s0, tcp,7000,s0)
++network_port(gear, tcp,43273,s0, udp,43273,s0)
++network_port(gdomap, tcp,538,s0, udp,538,s0)
network_port(gds_db, tcp,3050,s0, udp,3050,s0)
network_port(giftd, tcp,1213,s0)
network_port(git, tcp,9418,s0, udp,9418,s0)
@@ -5688,7 +5748,7 @@ index 4edc40d..06129ea 100644
network_port(gopher, tcp,70,s0, udp,70,s0)
network_port(gpsd, tcp,2947,s0)
network_port(hadoop_datanode, tcp,50010,s0)
-@@ -139,45 +169,52 @@ network_port(hadoop_namenode, tcp,8020,s0)
+@@ -139,45 +176,52 @@ network_port(hadoop_namenode, tcp,8020,s0)
network_port(hddtemp, tcp,7634,s0)
network_port(howl, tcp,5335,s0, udp,5353,s0)
network_port(hplip, tcp,1782,s0, tcp,2207,s0, tcp,2208,s0, tcp, 8290,s0, tcp,50000,s0, tcp,50002,s0, tcp,8292,s0, tcp,9100,s0, tcp,9101,s0, tcp,9102,s0, tcp,9220,s0, tcp,9221,s0, tcp,9222,s0, tcp,9280,s0, tcp,9281,s0, tcp,9282,s0, tcp,9290,s0, tcp,9291,s0)
@@ -5744,7 +5804,7 @@ index 4edc40d..06129ea 100644
network_port(matahari, tcp,49000,s0, udp,49000,s0)
network_port(memcache, tcp,11211,s0, udp,11211,s0)
-network_port(milter) # no defined portcon
-+network_port(milter, tcp, 8891, s0, tcp, 8893, s0) # no defined portcon
++network_port(milter, tcp, 8890,s0, tcp, 8891,s0, tcp, 8893,s0) # no defined portcon
network_port(mmcc, tcp,5050,s0, udp,5050,s0)
+network_port(mongod, tcp,27017-27019,s0, tcp, 28017-28019,s0)
network_port(monopd, tcp,1234,s0)
@@ -5755,7 +5815,7 @@ index 4edc40d..06129ea 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)
-@@ -185,26 +222,34 @@ network_port(munin, tcp,4949,s0, udp,4949,s0)
+@@ -185,26 +229,36 @@ 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)
@@ -5774,8 +5834,10 @@ index 4edc40d..06129ea 100644
network_port(oa_system, tcp,8022,s0, udp,8022,s0)
-network_port(oracledb, tcp, 1521,s0,udp, 1521,s0, tcp,2483,s0,udp,2483,s0, tcp,2484,s0, udp,2484,s0)
network_port(ocsp, tcp,9080,s0)
++network_port(openflow, tcp,6633,s0, tcp,6653,s0)
network_port(openhpid, tcp,4743,s0, udp,4743,s0)
network_port(openvpn, tcp,1194,s0, udp,1194,s0)
++network_port(openvswitch, tcp,6634,s0)
+network_port(osapi_compute, tcp, 8774, s0)
network_port(pdps, tcp,1314,s0, udp,1314,s0)
network_port(pegasus_http, tcp,5988,s0)
@@ -5794,7 +5856,7 @@ index 4edc40d..06129ea 100644
network_port(portmap, udp,111,s0, tcp,111,s0)
network_port(postfix_policyd, tcp,10031,s0)
network_port(postgresql, tcp,5432,s0)
-@@ -214,38 +259,45 @@ network_port(prelude, tcp,4690,s0, udp,4690,s0)
+@@ -214,51 +268,59 @@ network_port(prelude, tcp,4690,s0, udp,4690,s0)
network_port(presence, tcp,5298-5299,s0, udp,5298-5299,s0)
network_port(printer, tcp,515,s0)
network_port(ptal, tcp,5703,s0)
@@ -5847,7 +5909,12 @@ index 4edc40d..06129ea 100644
network_port(ssh, tcp,22,s0)
network_port(stunnel) # no defined portcon
network_port(svn, tcp,3690,s0, udp,3690,s0)
-@@ -257,8 +309,9 @@ network_port(syslog_tls, tcp,6514,s0, udp,6514,s0)
+ network_port(svrloc, tcp,427,s0, udp,427,s0)
+ network_port(swat, tcp,901,s0)
+ network_port(sype_transport, tcp,9911,s0, udp,9911,s0)
+-network_port(syslogd, udp,514,s0)
++network_port(syslogd, udp,514,s0, udp,601,s0, tcp,601,s0)
+ network_port(syslog_tls, tcp,6514,s0, udp,6514,s0)
network_port(tcs, tcp, 30003, s0)
network_port(telnetd, tcp,23,s0)
network_port(tftp, udp,69,s0)
@@ -5858,7 +5925,7 @@ index 4edc40d..06129ea 100644
network_port(transproxy, tcp,8081,s0)
network_port(trisoap, tcp,10200,s0, udp,10200,s0)
network_port(ups, tcp,3493,s0)
-@@ -268,10 +321,10 @@ network_port(varnishd, tcp,6081-6082,s0)
+@@ -268,10 +330,10 @@ network_port(varnishd, tcp,6081-6082,s0)
network_port(virt, tcp,16509,s0, udp,16509,s0, tcp,16514,s0, udp,16514,s0)
network_port(virtual_places, tcp,1533,s0, udp,1533,s0)
network_port(virt_migration, tcp,49152-49216,s0)
@@ -5871,7 +5938,7 @@ index 4edc40d..06129ea 100644
network_port(winshadow, tcp,3161,s0, udp,3261,s0)
network_port(wsdapi, tcp,5357,s0, udp,5357,s0)
network_port(wsicopy, tcp,3378,s0, udp,3378,s0)
-@@ -285,19 +338,23 @@ network_port(zabbix_agent, tcp,10050,s0)
+@@ -285,19 +347,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)
@@ -5898,7 +5965,7 @@ index 4edc40d..06129ea 100644
########################################
#
-@@ -330,6 +387,8 @@ sid netif gen_context(system_u:object_r:netif_t,s0 - mls_systemhigh)
+@@ -330,6 +396,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)
@@ -5907,7 +5974,7 @@ index 4edc40d..06129ea 100644
',`
typealias netif_t alias { lo_netif_t netif_lo_t };
')
-@@ -342,9 +401,28 @@ typealias netif_t alias { lo_netif_t netif_lo_t };
+@@ -342,9 +410,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 *;
@@ -5963,7 +6030,7 @@ index 3f6e168..51ad69a 100644
')
diff --git a/policy/modules/kernel/devices.fc b/policy/modules/kernel/devices.fc
-index b31c054..e4d61f5 100644
+index b31c054..0ad8553 100644
--- a/policy/modules/kernel/devices.fc
+++ b/policy/modules/kernel/devices.fc
@@ -15,15 +15,18 @@
@@ -6005,17 +6072,19 @@ index b31c054..e4d61f5 100644
/dev/tlk[0-3] -c gen_context(system_u:object_r:v4l_device_t,s0)
/dev/tpm[0-9]* -c gen_context(system_u:object_r:tpm_device_t,s0)
/dev/uinput -c gen_context(system_u:object_r:event_device_t,s0)
-@@ -118,6 +123,9 @@
+@@ -118,6 +123,11 @@
ifdef(`distro_suse', `
/dev/usbscanner -c gen_context(system_u:object_r:scanner_device_t,s0)
')
+/dev/vchiq -c gen_context(system_u:object_r:v4l_device_t,s0)
+/dev/vc-mem -c gen_context(system_u:object_r:memory_device_t,mls_systemhigh)
-+/dev/vfio/vfio -c gen_context(system_u:object_r:vfio_device_t,s0)
++/dev/vfio/(vfio)?[0-9]* -c gen_context(system_u:object_r:vfio_device_t,s0)
++/dev/sclp[0-9]* -c gen_context(system_u:object_r:vfio_device_t,s0)
++/dev/vmcp[0-9]* -c gen_context(system_u:object_r:vfio_device_t,s0)
/dev/vhost-net -c gen_context(system_u:object_r:vhost_device_t,s0)
/dev/vbi.* -c gen_context(system_u:object_r:v4l_device_t,s0)
/dev/vbox.* -c gen_context(system_u:object_r:xserver_misc_device_t,s0)
-@@ -129,12 +137,14 @@ ifdef(`distro_suse', `
+@@ -129,12 +139,14 @@ ifdef(`distro_suse', `
/dev/vttuner -c gen_context(system_u:object_r:v4l_device_t,s0)
/dev/vtx.* -c gen_context(system_u:object_r:v4l_device_t,s0)
/dev/watchdog.* -c gen_context(system_u:object_r:watchdog_device_t,s0)
@@ -6030,7 +6099,16 @@ index b31c054..e4d61f5 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)
-@@ -198,12 +208,22 @@ ifdef(`distro_debian',`
+@@ -172,6 +184,8 @@ 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)
+
++/dev/uhid -c gen_context(system_u:object_r:uhid_device_t,s0)
++
+ /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 +212,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)
@@ -6042,6 +6120,11 @@ index b31c054..e4d61f5 100644
/var/named/chroot/dev/null -c gen_context(system_u:object_r:null_device_t,s0)
/var/named/chroot/dev/random -c gen_context(system_u:object_r:random_device_t,s0)
/var/named/chroot/dev/zero -c gen_context(system_u:object_r:zero_device_t,s0)
++/var/named/chroot_sdb/dev -d gen_context(system_u:object_r:device_t,s0)
++/var/named/chroot_sdb/dev/null -c gen_context(system_u:object_r:null_device_t,s0)
++/var/named/chroot_sdb/dev/random -c gen_context(system_u:object_r:random_device_t,s0)
++/var/named/chroot_sdb/dev/zero -c gen_context(system_u:object_r:zero_device_t,s0)
++/
+/var/spool/postfix/dev -d gen_context(system_u:object_r:device_t,s0)
')
+
@@ -6056,7 +6139,7 @@ index b31c054..e4d61f5 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..b708d28 100644
+index 76f285e..fb27ae5 100644
--- a/policy/modules/kernel/devices.if
+++ b/policy/modules/kernel/devices.if
@@ -143,13 +143,32 @@ interface(`dev_relabel_all_dev_nodes',`
@@ -6473,122 +6556,85 @@ index 76f285e..b708d28 100644
#######################################
##
## Set the attributes of the dlm control devices.
-@@ -2402,7 +2605,7 @@ interface(`dev_filetrans_lirc',`
-
- ########################################
- ##
--## Get the attributes of the lvm comtrol device.
-+## Get the attributes of the loop comtrol device.
- ##
- ##
- ##
-@@ -2410,17 +2613,17 @@ interface(`dev_filetrans_lirc',`
- ##
- ##
- #
--interface(`dev_getattr_lvm_control',`
-+interface(`dev_getattr_loop_control',`
- gen_require(`
-- type device_t, lvm_control_t;
-+ type device_t, loop_control_device_t;
- ')
-
-- getattr_chr_files_pattern($1, device_t, lvm_control_t)
-+ getattr_chr_files_pattern($1, device_t, loop_control_device_t)
- ')
-
- ########################################
- ##
--## Read the lvm comtrol device.
-+## Read the loop comtrol device.
- ##
- ##
- ##
-@@ -2428,17 +2631,17 @@ interface(`dev_getattr_lvm_control',`
- ##
- ##
- #
--interface(`dev_read_lvm_control',`
-+interface(`dev_read_loop_control',`
- gen_require(`
-- type device_t, lvm_control_t;
-+ type device_t, loop_control_device_t;
- ')
-
-- read_chr_files_pattern($1, device_t, lvm_control_t)
-+ read_chr_files_pattern($1, device_t, loop_control_device_t)
- ')
+@@ -1883,6 +2086,25 @@ interface(`dev_rw_dri',`
########################################
##
--## Read and write the lvm control device.
-+## Read and write the loop control device.
++## Read and write the dri devices.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dev_rw_inherited_dri',`
++ gen_require(`
++ type device_t, dri_device_t;
++ ')
++
++ allow $1 device_t:dir search_dir_perms;
++ allow $1 dri_device_t:chr_file rw_inherited_chr_file_perms;
++')
++
++########################################
++##
+ ## Dontaudit read and write on the dri devices.
##
##
- ##
-@@ -2446,17 +2649,17 @@ interface(`dev_read_lvm_control',`
- ##
- ##
- #
--interface(`dev_rw_lvm_control',`
-+interface(`dev_rw_loop_control',`
- gen_require(`
-- type device_t, lvm_control_t;
-+ type device_t, loop_control_device_t;
- ')
-
-- rw_chr_files_pattern($1, device_t, lvm_control_t)
-+ rw_chr_files_pattern($1, device_t, loop_control_device_t)
- ')
+@@ -2017,7 +2239,7 @@ interface(`dev_rw_input_dev',`
########################################
##
--## Do not audit attempts to read and write lvm control device.
-+## Do not audit attempts to read and write loop control device.
+-## Get the attributes of the framebuffer device node.
++## Read input event devices (/dev/input).
##
##
##
-@@ -2464,17 +2667,17 @@ interface(`dev_rw_lvm_control',`
+@@ -2025,17 +2247,19 @@ interface(`dev_rw_input_dev',`
##
##
#
--interface(`dev_dontaudit_rw_lvm_control',`
-+interface(`dev_dontaudit_rw_loop_control',`
+-interface(`dev_getattr_framebuffer_dev',`
++interface(`dev_rw_inherited_input_dev',`
gen_require(`
-- type lvm_control_t;
-+ type loop_control_device_t;
+- type device_t, framebuf_device_t;
++ type device_t, event_device_t;
')
-- dontaudit $1 lvm_control_t:chr_file rw_file_perms;
-+ dontaudit $1 loop_control_device_t:chr_file rw_file_perms;
+- getattr_chr_files_pattern($1, device_t, framebuf_device_t)
++ allow $1 device_t:dir search_dir_perms;
++ allow $1 event_device_t:chr_file rw_inherited_chr_file_perms;
')
++
########################################
##
--## Delete the lvm control device.
-+## Delete the loop control device.
+-## Set the attributes of the framebuffer device node.
++## Read ipmi devices.
##
##
##
-@@ -2482,35 +2685,35 @@ interface(`dev_dontaudit_rw_lvm_control',`
+@@ -2043,36 +2267,35 @@ interface(`dev_getattr_framebuffer_dev',`
##
##
#
--interface(`dev_delete_lvm_control_dev',`
-+interface(`dev_delete_loop_control_dev',`
+-interface(`dev_setattr_framebuffer_dev',`
++interface(`dev_read_ipmi_dev',`
gen_require(`
-- type device_t, lvm_control_t;
-+ type device_t, loop_control_device_t;
+- type device_t, framebuf_device_t;
++ type device_t, ipmi_device_t;
')
-- delete_chr_files_pattern($1, device_t, lvm_control_t)
-+ delete_chr_files_pattern($1, device_t, loop_control_device_t)
+- setattr_chr_files_pattern($1, device_t, framebuf_device_t)
++ read_chr_files_pattern($1, device_t, ipmi_device_t)
')
########################################
##
--## dontaudit getattr raw memory devices (e.g. /dev/mem).
-+## Get the attributes of the loop comtrol device.
+-## Dot not audit attempts to set the attributes
+-## of the framebuffer device node.
++## Read and write ipmi devices.
##
##
##
@@ -6597,46 +6643,41 @@ index 76f285e..b708d28 100644
##
##
#
--interface(`dev_dontaudit_getattr_memory_dev',`
-+interface(`dev_getattr_lvm_control',`
+-interface(`dev_dontaudit_setattr_framebuffer_dev',`
++interface(`dev_rw_ipmi_dev',`
gen_require(`
-- type memory_device_t;
-+ type device_t, lvm_control_t;
+- type framebuf_device_t;
++ type device_t, ipmi_device_t;
')
-- dontaudit $1 memory_device_t:chr_file getattr;
-+ getattr_chr_files_pattern($1, device_t, lvm_control_t)
+- dontaudit $1 framebuf_device_t:chr_file setattr;
++ rw_chr_files_pattern($1, device_t, ipmi_device_t)
')
########################################
##
--## Read raw memory devices (e.g. /dev/mem).
-+## Read the lvm comtrol device.
+-## Read the framebuffer.
++## Get the attributes of the framebuffer device node.
##
##
##
-@@ -2518,16 +2721,106 @@ interface(`dev_dontaudit_getattr_memory_dev',`
+@@ -2080,9 +2303,64 @@ interface(`dev_dontaudit_setattr_framebuffer_dev',`
##
##
#
--interface(`dev_read_raw_memory',`
-+interface(`dev_read_lvm_control',`
+-interface(`dev_read_framebuffer',`
++interface(`dev_getattr_framebuffer_dev',`
gen_require(`
-- type device_t, memory_device_t;
-- attribute memory_raw_read;
-+ type device_t, lvm_control_t;
- ')
-
-- read_chr_files_pattern($1, device_t, memory_device_t)
--
-- allow $1 self:capability sys_rawio;
-- typeattribute $1 memory_raw_read;
-+ read_chr_files_pattern($1, device_t, lvm_control_t)
+- type framebuf_device_t;
++ type device_t, framebuf_device_t;
++ ')
++
++ getattr_chr_files_pattern($1, device_t, framebuf_device_t)
+')
+
+########################################
+##
-+## Read and write the lvm control device.
++## Set the attributes of the framebuffer device node.
+##
+##
+##
@@ -6644,17 +6685,18 @@ index 76f285e..b708d28 100644
+##
+##
+#
-+interface(`dev_rw_lvm_control',`
++interface(`dev_setattr_framebuffer_dev',`
+ gen_require(`
-+ type device_t, lvm_control_t;
++ type device_t, framebuf_device_t;
+ ')
+
-+ rw_chr_files_pattern($1, device_t, lvm_control_t)
++ setattr_chr_files_pattern($1, device_t, framebuf_device_t)
+')
+
+########################################
+##
-+## Do not audit attempts to read and write lvm control device.
++## Dot not audit attempts to set the attributes
++## of the framebuffer device node.
+##
+##
+##
@@ -6662,17 +6704,54 @@ index 76f285e..b708d28 100644
+##
+##
+#
-+interface(`dev_dontaudit_rw_lvm_control',`
++interface(`dev_dontaudit_setattr_framebuffer_dev',`
++ gen_require(`
++ type framebuf_device_t;
++ ')
++
++ dontaudit $1 framebuf_device_t:chr_file setattr;
++')
++
++########################################
++##
++## Read the framebuffer.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dev_read_framebuffer',`
+ gen_require(`
-+ type lvm_control_t;
++ type framebuf_device_t;
+ ')
+
+ read_chr_files_pattern($1, device_t, framebuf_device_t)
+@@ -2402,7 +2680,97 @@ interface(`dev_filetrans_lirc',`
+
+ ########################################
+ ##
+-## Get the attributes of the lvm comtrol device.
++## Get the attributes of the loop comtrol device.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dev_getattr_loop_control',`
++ gen_require(`
++ type device_t, loop_control_device_t;
+ ')
+
-+ dontaudit $1 lvm_control_t:chr_file rw_file_perms;
++ getattr_chr_files_pattern($1, device_t, loop_control_device_t)
+')
+
+########################################
+##
-+## Delete the lvm control device.
++## Read the loop comtrol device.
+##
+##
+##
@@ -6680,17 +6759,35 @@ index 76f285e..b708d28 100644
+##
+##
+#
-+interface(`dev_delete_lvm_control_dev',`
++interface(`dev_read_loop_control',`
+ gen_require(`
-+ type device_t, lvm_control_t;
++ type device_t, loop_control_device_t;
+ ')
+
-+ delete_chr_files_pattern($1, device_t, lvm_control_t)
++ read_chr_files_pattern($1, device_t, loop_control_device_t)
+')
+
+########################################
+##
-+## dontaudit getattr raw memory devices (e.g. /dev/mem).
++## Read and write the loop control device.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dev_rw_loop_control',`
++ gen_require(`
++ type device_t, loop_control_device_t;
++ ')
++
++ rw_chr_files_pattern($1, device_t, loop_control_device_t)
++')
++
++########################################
++##
++## Do not audit attempts to read and write loop control device.
+##
+##
+##
@@ -6698,17 +6795,17 @@ index 76f285e..b708d28 100644
+##
+##
+#
-+interface(`dev_dontaudit_getattr_memory_dev',`
++interface(`dev_dontaudit_rw_loop_control',`
+ gen_require(`
-+ type memory_device_t;
++ type loop_control_device_t;
+ ')
+
-+ dontaudit $1 memory_device_t:chr_file getattr;
++ dontaudit $1 loop_control_device_t:chr_file rw_file_perms;
+')
+
+########################################
+##
-+## Read raw memory devices (e.g. /dev/mem).
++## Delete the loop control device.
+##
+##
+##
@@ -6716,20 +6813,21 @@ index 76f285e..b708d28 100644
+##
+##
+#
-+interface(`dev_read_raw_memory',`
++interface(`dev_delete_loop_control_dev',`
+ gen_require(`
-+ type device_t, memory_device_t;
-+ attribute memory_raw_read;
++ type device_t, loop_control_device_t;
+ ')
+
-+ read_chr_files_pattern($1, device_t, memory_device_t)
++ delete_chr_files_pattern($1, device_t, loop_control_device_t)
++')
+
-+ allow $1 self:capability sys_rawio;
-+ typeattribute $1 memory_raw_read;
- ')
-
- ########################################
-@@ -2725,7 +3018,7 @@ interface(`dev_write_misc',`
++########################################
++##
++## Get the attributes of the loop comtrol device.
+ ##
+ ##
+ ##
+@@ -2725,7 +3093,7 @@ interface(`dev_write_misc',`
##
##
##
@@ -6738,7 +6836,7 @@ index 76f285e..b708d28 100644
##
##
#
-@@ -2903,20 +3196,20 @@ interface(`dev_getattr_mtrr_dev',`
+@@ -2903,20 +3271,20 @@ interface(`dev_getattr_mtrr_dev',`
########################################
##
@@ -6763,7 +6861,7 @@ index 76f285e..b708d28 100644
##
##
##
-@@ -2925,43 +3218,34 @@ interface(`dev_getattr_mtrr_dev',`
+@@ -2925,43 +3293,34 @@ interface(`dev_getattr_mtrr_dev',`
##
##
#
@@ -6819,7 +6917,7 @@ index 76f285e..b708d28 100644
## range registers (MTRR).
##
##
-@@ -2970,13 +3254,13 @@ interface(`dev_write_mtrr',`
+@@ -2970,13 +3329,13 @@ interface(`dev_write_mtrr',`
##
##
#
@@ -6836,7 +6934,7 @@ index 76f285e..b708d28 100644
')
########################################
-@@ -3144,6 +3428,42 @@ interface(`dev_create_null_dev',`
+@@ -3144,6 +3503,42 @@ interface(`dev_create_null_dev',`
########################################
##
@@ -6879,7 +6977,7 @@ index 76f285e..b708d28 100644
## Do not audit attempts to get the attributes
## of the BIOS non-volatile RAM device.
##
-@@ -3163,6 +3483,24 @@ interface(`dev_dontaudit_getattr_nvram_dev',`
+@@ -3163,6 +3558,24 @@ interface(`dev_dontaudit_getattr_nvram_dev',`
########################################
##
@@ -6904,7 +7002,7 @@ index 76f285e..b708d28 100644
## Read and write BIOS non-volatile RAM.
##
##
-@@ -3254,7 +3592,25 @@ interface(`dev_rw_printer',`
+@@ -3254,7 +3667,25 @@ interface(`dev_rw_printer',`
########################################
##
@@ -6931,7 +7029,7 @@ index 76f285e..b708d28 100644
##
##
##
-@@ -3262,12 +3618,13 @@ interface(`dev_rw_printer',`
+@@ -3262,12 +3693,13 @@ interface(`dev_rw_printer',`
##
##
#
@@ -6948,7 +7046,7 @@ index 76f285e..b708d28 100644
')
########################################
-@@ -3399,7 +3756,7 @@ interface(`dev_dontaudit_read_rand',`
+@@ -3399,7 +3831,7 @@ interface(`dev_dontaudit_read_rand',`
########################################
##
@@ -6957,7 +7055,7 @@ index 76f285e..b708d28 100644
## number generator devices (e.g., /dev/random)
##
##
-@@ -3413,7 +3770,7 @@ interface(`dev_dontaudit_append_rand',`
+@@ -3413,7 +3845,7 @@ interface(`dev_dontaudit_append_rand',`
type random_device_t;
')
@@ -6966,7 +7064,7 @@ index 76f285e..b708d28 100644
')
########################################
-@@ -3855,7 +4212,7 @@ interface(`dev_getattr_sysfs_dirs',`
+@@ -3855,7 +4287,7 @@ interface(`dev_getattr_sysfs_dirs',`
########################################
##
@@ -6975,7 +7073,7 @@ index 76f285e..b708d28 100644
##
##
##
-@@ -3863,53 +4220,53 @@ interface(`dev_getattr_sysfs_dirs',`
+@@ -3863,53 +4295,53 @@ interface(`dev_getattr_sysfs_dirs',`
##
##
#
@@ -7040,7 +7138,7 @@ index 76f285e..b708d28 100644
##
##
##
-@@ -3917,37 +4274,35 @@ interface(`dev_list_sysfs',`
+@@ -3917,37 +4349,35 @@ interface(`dev_list_sysfs',`
##
##
#
@@ -7085,7 +7183,7 @@ index 76f285e..b708d28 100644
##
##
##
-@@ -3955,47 +4310,35 @@ interface(`dev_dontaudit_write_sysfs_dirs',`
+@@ -3955,26 +4385,145 @@ interface(`dev_dontaudit_write_sysfs_dirs',`
##
##
#
@@ -7103,91 +7201,63 @@ index 76f285e..b708d28 100644
##
-## Read hardware state information.
+## Do not audit attempts to search sysfs.
- ##
--##
--##
--## Allow the specified domain to read the contents of
--## the sysfs filesystem. This filesystem contains
--## information, parameters, and other settings on the
--## hardware installed on the system.
--##
--##
- ##
- ##
--## Domain allowed access.
++##
++##
++##
+## Domain to not audit.
- ##
- ##
--##
- #
--interface(`dev_read_sysfs',`
++##
++##
++#
+interface(`dev_dontaudit_search_sysfs',`
- gen_require(`
- type sysfs_t;
- ')
-
-- read_files_pattern($1, sysfs_t, sysfs_t)
-- read_lnk_files_pattern($1, sysfs_t, sysfs_t)
--
-- list_dirs_pattern($1, sysfs_t, sysfs_t)
++ gen_require(`
++ type sysfs_t;
++ ')
++
+ dontaudit $1 sysfs_t:dir search_dir_perms;
- ')
-
- ########################################
- ##
--## Allow caller to modify hardware state information.
++')
++
++########################################
++##
+## List the contents of the sysfs directories.
- ##
- ##
- ##
-@@ -4003,20 +4346,18 @@ interface(`dev_read_sysfs',`
- ##
- ##
- #
--interface(`dev_rw_sysfs',`
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
+interface(`dev_list_sysfs',`
- gen_require(`
- type sysfs_t;
- ')
-
-- rw_files_pattern($1, sysfs_t, sysfs_t)
- read_lnk_files_pattern($1, sysfs_t, sysfs_t)
--
- list_dirs_pattern($1, sysfs_t, sysfs_t)
- ')
-
- ########################################
- ##
--## Read and write the TPM device.
++ gen_require(`
++ type sysfs_t;
++ ')
++
++ read_lnk_files_pattern($1, sysfs_t, sysfs_t)
++ list_dirs_pattern($1, sysfs_t, sysfs_t)
++')
++
++########################################
++##
+## Write in a sysfs directories.
- ##
- ##
- ##
-@@ -4024,22 +4365,211 @@ interface(`dev_rw_sysfs',`
- ##
- ##
- #
--interface(`dev_rw_tpm',`
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
+# cjp: added for cpuspeed
+interface(`dev_write_sysfs_dirs',`
- gen_require(`
-- type device_t, tpm_device_t;
++ gen_require(`
+ type sysfs_t;
- ')
-
-- rw_chr_files_pattern($1, device_t, tpm_device_t)
++ ')
++
+ allow $1 sysfs_t:dir write;
- ')
-
- ########################################
- ##
--## Read from pseudo random number generator devices (e.g., /dev/urandom).
++')
++
++########################################
++##
+## Do not audit attempts to write in a sysfs directory.
- ##
--##
--##
--## Allow the specified domain to read from pseudo random number
--## generator devices (e.g., /dev/urandom). Typically this is
++##
+##
+##
+## Domain to not audit.
@@ -7229,7 +7299,15 @@ index 76f285e..b708d28 100644
+########################################
+##
+## Relabel cpu online hardware state information.
-+##
+ ##
+-##
+-##
+-## Allow the specified domain to read the contents of
+-## the sysfs filesystem. This filesystem contains
+-## information, parameters, and other settings on the
+-## hardware installed on the system.
+-##
+-##
+##
+##
+## Domain allowed access.
@@ -7259,47 +7337,13 @@ index 76f285e..b708d28 100644
+## hardware installed on the system.
+##
+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+##
-+#
-+interface(`dev_read_sysfs',`
-+ gen_require(`
-+ type sysfs_t;
-+ ')
-+
-+ read_files_pattern($1, sysfs_t, sysfs_t)
-+ read_lnk_files_pattern($1, sysfs_t, sysfs_t)
-+
-+ list_dirs_pattern($1, sysfs_t, sysfs_t)
-+')
-+
-+########################################
-+##
-+## Allow caller to modify hardware state information.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
-+interface(`dev_rw_sysfs',`
-+ gen_require(`
-+ type sysfs_t;
-+ ')
-+
-+ rw_files_pattern($1, sysfs_t, sysfs_t)
-+ read_lnk_files_pattern($1, sysfs_t, sysfs_t)
-+
-+ list_dirs_pattern($1, sysfs_t, sysfs_t)
-+')
-+
-+########################################
-+##
+ ##
+ ##
+ ## Domain allowed access.
+@@ -4016,6 +4565,62 @@ interface(`dev_rw_sysfs',`
+
+ ########################################
+ ##
+## Relabel hardware state directories.
+##
+##
@@ -7356,34 +7400,10 @@ index 76f285e..b708d28 100644
+
+########################################
+##
-+## Read and write the TPM device.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
-+interface(`dev_rw_tpm',`
-+ gen_require(`
-+ type device_t, tpm_device_t;
-+ ')
-+
-+ rw_chr_files_pattern($1, device_t, tpm_device_t)
-+')
-+
-+########################################
-+##
-+## Read from pseudo random number generator devices (e.g., /dev/urandom).
-+##
-+##
-+##
-+## Allow the specified domain to read from pseudo random number
-+## generator devices (e.g., /dev/urandom). Typically this is
- ## used in situations when a cryptographically secure random
- ## number is not necessarily needed. One example is the Stack
- ## Smashing Protector (SSP, formerly known as ProPolice) support
-@@ -4113,6 +4643,25 @@ interface(`dev_write_urand',`
+ ## Read and write the TPM device.
+ ##
+ ##
+@@ -4113,6 +4718,25 @@ interface(`dev_write_urand',`
########################################
##
@@ -7409,7 +7429,7 @@ index 76f285e..b708d28 100644
## Getattr generic the USB devices.
##
##
-@@ -4409,9 +4958,9 @@ interface(`dev_rw_usbfs',`
+@@ -4409,9 +5033,9 @@ interface(`dev_rw_usbfs',`
read_lnk_files_pattern($1, usbfs_t, usbfs_t)
')
@@ -7421,7 +7441,7 @@ index 76f285e..b708d28 100644
##
##
##
-@@ -4419,17 +4968,17 @@ interface(`dev_rw_usbfs',`
+@@ -4419,17 +5043,17 @@ interface(`dev_rw_usbfs',`
##
##
#
@@ -7444,7 +7464,7 @@ index 76f285e..b708d28 100644
##
##
##
-@@ -4437,12 +4986,12 @@ interface(`dev_getattr_video_dev',`
+@@ -4437,12 +5061,12 @@ interface(`dev_getattr_video_dev',`
##
##
#
@@ -7460,7 +7480,7 @@ index 76f285e..b708d28 100644
')
########################################
-@@ -4539,6 +5088,134 @@ interface(`dev_write_video_dev',`
+@@ -4539,6 +5163,134 @@ interface(`dev_write_video_dev',`
########################################
##
@@ -7595,7 +7615,7 @@ index 76f285e..b708d28 100644
## Allow read/write the vhost net device
##
##
-@@ -4557,6 +5234,24 @@ interface(`dev_rw_vhost',`
+@@ -4557,6 +5309,24 @@ interface(`dev_rw_vhost',`
########################################
##
@@ -7620,7 +7640,7 @@ index 76f285e..b708d28 100644
## Read and write VMWare devices.
##
##
-@@ -4762,6 +5457,26 @@ interface(`dev_rw_xserver_misc',`
+@@ -4762,6 +5532,26 @@ interface(`dev_rw_xserver_misc',`
########################################
##
@@ -7647,7 +7667,7 @@ index 76f285e..b708d28 100644
## Read and write to the zero device (/dev/zero).
##
##
-@@ -4851,3 +5566,943 @@ interface(`dev_unconfined',`
+@@ -4851,3 +5641,946 @@ interface(`dev_unconfined',`
typeattribute $1 devices_unconfined_type;
')
@@ -7798,6 +7818,7 @@ index 76f285e..b708d28 100644
+gen_require(`
+ type device_t;
+ type usb_device_t;
++ type uhid_device_t;
+ type sound_device_t;
+ type apm_bios_t;
+ type mouse_device_t;
@@ -7988,6 +8009,7 @@ index 76f285e..b708d28 100644
+ filetrans_pattern($1, device_t, event_device_t, chr_file, "event18")
+ filetrans_pattern($1, device_t, event_device_t, chr_file, "event19")
+ filetrans_pattern($1, device_t, event_device_t, chr_file, "event20")
++ filetrans_pattern($1, device_t, event_device_t, chr_file, "event21")
+ filetrans_pattern($1, device_t, xen_device_t, chr_file, "evtchn")
+ filetrans_pattern($1, device_t, framebuf_device_t, chr_file, "fb0")
+ filetrans_pattern($1, device_t, framebuf_device_t, chr_file, "fb1")
@@ -8524,6 +8546,7 @@ index 76f285e..b708d28 100644
+ filetrans_pattern($1, device_t, usb_device_t, chr_file, "uba")
+ 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")
+ dev_filetrans_xserver_named_dev($1)
+')
+
@@ -8592,7 +8615,7 @@ index 76f285e..b708d28 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 6529bd9..831344c 100644
+index 6529bd9..b31a5e8 100644
--- a/policy/modules/kernel/devices.te
+++ b/policy/modules/kernel/devices.te
@@ -15,11 +15,12 @@ attribute devices_unconfined_type;
@@ -8658,17 +8681,23 @@ index 6529bd9..831344c 100644
#
# Type for /dev/tpm
#
-@@ -266,6 +275,9 @@ dev_node(usbmon_device_t)
+@@ -266,6 +275,15 @@ dev_node(usbmon_device_t)
type userio_device_t;
dev_node(userio_device_t)
++#
++# uhid_device_t is the type for /dev/uhid
++#
++type uhid_device_t;
++dev_node(uhid_device_t)
++
+type vfio_device_t;
+dev_node(vfio_device_t)
+
type v4l_device_t;
dev_node(v4l_device_t)
-@@ -274,6 +286,7 @@ dev_node(v4l_device_t)
+@@ -274,6 +292,7 @@ dev_node(v4l_device_t)
#
type vhost_device_t;
dev_node(vhost_device_t)
@@ -8676,7 +8705,7 @@ index 6529bd9..831344c 100644
# Type for vmware devices.
type vmware_device_t;
-@@ -319,5 +332,5 @@ files_associate_tmp(device_node)
+@@ -319,5 +338,5 @@ files_associate_tmp(device_node)
#
allow devices_unconfined_type self:capability sys_rawio;
@@ -8892,7 +8921,7 @@ index 6a1e4d1..84e8030 100644
+ dontaudit $1 domain:dir_file_class_set audit_access;
')
diff --git a/policy/modules/kernel/domain.te b/policy/modules/kernel/domain.te
-index cf04cb5..369ddc2 100644
+index cf04cb5..64d9761 100644
--- a/policy/modules/kernel/domain.te
+++ b/policy/modules/kernel/domain.te
@@ -4,6 +4,29 @@ policy_module(domain, 1.11.0)
@@ -8933,13 +8962,14 @@ index cf04cb5..369ddc2 100644
# Transitions only allowed from domains to other domains
neverallow domain ~domain:process { transition dyntransition };
-@@ -86,23 +110,45 @@ neverallow ~{ domain unlabeled_t } *:process *;
+@@ -86,23 +110,47 @@ neverallow ~{ domain unlabeled_t } *:process *;
allow domain self:dir list_dir_perms;
allow domain self:lnk_file { read_lnk_file_perms lock ioctl };
allow domain self:file rw_file_perms;
+allow domain self:fifo_file rw_fifo_file_perms;
+allow domain self:sem create_sem_perms;
+allow domain self:shm create_shm_perms;
++allow domain self:key manage_key_perms;
+
kernel_read_proc_symlinks(domain)
+kernel_read_crypto_sysctls(domain)
@@ -8970,6 +9000,7 @@ index cf04cb5..369ddc2 100644
+files_read_inherited_tmp_files(domain)
+files_append_inherited_tmp_files(domain)
+files_read_all_base_ro_files(domain)
++files_dontaduit_getattr_kernel_symbol_table(domain)
+
+# All executables should be able to search the directory they are in
+corecmd_search_bin(domain)
@@ -8980,7 +9011,7 @@ index cf04cb5..369ddc2 100644
ifdef(`hide_broken_symptoms',`
# This check is in the general socket
-@@ -121,8 +167,18 @@ tunable_policy(`global_ssp',`
+@@ -121,8 +169,18 @@ tunable_policy(`global_ssp',`
')
optional_policy(`
@@ -8999,7 +9030,7 @@ index cf04cb5..369ddc2 100644
')
optional_policy(`
-@@ -133,6 +189,9 @@ optional_policy(`
+@@ -133,6 +191,9 @@ optional_policy(`
optional_policy(`
xserver_dontaudit_use_xdm_fds(domain)
xserver_dontaudit_rw_xdm_pipes(domain)
@@ -9009,7 +9040,7 @@ index cf04cb5..369ddc2 100644
')
########################################
-@@ -147,12 +206,18 @@ optional_policy(`
+@@ -147,12 +208,18 @@ optional_policy(`
# Use/sendto/connectto sockets created by any domain.
allow unconfined_domain_type domain:{ socket_class_set socket key_socket } *;
@@ -9029,7 +9060,7 @@ index cf04cb5..369ddc2 100644
# Create/access any System V IPC objects.
allow unconfined_domain_type domain:{ sem msgq shm } *;
-@@ -166,5 +231,306 @@ allow unconfined_domain_type domain:lnk_file { read_lnk_file_perms ioctl lock };
+@@ -166,5 +233,338 @@ allow unconfined_domain_type domain:lnk_file { read_lnk_file_perms ioctl lock };
# act on all domains keys
allow unconfined_domain_type domain:key *;
@@ -9046,6 +9077,10 @@ index cf04cb5..369ddc2 100644
+dev_config_null_dev_service(unconfined_domain_type)
+
+optional_policy(`
++ dbus_filetrans_named_content_system(named_filetrans_domain)
++')
++
++optional_policy(`
+ kdump_filetrans_named_content(unconfined_domain_type)
+')
+
@@ -9061,6 +9096,10 @@ index cf04cb5..369ddc2 100644
+ seutil_filetrans_named_content(named_filetrans_domain)
+')
+
++optional_policy(`
++ wine_filetrans_named_content(named_filetrans_domain)
++')
++
+storage_filetrans_all_named_dev(named_filetrans_domain)
+
+term_filetrans_all_named_dev(named_filetrans_domain)
@@ -9076,6 +9115,14 @@ index cf04cb5..369ddc2 100644
+ init_filetrans_named_content(named_filetrans_domain)
+')
+
++# Allow manage transient unit files
++optional_policy(`
++ init_start_transient_unit(unconfined_domain_type)
++ init_stop_transient_unit(unconfined_domain_type)
++ init_status_transient_unit(unconfined_domain_type)
++ init_reload_transient_unit(unconfined_domain_type)
++')
++
+optional_policy(`
+ auth_filetrans_named_content(named_filetrans_domain)
+ auth_filetrans_admin_home_content(named_filetrans_domain)
@@ -9126,6 +9173,10 @@ index cf04cb5..369ddc2 100644
+')
+
+optional_policy(`
++ docker_filetrans_named_content(named_filetrans_domain)
++')
++
++optional_policy(`
+ dnsmasq_filetrans_named_content(named_filetrans_domain)
+')
+
@@ -9225,6 +9276,10 @@ index cf04cb5..369ddc2 100644
+')
+
+optional_policy(`
++ userdom_filetrans_named_user_tmp_files(named_filetrans_domain)
++')
++
++optional_policy(`
+ virt_filetrans_named_content(named_filetrans_domain)
+')
+
@@ -9272,6 +9327,10 @@ index cf04cb5..369ddc2 100644
+ cron_rw_system_job_pipes(domain)
+')
+
++optional_policy(`
++ devicekit_dbus_chat_power(domain)
++')
++
+ifdef(`hide_broken_symptoms',`
+ dontaudit domain self:udp_socket listen;
+ allow domain domain:key { link search };
@@ -9316,6 +9375,10 @@ index cf04cb5..369ddc2 100644
+dontaudit domain domain:process { noatsecure siginh rlimitinh } ;
+
+optional_policy(`
++ rkhunter_append_lib_files(domain)
++')
++
++optional_policy(`
+ rpm_rw_script_inherited_pipes(domain)
+ rpm_use_fds(domain)
+ rpm_read_pipes(domain)
@@ -9337,7 +9400,7 @@ index cf04cb5..369ddc2 100644
+ ')
+')
diff --git a/policy/modules/kernel/files.fc b/policy/modules/kernel/files.fc
-index c2c6e05..058bb58 100644
+index c2c6e05..7996499 100644
--- a/policy/modules/kernel/files.fc
+++ b/policy/modules/kernel/files.fc
@@ -18,6 +18,7 @@ ifdef(`distro_redhat',`
@@ -9392,7 +9455,7 @@ index c2c6e05..058bb58 100644
+/etc/sysconfig/ip6?tables.* -- gen_context(system_u:object_r:system_conf_t,s0)
+/etc/sysconfig/ipvsadm.* -- gen_context(system_u:object_r:system_conf_t,s0)
+/etc/sysconfig/system-config-firewall.* -- gen_context(system_u:object_r:system_conf_t,s0)
-+/etc/yum\.repos\.d/redhat\.repo -- gen_context(system_u:object_r:system_conf_t,s0)
++/etc/yum\.repos\.d(/.*)? gen_context(system_u:object_r:system_conf_t,s0)
/etc/cups/client\.conf -- gen_context(system_u:object_r:etc_t,s0)
@@ -9535,7 +9598,7 @@ index c2c6e05..058bb58 100644
/var/.* gen_context(system_u:object_r:var_t,s0)
/var/\.journal <>
-@@ -237,11 +244,24 @@ ifndef(`distro_redhat',`
+@@ -237,11 +244,25 @@ ifndef(`distro_redhat',`
/var/ftp/etc(/.*)? gen_context(system_u:object_r:etc_t,s0)
@@ -9553,7 +9616,8 @@ index c2c6e05..058bb58 100644
+/var/lib/openshift/.stickshift-proxy.d(/.*)? gen_context(system_u:object_r:etc_t,s0)
+/var/lib/openshift/.limits.d(/.*)? gen_context(system_u:object_r:etc_t,s0)
+
-+/var/lib/servicelog/servicelog.db -- gen_context(system_u:object_r:system_db_t,s0)
++/var/lib/servicelog/servicelog\.db -- gen_context(system_u:object_r:system_db_t,s0)
++/var/lib/servicelog/servicelog\.db-journal -- gen_context(system_u:object_r:system_db_t,s0)
+
+/var/lock -d gen_context(system_u:object_r:var_lock_t,s0)
+/var/lock -l gen_context(system_u:object_r:var_lock_t,s0)
@@ -9561,7 +9625,7 @@ index c2c6e05..058bb58 100644
/var/log/lost\+found -d gen_context(system_u:object_r:lost_found_t,mls_systemhigh)
/var/log/lost\+found/.* <>
-@@ -256,12 +276,14 @@ ifndef(`distro_redhat',`
+@@ -256,12 +277,14 @@ ifndef(`distro_redhat',`
/var/run -l gen_context(system_u:object_r:var_run_t,s0)
/var/run/.* gen_context(system_u:object_r:var_run_t,s0)
/var/run/.*\.*pid <>
@@ -9576,14 +9640,14 @@ index c2c6e05..058bb58 100644
/var/tmp/.* <>
/var/tmp/lost\+found -d gen_context(system_u:object_r:lost_found_t,mls_systemhigh)
/var/tmp/lost\+found/.* <>
-@@ -270,3 +292,5 @@ ifndef(`distro_redhat',`
+@@ -270,3 +293,5 @@ ifndef(`distro_redhat',`
ifdef(`distro_debian',`
/var/run/motd -- gen_context(system_u:object_r:initrc_var_run_t,s0)
')
+/nsr(/.*)? gen_context(system_u:object_r:var_t,s0)
+/nsr/logs(/.*)? gen_context(system_u:object_r:var_log_t,s0)
diff --git a/policy/modules/kernel/files.if b/policy/modules/kernel/files.if
-index 64ff4d7..2b01383 100644
+index 64ff4d7..2dd815a 100644
--- a/policy/modules/kernel/files.if
+++ b/policy/modules/kernel/files.if
@@ -19,6 +19,136 @@
@@ -10214,7 +10278,32 @@ index 64ff4d7..2b01383 100644
## Set the attributes of all mount points.
##
##
-@@ -1673,6 +2043,24 @@ interface(`files_dontaudit_list_all_mountpoints',`
+@@ -1601,6 +1971,24 @@ interface(`files_setattr_all_mountpoints',`
+
+ ########################################
+ ##
++## Set the attributes of all mount points.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`files_relabelto_all_mountpoints',`
++ gen_require(`
++ attribute mountpoint;
++ ')
++
++ allow $1 mountpoint:dir relabelto;
++')
++
++########################################
++##
+ ## Do not audit attempts to set the attributes on all mount points.
+ ##
+ ##
+@@ -1673,6 +2061,24 @@ interface(`files_dontaudit_list_all_mountpoints',`
########################################
##
@@ -10239,7 +10328,7 @@ index 64ff4d7..2b01383 100644
## Do not audit attempts to write to mount points.
##
##
-@@ -1691,6 +2079,42 @@ interface(`files_dontaudit_write_all_mountpoints',`
+@@ -1691,6 +2097,42 @@ interface(`files_dontaudit_write_all_mountpoints',`
########################################
##
@@ -10282,7 +10371,58 @@ index 64ff4d7..2b01383 100644
## List the contents of the root directory.
##
##
-@@ -1874,25 +2298,25 @@ interface(`files_delete_root_dir_entry',`
+@@ -1707,6 +2149,23 @@ interface(`files_list_root',`
+ 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;
++')
+
+ ########################################
+ ##
+@@ -1747,6 +2206,26 @@ interface(`files_dontaudit_rw_root_dir',`
+
+ ########################################
+ ##
++## Do not audit attempts to check the
++## access on root directory.
++##
++##
++##
++## Domain to not audit.
++##
++##
++#
++interface(`files_dontaudit_access_check_root',`
++ gen_require(`
++ type root_t;
++ ')
++
++ dontaudit $1 root_t:dir_file_class_set audit_access;
++')
++
++
++########################################
++##
+ ## Create an object in the root directory, with a private
+ ## type using a type transition.
+ ##
+@@ -1874,25 +2353,25 @@ interface(`files_delete_root_dir_entry',`
########################################
##
@@ -10314,7 +10454,7 @@ index 64ff4d7..2b01383 100644
##
##
##
-@@ -1905,7 +2329,7 @@ interface(`files_relabel_rootfs',`
+@@ -1905,7 +2384,7 @@ interface(`files_relabel_rootfs',`
type root_t;
')
@@ -10323,7 +10463,7 @@ index 64ff4d7..2b01383 100644
')
########################################
-@@ -1928,6 +2352,24 @@ interface(`files_unmount_rootfs',`
+@@ -1928,6 +2407,24 @@ interface(`files_unmount_rootfs',`
########################################
##
@@ -10348,7 +10488,7 @@ index 64ff4d7..2b01383 100644
## Get attributes of the /boot directory.
##
##
-@@ -2163,6 +2605,24 @@ interface(`files_relabelfrom_boot_files',`
+@@ -2163,6 +2660,24 @@ interface(`files_relabelfrom_boot_files',`
relabelfrom_files_pattern($1, boot_t, boot_t)
')
@@ -10373,7 +10513,7 @@ index 64ff4d7..2b01383 100644
######################################
##
## Read symbolic links in the /boot directory.
-@@ -2627,6 +3087,24 @@ interface(`files_rw_etc_dirs',`
+@@ -2627,6 +3142,24 @@ interface(`files_rw_etc_dirs',`
allow $1 etc_t:dir rw_dir_perms;
')
@@ -10398,7 +10538,7 @@ index 64ff4d7..2b01383 100644
##########################################
##
## Manage generic directories in /etc
-@@ -2698,6 +3176,7 @@ interface(`files_read_etc_files',`
+@@ -2698,6 +3231,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)
@@ -10406,7 +10546,7 @@ index 64ff4d7..2b01383 100644
')
########################################
-@@ -2706,7 +3185,7 @@ interface(`files_read_etc_files',`
+@@ -2706,7 +3240,7 @@ interface(`files_read_etc_files',`
##
##
##
@@ -10415,7 +10555,7 @@ index 64ff4d7..2b01383 100644
##
##
#
-@@ -2762,6 +3241,25 @@ interface(`files_manage_etc_files',`
+@@ -2762,6 +3296,25 @@ interface(`files_manage_etc_files',`
########################################
##
@@ -10441,7 +10581,7 @@ index 64ff4d7..2b01383 100644
## Delete system configuration files in /etc.
##
##
-@@ -2780,6 +3278,24 @@ interface(`files_delete_etc_files',`
+@@ -2780,6 +3333,24 @@ interface(`files_delete_etc_files',`
########################################
##
@@ -10466,7 +10606,7 @@ index 64ff4d7..2b01383 100644
## Execute generic files in /etc.
##
##
-@@ -2945,24 +3461,6 @@ interface(`files_delete_boot_flag',`
+@@ -2945,26 +3516,8 @@ interface(`files_delete_boot_flag',`
########################################
##
@@ -10488,10 +10628,14 @@ index 64ff4d7..2b01383 100644
-
-########################################
-##
- ## Read files in /etc that are dynamically
- ## created on boot, such as mtab.
+-## Read files in /etc that are dynamically
+-## created on boot, such as mtab.
++## Read files in /etc that are dynamically
++## created on boot, such as mtab.
##
-@@ -3003,9 +3501,7 @@ interface(`files_read_etc_runtime_files',`
+ ##
+ ##
+@@ -3003,9 +3556,7 @@ interface(`files_read_etc_runtime_files',`
########################################
##
@@ -10502,7 +10646,7 @@ index 64ff4d7..2b01383 100644
##
##
##
-@@ -3013,18 +3509,17 @@ interface(`files_read_etc_runtime_files',`
+@@ -3013,18 +3564,17 @@ interface(`files_read_etc_runtime_files',`
##
##
#
@@ -10524,7 +10668,7 @@ index 64ff4d7..2b01383 100644
##
##
##
-@@ -3042,6 +3537,26 @@ interface(`files_dontaudit_write_etc_runtime_files',`
+@@ -3042,6 +3592,26 @@ interface(`files_dontaudit_write_etc_runtime_files',`
########################################
##
@@ -10551,7 +10695,7 @@ index 64ff4d7..2b01383 100644
## Read and write files in /etc that are dynamically
## created on boot, such as mtab.
##
-@@ -3059,6 +3574,7 @@ interface(`files_rw_etc_runtime_files',`
+@@ -3059,6 +3629,7 @@ interface(`files_rw_etc_runtime_files',`
allow $1 etc_t:dir list_dir_perms;
rw_files_pattern($1, etc_t, etc_runtime_t)
@@ -10559,7 +10703,7 @@ index 64ff4d7..2b01383 100644
')
########################################
-@@ -3080,6 +3596,7 @@ interface(`files_manage_etc_runtime_files',`
+@@ -3080,6 +3651,7 @@ interface(`files_manage_etc_runtime_files',`
')
manage_files_pattern($1, { etc_t etc_runtime_t }, etc_runtime_t)
@@ -10567,58 +10711,30 @@ index 64ff4d7..2b01383 100644
')
########################################
-@@ -3132,45 +3649,64 @@ interface(`files_getattr_isid_type_dirs',`
+@@ -3132,6 +3704,44 @@ interface(`files_getattr_isid_type_dirs',`
########################################
##
--## Do not audit attempts to search directories on new filesystems
-+## Setattr of directories on new filesystems
- ## that have not yet been labeled.
- ##
- ##
- ##
--## Domain to not audit.
++## Getattr all file opbjects on new filesystems
++## that have not yet been labeled.
++##
++##
++##
+## Domain allowed access.
- ##
- ##
- #
--interface(`files_dontaudit_search_isid_type_dirs',`
-+interface(`files_setattr_isid_type_dirs',`
- gen_require(`
- type file_t;
- ')
-
-- dontaudit $1 file_t:dir search_dir_perms;
-+ allow $1 file_t:dir setattr;
- ')
-
- ########################################
- ##
--## List the contents of directories on new filesystems
-+## Do not audit attempts to search directories on new filesystems
- ## that have not yet been labeled.
- ##
- ##
- ##
--## Domain allowed access.
-+## Domain to not audit.
- ##
- ##
- #
--interface(`files_list_isid_type_dirs',`
-+interface(`files_dontaudit_search_isid_type_dirs',`
- gen_require(`
- type file_t;
- ')
-
-- allow $1 file_t:dir list_dir_perms;
-+ dontaudit $1 file_t:dir search_dir_perms;
- ')
-
- ########################################
- ##
--## Read and write directories on new filesystems
-+## List the contents of directories on new filesystems
++##
++##
++#
++interface(`files_getattr_isid_type',`
++ gen_require(`
++ type unlabeled_t;
++ ')
++
++ allow $1 unlabeled_t:dir_file_class_set getattr;
++')
++
++########################################
++##
++## Setattr of directories on new filesystems
+## that have not yet been labeled.
+##
+##
@@ -10627,21 +10743,20 @@ index 64ff4d7..2b01383 100644
+##
+##
+#
-+interface(`files_list_isid_type_dirs',`
++interface(`files_setattr_isid_type_dirs',`
+ gen_require(`
+ type file_t;
+ ')
+
-+ allow $1 file_t:dir list_dir_perms;
++ allow $1 file_t:dir setattr;
+')
+
+########################################
+##
-+## Read and write directories on new filesystems
+ ## Do not audit attempts to search directories on new filesystems
## that have not yet been labeled.
##
- ##
-@@ -3205,6 +3741,62 @@ interface(`files_delete_isid_type_dirs',`
+@@ -3205,6 +3815,62 @@ interface(`files_delete_isid_type_dirs',`
delete_dirs_pattern($1, file_t, file_t)
')
@@ -10704,7 +10819,33 @@ index 64ff4d7..2b01383 100644
########################################
##
-@@ -3455,6 +4047,25 @@ interface(`files_rw_isid_type_blk_files',`
+@@ -3246,6 +3912,25 @@ interface(`files_mounton_isid_type_dirs',`
+
+ ########################################
+ ##
++## Mount a filesystem on a new chr_file
++## that has not yet been labeled.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`files_mounton_isid_type_chr_file',`
++ gen_require(`
++ type unlabeled_t;
++ ')
++
++ allow $1 unlabeled_t:chr_file mounton;
++')
++
++########################################
++##
+ ## Read files on new filesystems
+ ## that have not yet been labeled.
+ ##
+@@ -3455,6 +4140,25 @@ interface(`files_rw_isid_type_blk_files',`
########################################
##
@@ -10730,7 +10871,7 @@ index 64ff4d7..2b01383 100644
## Create, read, write, and delete block device nodes
## on new filesystems that have not yet been labeled.
##
-@@ -3796,20 +4407,38 @@ interface(`files_list_mnt',`
+@@ -3796,20 +4500,38 @@ interface(`files_list_mnt',`
######################################
##
@@ -10774,64 +10915,98 @@ index 64ff4d7..2b01383 100644
')
########################################
-@@ -4199,6 +4828,171 @@ interface(`files_read_world_readable_sockets',`
+@@ -4199,192 +4921,215 @@ 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;
+ ')
-+
+
+- 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")
@@ -10849,161 +11024,253 @@ index 64ff4d7..2b01383 100644
+ filetrans_pattern($1, etc_t, system_conf_t, file, "redhat.repo")
+ filetrans_pattern($1, etc_t, system_conf_t, file, "system-config-firewall")
+ filetrans_pattern($1, etc_t, system_conf_t, file, "system-config-firewall.old")
-+')
-+
+ ')
+
+-########################################
+######################################
-+##
+ ##
+-## 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
-@@ -4221,6 +5015,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).
##
##
-@@ -4234,17 +5048,37 @@ interface(`files_getattr_tmp_dirs',`
+ ##
+@@ -4392,53 +5137,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).
##
##
##
@@ -11012,35 +11279,113 @@ index 64ff4d7..2b01383 100644
##
##
#
-@@ -4271,6 +5105,7 @@ interface(`files_search_tmp',`
+-interface(`files_rw_generic_tmp_sockets',`
++interface(`files_dontaudit_getattr_tmp_dirs',`
+ gen_require(`
type tmp_t;
')
-+ 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;
')
-@@ -4307,6 +5142,7 @@ interface(`files_list_tmp',`
- type tmp_t;
+ ########################################
+ ##
+-## Set the attributes of all tmp directories.
++## Search the tmp directory (/tmp).
+ ##
+ ##
+ ##
+@@ -4446,77 +5194,92 @@ 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 };
+ 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;
')
-@@ -4316,7 +5152,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.
##
##
#
-@@ -4328,6 +5164,25 @@ 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;
')
+ ########################################
+ ##
+-## Relabel to and from all temporary
+-## directory types.
++## Read the tmp directory (/tmp).
+ ##
+ ##
+ ##
+ ## 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).
@@ -11058,25 +11403,87 @@ index 64ff4d7..2b01383 100644
+
+ files_search_tmp($1)
+ allow $1 tmp_t:dir rw_dir_perms;
-+')
-+
+ ')
+
########################################
##
- ## Remove entries from the tmp directory.
-@@ -4343,6 +5198,7 @@ interface(`files_delete_tmp_dir_entry',`
- type tmp_t;
+-## Allow attempts to get the attributes
+-## of all tmp files.
++## Remove entries from the tmp directory.
+ ##
+ ##
+ ##
+@@ -4524,110 +5287,98 @@ interface(`files_dontaudit_getattr_all_tmp_files',`
+ ##
+ ##
+ #
+-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)
')
-@@ -4384,6 +5240,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.
@@ -11085,538 +11492,2356 @@ index 64ff4d7..2b01383 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.
+ ')
+
+ ########################################
+ ##
+-## 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.
+-##
+-##
+-##
+-##
+-## The name of the object being created.
+-##
+-##
+ #
+-interface(`files_tmp_filetrans',`
++interface(`files_manage_generic_tmp_files',`
+ gen_require(`
+ type tmp_t;
+ ')
+
+- filetrans_pattern($1, tmp_t, $2, $3, $4)
++ manage_files_pattern($1, tmp_t, tmp_t)
+ ')
+
+ ########################################
+ ##
+-## Delete the contents of /tmp.
++## Read symbolic links in the tmp directory (/tmp).
##
##
-@@ -4438,7 +5320,7 @@ interface(`files_rw_generic_tmp_sockets',`
+ ##
+@@ -4635,22 +5386,17 @@ interface(`files_tmp_filetrans',`
+ ##
+ ##
+ #
+-interface(`files_purge_tmp',`
++interface(`files_read_generic_tmp_symlinks',`
+ 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)
++ read_lnk_files_pattern($1, tmp_t, tmp_t)
+ ')
########################################
##
--## Set the attributes of all tmp directories.
+-## Set the attributes of the /usr directory.
++## Read and write generic named sockets in the tmp directory (/tmp).
+ ##
+ ##
+ ##
+@@ -4658,17 +5404,17 @@ interface(`files_purge_tmp',`
+ ##
+ ##
+ #
+-interface(`files_setattr_usr_dirs',`
++interface(`files_rw_generic_tmp_sockets',`
+ gen_require(`
+- type usr_t;
++ type tmp_t;
+ ')
+
+- allow $1 usr_t:dir setattr;
++ rw_sock_files_pattern($1, tmp_t, tmp_t)
+ ')
+
+ ########################################
+ ##
+-## Search the content of /usr.
+## Relabel a dir from the type used in /tmp.
##
##
##
-@@ -4446,17 +5328,17 @@ interface(`files_rw_generic_tmp_sockets',`
+@@ -4676,18 +5422,17 @@ interface(`files_setattr_usr_dirs',`
##
##
#
--interface(`files_setattr_all_tmp_dirs',`
+-interface(`files_search_usr',`
+interface(`files_relabelfrom_tmp_dirs',`
gen_require(`
-- attribute tmpfile;
+- type usr_t;
+ type tmp_t;
')
-- allow $1 tmpfile:dir { search_dir_perms setattr };
+- allow $1 usr_t:dir search_dir_perms;
+ relabelfrom_dirs_pattern($1, tmp_t, tmp_t)
')
########################################
##
--## List all tmp directories.
+-## List the contents of generic
+-## directories in /usr.
+## Relabel a file from the type used in /tmp.
##
##
##
-@@ -4464,34 +5346,124 @@ interface(`files_setattr_all_tmp_dirs',`
+@@ -4695,35 +5440,35 @@ interface(`files_search_usr',`
##
##
#
--interface(`files_list_all_tmp',`
+-interface(`files_list_usr',`
+interface(`files_relabelfrom_tmp_files',`
gen_require(`
-- attribute tmpfile;
+- type usr_t;
+ type tmp_t;
')
-- allow $1 tmpfile:dir list_dir_perms;
+- allow $1 usr_t:dir list_dir_perms;
+ relabelfrom_files_pattern($1, tmp_t, tmp_t)
')
########################################
##
--## Relabel to and from all temporary
--## directory types.
+-## Do not audit write of /usr dirs
+## Set the attributes of all tmp directories.
##
##
##
- ## Domain allowed access.
+-## Domain to not audit.
++## Domain allowed access.
##
##
--##
#
--interface(`files_relabel_all_tmp_dirs',`
+-interface(`files_dontaudit_write_usr_dirs',`
+interface(`files_setattr_all_tmp_dirs',`
gen_require(`
- attribute tmpfile;
-- type var_t;
+- type usr_t;
++ attribute tmpfile;
')
-- allow $1 var_t:dir search_dir_perms;
-- relabel_dirs_pattern($1, tmpfile, tmpfile)
+- dontaudit $1 usr_t:dir write;
+ allow $1 tmpfile:dir { search_dir_perms setattr };
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Add and remove entries from /usr directories.
+## Allow caller to read inherited tmp files.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
+ ##
+ ##
+ ##
+@@ -4731,36 +5476,35 @@ interface(`files_dontaudit_write_usr_dirs',`
+ ##
+ ##
+ #
+-interface(`files_rw_usr_dirs',`
+interface(`files_read_inherited_tmp_files',`
-+ gen_require(`
+ gen_require(`
+- type usr_t;
+ attribute tmpfile;
-+ ')
-+
+ ')
+
+- allow $1 usr_t:dir rw_dir_perms;
+ allow $1 tmpfile:file { append read_inherited_file_perms };
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Do not audit attempts to add and remove
+-## entries from /usr directories.
+## Allow caller to append inherited tmp files.
-+##
-+##
-+##
+ ##
+ ##
+ ##
+-## Domain to not audit.
+## Domain allowed access.
-+##
-+##
-+#
+ ##
+ ##
+ #
+-interface(`files_dontaudit_rw_usr_dirs',`
+interface(`files_append_inherited_tmp_files',`
-+ gen_require(`
+ gen_require(`
+- type usr_t;
+ attribute tmpfile;
-+ ')
-+
+ ')
+
+- dontaudit $1 usr_t:dir rw_dir_perms;
+ allow $1 tmpfile:file append_inherited_file_perms;
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Delete generic directories in /usr in the caller domain.
+## Allow caller to read and write inherited tmp files.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
+ ##
+ ##
+ ##
+@@ -4768,17 +5512,17 @@ interface(`files_dontaudit_rw_usr_dirs',`
+ ##
+ ##
+ #
+-interface(`files_delete_usr_dirs',`
+interface(`files_rw_inherited_tmp_file',`
-+ gen_require(`
+ gen_require(`
+- type usr_t;
+ attribute tmpfile;
-+ ')
-+
+ ')
+
+- delete_dirs_pattern($1, usr_t, usr_t)
+ allow $1 tmpfile:file rw_inherited_file_perms;
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Delete generic files in /usr in the caller domain.
+## List all tmp directories.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
+ ##
+ ##
+ ##
+@@ -4786,73 +5530,59 @@ interface(`files_delete_usr_dirs',`
+ ##
+ ##
+ #
+-interface(`files_delete_usr_files',`
+interface(`files_list_all_tmp',`
-+ gen_require(`
+ gen_require(`
+- type usr_t;
+ attribute tmpfile;
-+ ')
-+
+ ')
+
+- delete_files_pattern($1, usr_t, usr_t)
+ allow $1 tmpfile:dir list_dir_perms;
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Get the attributes of files in /usr.
+## Relabel to and from all temporary
+## directory types.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
+ ##
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
+##
-+#
+ #
+-interface(`files_getattr_usr_files',`
+interface(`files_relabel_all_tmp_dirs',`
-+ gen_require(`
+ gen_require(`
+- type usr_t;
+ attribute tmpfile;
+ type var_t;
-+ ')
-+
+ ')
+
+- getattr_files_pattern($1, usr_t, usr_t)
+ allow $1 var_t:dir search_dir_perms;
+ relabel_dirs_pattern($1, tmpfile, tmpfile)
')
########################################
-@@ -4501,7 +5473,7 @@ interface(`files_relabel_all_tmp_dirs',`
+ ##
+-## Read generic files in /usr.
++## Do not audit 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.
+-##
+-##
##
##
--## Domain not to audit.
+-## Domain allowed access.
+## Domain to not audit.
##
##
+-##
#
-@@ -4561,7 +5533,7 @@ interface(`files_relabel_all_tmp_files',`
+-interface(`files_read_usr_files',`
++interface(`files_dontaudit_getattr_all_tmp_files',`
+ gen_require(`
+- type usr_t;
++ attribute tmpfile;
+ ')
+
+- 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)
++ dontaudit $1 tmpfile:file getattr;
+ ')
+
+ ########################################
+ ##
+-## Execute generic programs in /usr in the caller domain.
++## Allow attempts to get the attributes
++## of all tmp files.
##
##
##
--## Domain not to audit.
-+## Domain to not audit.
+@@ -4860,55 +5590,58 @@ interface(`files_read_usr_files',`
##
##
#
-@@ -4593,6 +5565,44 @@ interface(`files_read_all_tmp_files',`
-
- ########################################
- ##
-+## 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(`
+-interface(`files_exec_usr_files',`
++interface(`files_getattr_all_tmp_files',`
+ gen_require(`
+- type usr_t;
+ 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.
- ##
-@@ -4646,6 +5656,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)
- ')
+ ')
- ########################################
-@@ -5223,6 +6243,24 @@ interface(`files_list_var',`
+- 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 tmpfile:file getattr;
+ ')
########################################
##
-+## 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.
+-## dontaudit write of /usr files
++## Relabel to and from all temporary
++## file types.
##
-@@ -5578,6 +6616,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_files',`
++interface(`files_relabel_all_tmp_files',`
+ gen_require(`
+- type usr_t;
++ attribute tmpfile;
++ type var_t;
+ ')
-@@ -5623,7 +6680,7 @@ interface(`files_manage_mounttab',`
+- dontaudit $1 usr_t:file write;
++ allow $1 var_t:dir search_dir_perms;
++ relabel_files_pattern($1, tmpfile, tmpfile)
+ ')
########################################
##
--## Set the attributes of the generic lock directories.
-+## List generic lock directories.
+-## Create, read, write, and delete files in the /usr directory.
++## Do not audit attempts to get the attributes
++## of all tmp sock_file.
##
##
##
-@@ -5631,12 +6688,13 @@ interface(`files_manage_mounttab',`
+-## Domain allowed access.
++## Domain to not audit.
##
##
#
--interface(`files_setattr_lock_dirs',`
-+interface(`files_list_locks',`
+-interface(`files_manage_usr_files',`
++interface(`files_dontaudit_getattr_all_tmp_sockets',`
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)
+- manage_files_pattern($1, usr_t, usr_t)
++ dontaudit $1 tmpfile:sock_file getattr;
')
########################################
-@@ -5654,6 +6712,7 @@ interface(`files_search_locks',`
- type var_t, var_lock_t;
+ ##
+-## Relabel a file to the type used in /usr.
++## Read all tmp files.
+ ##
+ ##
+ ##
+@@ -4916,67 +5649,70 @@ interface(`files_manage_usr_files',`
+ ##
+ ##
+ #
+-interface(`files_relabelto_usr_files',`
++interface(`files_read_all_tmp_files',`
+ 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)
+- relabelto_files_pattern($1, usr_t, usr_t)
++ read_files_pattern($1, tmpfile, tmpfile)
')
-@@ -5680,7 +6739,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.
+-## Relabel a file from the type used in /usr.
++## Do not audit attempts to read or write
++## all leaked tmpfiles files.
##
##
##
-@@ -5688,13 +6766,12 @@ interface(`files_dontaudit_search_locks',`
+-## Domain allowed access.
++## Domain to not audit.
##
##
#
--interface(`files_list_locks',`
-+interface(`files_setattr_lock_dirs',`
+-interface(`files_relabelfrom_usr_files',`
++interface(`files_dontaudit_tmp_file_leaks',`
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;
+- relabelfrom_files_pattern($1, usr_t, usr_t)
++ dontaudit $1 tmpfile:file rw_inherited_file_perms;
+ ')
+
+ ########################################
+ ##
+-## 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;
+ ')
+
+- read_lnk_files_pattern($1, usr_t, usr_t)
++ allow $1 tmpfile:file rw_inherited_file_perms;
+ ')
+
+ ########################################
+ ##
+-## Create objects in the /usr directory
++## Create an object in the tmp directories, with a private
++## type using a type transition.
+ ##
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
+-##
++##
+ ##
+-## The type of the object to be created
++## The type of the object to be created.
+ ##
+ ##
+-##
++##
+ ##
+-## The object class.
++## The object class of the object being created.
+ ##
+ ##
+ ##
+@@ -4985,35 +5721,50 @@ interface(`files_read_usr_symlinks',`
+ ##
+ ##
+ #
+-interface(`files_usr_filetrans',`
++interface(`files_tmp_filetrans',`
+ gen_require(`
+- type usr_t;
++ type tmp_t;
+ ')
+
+- filetrans_pattern($1, usr_t, $2, $3, $4)
++ filetrans_pattern($1, tmp_t, $2, $3, $4)
+ ')
+
+ ########################################
+ ##
+-## 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;
+ ')
+
+- 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)
+ ')
+
+ ########################################
+ ##
+-## Get the attributes of files in /usr/src.
++## Set the attributes of the /usr directory.
+ ##
+ ##
+ ##
+@@ -5021,20 +5772,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;
+ ')
+
+- 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;
+ ')
+
+ ########################################
+ ##
+-## Read files in /usr/src.
++## Search the content of /usr.
+ ##
+ ##
+ ##
+@@ -5042,20 +5790,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 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;
+ ')
+
+ ########################################
+ ##
+-## Execute programs in /usr/src in the caller domain.
++## List the contents of generic
++## directories in /usr.
+ ##
+ ##
+ ##
+@@ -5063,38 +5809,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;
+ ')
+
+- 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;
+ ')
+
+ ########################################
+ ##
+-## Install a system.map into the /boot directory.
++## Do not audit write of /usr dirs
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_create_kernel_symbol_table',`
++interface(`files_dontaudit_write_usr_dirs',`
+ gen_require(`
+- type boot_t, system_map_t;
++ type usr_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 };
++ dontaudit $1 usr_t:dir write;
+ ')
+
+ ########################################
+ ##
+-## Read system.map in the /boot directory.
++## Add and remove entries from /usr directories.
+ ##
+ ##
+ ##
+@@ -5102,37 +5845,36 @@ interface(`files_create_kernel_symbol_table',`
+ ##
+ ##
+ #
+-interface(`files_read_kernel_symbol_table',`
++interface(`files_rw_usr_dirs',`
+ gen_require(`
+- type boot_t, system_map_t;
++ type usr_t;
+ ')
+
+- 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 a system.map in the /boot directory.
++## Do not audit attempts to add and remove
++## entries from /usr directories.
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_delete_kernel_symbol_table',`
++interface(`files_dontaudit_rw_usr_dirs',`
+ gen_require(`
+- type boot_t, system_map_t;
++ type usr_t;
+ ')
+
+- 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;
+ ')
+
+ ########################################
+ ##
+-## Search the contents of /var.
++## Delete generic directories in /usr in the caller domain.
+ ##
+ ##
+ ##
+@@ -5140,35 +5882,35 @@ interface(`files_delete_kernel_symbol_table',`
+ ##
+ ##
+ #
+-interface(`files_search_var',`
++interface(`files_delete_usr_dirs',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- allow $1 var_t:dir search_dir_perms;
++ delete_dirs_pattern($1, usr_t, usr_t)
+ ')
+
+ ########################################
+ ##
+-## Do not audit attempts to write to /var.
++## Delete generic files in /usr in the caller domain.
+ ##
+ ##
+ ##
+-## Domain to not audit.
++## Domain allowed access.
+ ##
+ ##
+ #
+-interface(`files_dontaudit_write_var_dirs',`
++interface(`files_delete_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- dontaudit $1 var_t:dir write;
++ delete_files_pattern($1, usr_t, usr_t)
+ ')
+
+ ########################################
+ ##
+-## Allow attempts to write to /var.dirs
++## Get the attributes of files in /usr.
+ ##
+ ##
+ ##
+@@ -5176,36 +5918,55 @@ interface(`files_dontaudit_write_var_dirs',`
+ ##
+ ##
+ #
+-interface(`files_write_var_dirs',`
++interface(`files_getattr_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- allow $1 var_t:dir write;
++ getattr_files_pattern($1, usr_t, usr_t)
+ ')
+
+ ########################################
+ ##
+-## 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_var',`
++interface(`files_read_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- 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 /var.
++## Execute generic programs in /usr in the caller domain.
+ ##
+ ##
+ ##
+@@ -5213,36 +5974,37 @@ interface(`files_dontaudit_search_var',`
+ ##
+ ##
+ #
+-interface(`files_list_var',`
++interface(`files_exec_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- 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 directories
+-## in the /var directory.
++## dontaudit write of /usr files
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_manage_var_dirs',`
++interface(`files_dontaudit_write_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- allow $1 var_t:dir manage_dir_perms;
++ dontaudit $1 usr_t:file write;
+ ')
+
+ ########################################
+ ##
+-## Read files in the /var directory.
++## Create, read, write, and delete files in the /usr directory.
+ ##
+ ##
+ ##
+@@ -5250,17 +6012,17 @@ interface(`files_manage_var_dirs',`
+ ##
+ ##
+ #
+-interface(`files_read_var_files',`
++interface(`files_manage_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- read_files_pattern($1, var_t, var_t)
++ manage_files_pattern($1, usr_t, usr_t)
+ ')
+
+ ########################################
+ ##
+-## Append files in the /var directory.
++## Relabel a file to the type used in /usr.
+ ##
+ ##
+ ##
+@@ -5268,17 +6030,17 @@ interface(`files_read_var_files',`
+ ##
+ ##
+ #
+-interface(`files_append_var_files',`
++interface(`files_relabelto_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- append_files_pattern($1, var_t, var_t)
++ relabelto_files_pattern($1, usr_t, usr_t)
+ ')
+
+ ########################################
+ ##
+-## Read and write files in the /var directory.
++## Relabel a file from the type used in /usr.
+ ##
+ ##
+ ##
+@@ -5286,73 +6048,86 @@ interface(`files_append_var_files',`
+ ##
+ ##
+ #
+-interface(`files_rw_var_files',`
++interface(`files_relabelfrom_usr_files',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- rw_files_pattern($1, var_t, var_t)
++ relabelfrom_files_pattern($1, usr_t, usr_t)
+ ')
+
+ ########################################
+ ##
+-## Do not audit attempts to read and write
+-## files in the /var directory.
++## Read symbolic links in /usr.
+ ##
+ ##
+ ##
+-## Domain to not audit.
++## Domain allowed access.
+ ##
+ ##
+ #
+-interface(`files_dontaudit_rw_var_files',`
++interface(`files_read_usr_symlinks',`
+ gen_require(`
+- type var_t;
++ type usr_t;
+ ')
+
+- 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.
+ ##
+ ##
+ ##
+@@ -5360,50 +6135,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.
+ ##
+ ##
+ ##
+@@ -5411,69 +6177,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.
+ ##
+ ##
+ ##
+@@ -5481,17 +6234,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.
+ ##
+ ##
+ ##
+@@ -5499,70 +6253,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
+ ##
+ ##
+ ##
+@@ -5570,41 +6308,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.
+-
+ ########################################
+ ##
+-## 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;
+ ')
+
+ ########################################
+ ##
+-## Allow domain to manage mount tables
+-## necessary for rpcd, nfsd, etc.
++## List the contents of /var.
+ ##
+ ##
+ ##
+@@ -5612,36 +6345,36 @@ interface(`files_manage_urandom_seed',`
+ ##
+ ##
+ #
+-interface(`files_manage_mounttab',`
++interface(`files_list_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)
++ 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.
+ ##
+ ##
+ ##
+@@ -5649,38 +6382,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.
+ ##
+ ##
+ ##
+@@ -5688,19 +6418,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)
-+ allow $1 var_lock_t:dir setattr;
++ 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.
+ ##
+ ##
+ ##
+@@ -5708,60 +6436,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.
+ ##
+ ##
+ ##
+@@ -5769,20 +6491,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.
+ ##
+ ##
+ ##
+@@ -5790,185 +6510,207 @@ 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)
')
########################################
-@@ -5713,7 +6790,7 @@ interface(`files_rw_lock_dirs',`
- type var_t, var_lock_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;
-+ files_search_locks($1)
- rw_dirs_pattern($1, var_t, var_lock_t)
+- 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)
')
-@@ -5746,7 +6823,6 @@ interface(`files_create_lock_dirs',`
- ## Domain allowed access.
+ ########################################
+ ##
+-## manage all lock files.
++## Do not audit attempts to search the
++## contents of /var/lib.
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
##
##
--##
++##
#
- interface(`files_relabel_all_lock_dirs',`
+-interface(`files_manage_all_locks',`
++interface(`files_dontaudit_search_var_lib',`
gen_require(`
-@@ -5761,7 +6837,7 @@ interface(`files_relabel_all_lock_dirs',`
+- 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;
+ ')
########################################
##
--## Get the attributes of generic lock files.
-+## Relabel to and from all lock file types.
+-## Create an object in the locks directory, with a private
+-## type using a type transition.
++## List the contents of the /var/lib directory.
##
##
##
-@@ -5769,13 +6845,33 @@ interface(`files_relabel_all_lock_dirs',`
+ ## 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_getattr_generic_locks',`
-+interface(`files_relabel_all_lock_files',`
+-interface(`files_lock_filetrans',`
++interface(`files_list_var_lib',`
gen_require(`
-+ attribute lockfile;
- type var_t, var_lock_t;
+- 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;
-+ relabel_files_pattern($1, lockfile, lockfile)
+- 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)
+')
+
-+########################################
++#######################################
+##
-+## Get the attributes of generic lock files.
++## Create directories in /var/lib
+##
+##
-+##
-+## Domain allowed access.
-+##
++##
++## 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)
++interface(`files_create_var_lib_dirs',`
++ gen_require(`
++ type var_lib_t;
++ ')
++ allow $1 var_lib_t:dir { create rw_dir_perms };
')
-@@ -5791,13 +6887,12 @@ interface(`files_getattr_generic_locks',`
+
+ ########################################
+ ##
+-## Set the attributes of the /var/run directory.
++## 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_delete_generic_locks',`
-- gen_require(`
-+ gen_require(`
- type var_t, var_lock_t;
-- ')
-+ ')
+-interface(`files_setattr_pid_dirs',`
++interface(`files_var_lib_filetrans',`
+ gen_require(`
+- type var_run_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, var_lock_t, var_lock_t)
-+ files_search_locks($1)
-+ delete_files_pattern($1, var_lock_t, var_lock_t)
+- allow $1 var_run_t:lnk_file read_lnk_file_perms;
+- allow $1 var_run_t:dir setattr;
++ allow $1 var_t:dir search_dir_perms;
++ filetrans_pattern($1, var_lib_t, $2, $3, $4)
')
########################################
-@@ -5816,9 +6911,7 @@ interface(`files_manage_generic_locks',`
- type var_t, var_lock_t;
+ ##
+-## Search the contents of runtime process
+-## ID directories (/var/run).
++## Read generic files in /var/lib.
+ ##
+ ##
+ ##
+@@ -5976,39 +6718,37 @@ interface(`files_setattr_pid_dirs',`
+ ##
+ ##
+ #
+-interface(`files_search_pids',`
++interface(`files_read_var_lib_files',`
+ gen_require(`
+- type var_t, var_run_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;
-- manage_dirs_pattern($1, var_lock_t, var_lock_t)
-+ files_search_locks($1)
- manage_files_pattern($1, var_lock_t, var_lock_t)
+- allow $1 var_run_t:lnk_file read_lnk_file_perms;
+- search_dirs_pattern($1, var_t, var_run_t)
++ allow $1 var_lib_t:dir list_dir_perms;
++ read_files_pattern($1, { var_t var_lib_t }, var_lib_t)
')
-@@ -5860,8 +6953,7 @@ interface(`files_read_all_locks',`
- type var_t, var_lock_t;
+ ########################################
+ ##
+-## Do not audit attempts to search
+-## the /var/run directory.
++## Read generic symbolic links in /var/lib
+ ##
+ ##
+ ##
+-## Domain to not audit.
++## Domain allowed access.
+ ##
+ ##
+ #
+-interface(`files_dontaudit_search_pids',`
++interface(`files_read_var_lib_symlinks',`
+ gen_require(`
+- type var_run_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;
-+ files_search_locks($1)
- allow $1 lockfile:dir list_dir_perms;
- read_files_pattern($1, lockfile, lockfile)
- read_lnk_files_pattern($1, lockfile, lockfile)
-@@ -5883,8 +6975,7 @@ interface(`files_manage_all_locks',`
- type var_t, var_lock_t;
- ')
+- dontaudit $1 var_run_t:lnk_file read_lnk_file_perms;
+- dontaudit $1 var_run_t:dir search_dir_perms;
++ read_lnk_files_pattern($1, { var_t var_lib_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;
-+ files_search_locks($1)
- manage_dirs_pattern($1, lockfile, lockfile)
- manage_files_pattern($1, lockfile, lockfile)
- manage_lnk_files_pattern($1, lockfile, lockfile)
-@@ -5921,8 +7012,7 @@ interface(`files_lock_filetrans',`
- type var_t, var_lock_t;
+ ########################################
+ ##
+-## List the contents of the runtime process
+-## ID directories (/var/run).
++## manage generic symbolic links
++## in the /var/lib directory.
+ ##
+ ##
+ ##
+@@ -6016,18 +6756,21 @@ interface(`files_dontaudit_search_pids',`
+ ##
+ ##
+ #
+-interface(`files_list_pids',`
++interface(`files_manage_var_lib_symlinks',`
+ gen_require(`
+- type var_t, var_run_t;
++ type var_lib_t;
')
-- 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)
+- allow $1 var_run_t:lnk_file read_lnk_file_perms;
+- list_dirs_pattern($1, var_t, var_run_t)
++ manage_lnk_files_pattern($1,var_lib_t,var_lib_t)
')
-@@ -5961,7 +7051,7 @@ interface(`files_setattr_pid_dirs',`
- type var_run_t;
++# cjp: the next two interfaces really need to be fixed
++# in some way. They really neeed their own types.
++
+ ########################################
+ ##
+-## Read generic process ID files.
++## Create, read, write, and delete the
++## pseudorandom number generator seed.
+ ##
+ ##
+ ##
+@@ -6035,19 +6778,19 @@ interface(`files_list_pids',`
+ ##
+ ##
+ #
+-interface(`files_read_generic_pids',`
++interface(`files_manage_urandom_seed',`
+ 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_files_pattern($1, var_run_t, var_run_t)
++ allow $1 var_t:dir search_dir_perms;
++ manage_files_pattern($1, var_lib_t, var_lib_t)
+ ')
+
+ ########################################
+ ##
+-## Write named generic process ID pipes
++## Allow domain to manage mount tables
++## necessary for rpcd, nfsd, etc.
+ ##
+ ##
+ ##
+@@ -6055,58 +6798,1223 @@ interface(`files_read_generic_pids',`
+ ##
+ ##
+ #
+-interface(`files_write_generic_pid_pipes',`
++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;
- ')
-
-@@ -5981,10 +7071,48 @@ interface(`files_search_pids',`
- type var_t, var_run_t;
- ')
-
++ 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)
- ')
-
++ 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.
@@ -11654,13 +13879,28 @@ index 64ff4d7..2b01383 100644
+ allow $1 var_run_t:dir create_dir_perms;
+')
+
- ########################################
- ##
- ## Do not audit attempts to search
-@@ -6007,6 +7135,25 @@ interface(`files_dontaudit_search_pids',`
-
- ########################################
- ##
++########################################
++##
++## 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.
+##
@@ -11680,74 +13920,167 @@ index 64ff4d7..2b01383 100644
+
+########################################
+##
- ## List the contents of the runtime process
- ## ID directories (/var/run).
- ##
-@@ -6021,7 +7168,7 @@ interface(`files_list_pids',`
- type var_t, var_run_t;
- ')
-
-- allow $1 var_run_t:lnk_file read_lnk_file_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)
- ')
-
-@@ -6040,7 +7187,7 @@ interface(`files_read_generic_pids',`
- 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 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)
- ')
-@@ -6060,7 +7207,7 @@ interface(`files_write_generic_pid_pipes',`
- type 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)
++')
++
++########################################
++##
++## 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;
- ')
-
-@@ -6122,7 +7269,6 @@ interface(`files_pid_filetrans',`
- ')
-
- 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)
- ')
-
-@@ -6151,7 +7297,7 @@ interface(`files_pid_filetrans_lock_dir',`
-
- ########################################
- ##
--## Read and write generic process ID files.
++ 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
- ##
- ##
- ##
-@@ -6159,20 +7305,38 @@ interface(`files_pid_filetrans_lock_dir',`
- ##
- ##
- #
--interface(`files_rw_generic_pids',`
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
+interface(`files_rw_inherited_generic_pid_files',`
- gen_require(`
-- type var_t, var_run_t;
++ gen_require(`
+ type var_run_t;
- ')
-
-- 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 var_run_t:file rw_inherited_file_perms;
- ')
-
- ########################################
- ##
--## Do not audit attempts to get the attributes of
--## daemon runtime data files.
++')
++
++########################################
++##
+## Read and write generic process ID files.
+##
+##
@@ -11770,13 +14103,64 @@ index 64ff4d7..2b01383 100644
+##
+## Do not audit attempts to get the attributes of
+## daemon runtime data files.
- ##
- ##
- ##
-@@ -6231,6 +7395,116 @@ interface(`files_dontaudit_ioctl_all_pids',`
-
- ########################################
- ##
++##
++##
++##
++## 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
+##
+##
@@ -11887,20 +14271,23 @@ index 64ff4d7..2b01383 100644
+
+########################################
+##
- ## Read all process ID files.
- ##
- ##
-@@ -6243,12 +7517,86 @@ interface(`files_dontaudit_ioctl_all_pids',`
- interface(`files_read_all_pids',`
- gen_require(`
- attribute pidfile;
-- type var_t, var_run_t;
++## Read all process ID files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`files_read_all_pids',`
++ gen_require(`
++ attribute pidfile;
+ type var_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)
++ ')
++
++ list_dirs_pattern($1, var_t, pidfile)
++ read_files_pattern($1, pidfile, pidfile)
+ read_lnk_files_pattern($1, pidfile, pidfile)
+')
+
@@ -11933,10 +14320,12 @@ index 64ff4d7..2b01383 100644
+##
+#
+interface(`files_exec_generic_pid_files',`
-+ gen_require(`
-+ type var_run_t;
-+ ')
-+
+ gen_require(`
+ type var_run_t;
+ ')
+
+- allow $1 var_run_t:lnk_file read_lnk_file_perms;
+- allow $1 var_run_t:fifo_file write;
+ exec_files_pattern($1, var_run_t, var_run_t)
+')
+
@@ -11976,33 +14365,57 @@ index 64ff4d7..2b01383 100644
+ ')
+
+ allow $1 polymember:dir mounton;
- ')
-
- ########################################
-@@ -6268,8 +7616,8 @@ interface(`files_delete_all_pids',`
- type var_t, var_run_t;
- ')
-
++')
++
++########################################
++##
++## 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:lnk_file read_lnk_file_perms;
- allow $1 var_run_t:dir rmdir;
- allow $1 var_run_t:lnk_file delete_lnk_file_perms;
- delete_files_pattern($1, pidfile, pidfile)
-@@ -6293,36 +7641,80 @@ interface(`files_delete_all_pid_dirs',`
- type var_t, var_run_t;
- ')
-
++ 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;
++ ')
++
+ files_search_pids($1)
- allow $1 var_t:dir search_dir_perms;
-- allow $1 var_run_t:lnk_file read_lnk_file_perms;
- delete_dirs_pattern($1, pidfile, pidfile)
- ')
-
- ########################################
- ##
--## Create, read, write and delete all
--## var_run (pid) content
++ allow $1 var_t:dir search_dir_perms;
++ delete_dirs_pattern($1, pidfile, pidfile)
++')
++
++########################################
++##
+## Make the specified type a file
+## used for spool files.
+##
@@ -12052,153 +14465,24 @@ index 64ff4d7..2b01383 100644
+########################################
+##
+## Create all spool sockets
- ##
- ##
- ##
--## Domain alloed access.
-+## Domain allowed access.
- ##
- ##
- #
--interface(`files_manage_all_pids',`
-+interface(`files_create_all_spool_sockets',`
- gen_require(`
-- attribute pidfile;
-+ attribute spoolfile;
- ')
-
-- manage_dirs_pattern($1, pidfile, pidfile)
-- manage_files_pattern($1, pidfile, pidfile)
-- manage_lnk_files_pattern($1, pidfile, pidfile)
-+ allow $1 spoolfile:sock_file create_sock_file_perms;
- ')
-
- ########################################
- ##
--## Mount filesystems on all polyinstantiation
--## member directories.
-+## Delete all spool sockets
- ##
- ##
- ##
-@@ -6330,12 +7722,33 @@ interface(`files_manage_all_pids',`
- ##
- ##
- #
--interface(`files_mounton_all_poly_members',`
-+interface(`files_delete_all_spool_sockets',`
- gen_require(`
-- attribute polymember;
-+ attribute spoolfile;
- ')
-
-- allow $1 polymember:dir mounton;
-+ allow $1 spoolfile:sock_file delete_sock_file_perms;
-+')
-+
-+########################################
-+##
-+## Relabel to and from all spool
-+## directory types.
+##
+##
+##
+## Domain allowed access.
+##
+##
-+##
+#
-+interface(`files_relabel_all_spool_dirs',`
++interface(`files_create_all_spool_sockets',`
+ gen_require(`
+ attribute spoolfile;
-+ type var_t;
-+ ')
-+
-+ relabel_dirs_pattern($1, spoolfile, spoolfile)
- ')
-
- ########################################
-@@ -6562,3 +7975,491 @@ interface(`files_unconfined',`
-
- typeattribute $1 files_unconfined_type;
- ')
-+
-+########################################
-+##
-+## Create a core files in /
-+##
-+##
-+##
-+## Create a core file in /,
-+##
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+##
-+#
-+interface(`files_manage_root_files',`
-+ gen_require(`
-+ type root_t;
+ ')
+
-+ manage_files_pattern($1, root_t, root_t)
-+')
-+
-+########################################
-+##
-+## Create a default directory
-+##
-+##
-+##
-+## Create a default_t direcrory
-+##
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+##
-+#
-+interface(`files_create_default_dir',`
-+ gen_require(`
-+ type default_t;
-+ ')
-+
-+ allow $1 default_t:dir create;
-+')
-+
-+########################################
-+##
-+## Create, default_t objects with an automatic
-+## type transition.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+##
-+##
-+## The class of the object being created.
-+##
-+##
-+#
-+interface(`files_root_filetrans_default',`
-+ gen_require(`
-+ type root_t, default_t;
-+ ')
-+
-+ filetrans_pattern($1, root_t, default_t, $2)
++ allow $1 spoolfile:sock_file create_sock_file_perms;
+')
+
+########################################
+##
-+## manage generic symbolic links
-+## in the /var/run directory.
++## Delete all spool sockets
+##
+##
+##
@@ -12206,54 +14490,59 @@ index 64ff4d7..2b01383 100644
+##
+##
+#
-+interface(`files_manage_generic_pids_symlinks',`
++interface(`files_delete_all_spool_sockets',`
+ gen_require(`
-+ type var_run_t;
++ attribute spoolfile;
+ ')
+
-+ manage_lnk_files_pattern($1,var_run_t,var_run_t)
++ allow $1 spoolfile:sock_file delete_sock_file_perms;
+')
+
+########################################
+##
-+## Do not audit attempts to getattr
-+## all tmpfs files.
++## Relabel to and from all spool
++## directory types.
+##
+##
+##
-+## Domain to not audit.
++## Domain allowed access.
+##
+##
++##
+#
-+interface(`files_dontaudit_getattr_tmpfs_files',`
++interface(`files_relabel_all_spool_dirs',`
+ gen_require(`
-+ attribute tmpfsfile;
++ attribute spoolfile;
++ type var_t;
+ ')
+
-+ allow $1 tmpfsfile:file getattr;
++ relabel_dirs_pattern($1, spoolfile, spoolfile)
+')
+
+########################################
+##
-+## Allow read write all tmpfs files
++## Search the contents of generic spool
++## directories (/var/spool).
+##
+##
+##
-+## Domain to not audit.
++## Domain allowed access.
+##
+##
+#
-+interface(`files_rw_tmpfs_files',`
++interface(`files_search_spool',`
+ gen_require(`
-+ attribute tmpfsfile;
++ type var_t, var_spool_t;
+ ')
+
-+ allow $1 tmpfsfile:file { read write };
-+')
-+
-+########################################
-+##
-+## Do not audit attempts to read security files
++ search_dirs_pattern($1, var_t, var_spool_t)
+ ')
+
+ ########################################
+ ##
+-## Create an object in the process ID directory, with a private type.
++## Do not audit attempts to search generic
++## spool directories.
+##
+##
+##
@@ -12261,193 +14550,687 @@ index 64ff4d7..2b01383 100644
+##
+##
+#
-+interface(`files_dontaudit_read_security_files',`
++interface(`files_dontaudit_search_spool',`
+ gen_require(`
-+ attribute security_file_type;
++ type var_spool_t;
+ ')
+
-+ dontaudit $1 security_file_type:file read_file_perms;
++ dontaudit $1 var_spool_t:dir search_dir_perms;
+')
+
+########################################
+##
-+## rw any files inherited from another process
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+##
-+##
-+## Object type.
-+##
-+##
++## List the contents of generic spool
++## (/var/spool) directories.
+ ##
+-##
+-##
+-## 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.
+ ##
+ ##
+-##
+#
-+interface(`files_rw_all_inherited_files',`
++interface(`files_list_spool',`
+ gen_require(`
-+ attribute file_type;
++ type var_t, var_spool_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;
++ list_dirs_pattern($1, var_t, var_spool_t)
+')
+
+########################################
+##
-+## Allow any file point to be the entrypoint of this domain
++## Create, read, write, and delete generic
++## spool directories (/var/spool).
+##
+##
-+##
+ ##
+-## The type of the object to be created.
+## Domain allowed access.
-+##
-+##
-+##
+ ##
+ ##
+-##
+#
-+interface(`files_entrypoint_all_files',`
++interface(`files_manage_generic_spool_dirs',`
+ gen_require(`
-+ attribute file_type;
++ type var_t, var_spool_t;
+ ')
-+ allow $1 file_type:file entrypoint;
++
++ allow $1 var_t:dir search_dir_perms;
++ manage_dirs_pattern($1, var_spool_t, var_spool_t)
+')
+
+########################################
+##
-+## Do not audit attempts to rw inherited file perms
-+## of non security files.
++## Read generic spool files.
+##
+##
-+##
-+## Domain to not audit.
+ ##
+-## The object class of the object being created.
++## Domain allowed access.
+##
+##
+#
-+interface(`files_dontaudit_all_non_security_leaks',`
++interface(`files_read_generic_spool',`
+ gen_require(`
-+ attribute non_security_file_type;
++ type var_t, var_spool_t;
+ ')
+
-+ dontaudit $1 non_security_file_type:file_class_set rw_inherited_file_perms;
++ list_dirs_pattern($1, var_t, var_spool_t)
++ read_files_pattern($1, var_spool_t, var_spool_t)
+')
+
+########################################
+##
-+## Do not audit attempts to read or write
-+## all leaked files.
++## Create, read, write, and delete generic
++## spool files.
+##
+##
+##
-+## Domain to not audit.
++## Domain allowed access.
+##
+##
+#
-+interface(`files_dontaudit_leaks',`
++interface(`files_manage_generic_spool',`
+ gen_require(`
-+ attribute file_type;
++ type var_t, var_spool_t;
+ ')
+
-+ dontaudit $1 file_type:file rw_inherited_file_perms;
-+ dontaudit $1 file_type:lnk_file { read };
++ allow $1 var_t:dir search_dir_perms;
++ manage_files_pattern($1, var_spool_t, var_spool_t)
+')
+
+########################################
+##
-+## Allow domain to create_file_ass all types
++## Create objects in the spool directory
++## with a private type with a type transition.
+##
+##
+##
+## Domain allowed access.
+##
+##
-+#
-+interface(`files_create_as_is_all_files',`
++##
++##
++## Type to which the created node will be transitioned.
++##
++##
++##
++##
++## Object class(es) (single or set including {}) for which this
++## the transition will occur.
+ ##
+ ##
+ ##
+@@ -6114,44 +8022,165 @@ interface(`files_write_generic_pid_pipes',`
+ ## The name of the object being created.
+ ##
+ ##
+-##
+ #
+-interface(`files_pid_filetrans',`
+- gen_require(`
+- type var_t, var_run_t;
+- ')
++interface(`files_spool_filetrans',`
+ gen_require(`
-+ attribute file_type;
-+ class kernel_service create_files_as;
++ type var_t, var_spool_t;
+ ')
+
-+ allow $1 file_type:kernel_service create_files_as;
++ allow $1 var_t:dir search_dir_perms;
++ filetrans_pattern($1, var_spool_t, $2, $3, $4)
+')
+
+########################################
+##
-+## Do not audit attempts to check the
-+## access on all files
++## Allow access to manage all polyinstantiated
++## directories on the system.
+##
+##
+##
-+## Domain to not audit.
++## Domain allowed access.
+##
+##
+#
-+interface(`files_dontaudit_all_access_check',`
++interface(`files_polyinstantiate_all',`
+ gen_require(`
-+ attribute file_type;
++ attribute polydir, polymember, polyparent;
++ type poly_t;
+ ')
+
-+ dontaudit $1 file_type:dir_file_class_set audit_access;
++ # 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)
++ ')
+')
+
+########################################
+##
-+## Do not audit attempts to write to all files
++## Unconfined access to files.
+##
+##
+##
-+## Domain to not audit.
++## Domain allowed access.
+##
+##
+#
-+interface(`files_dontaudit_write_all_files',`
++interface(`files_unconfined',`
+ gen_require(`
-+ attribute file_type;
++ attribute files_unconfined_type;
+ ')
+
-+ dontaudit $1 file_type:dir_file_class_set write;
++ typeattribute $1 files_unconfined_type;
+')
+
+########################################
+##
-+## Allow domain to delete to all files
++## Create a core files in /
+##
++##
++##
++## Create a core file in /,
++##
++##
+##
+##
-+## Domain to not audit.
++## Domain allowed access.
+##
+##
++##
+#
-+interface(`files_delete_all_non_security_files',`
++interface(`files_manage_root_files',`
+ gen_require(`
-+ attribute non_security_file_type;
++ type root_t;
+ ')
+
-+ allow $1 non_security_file_type:dir del_entry_dir_perms;
-+ allow $1 non_security_file_type:file_class_set delete_file_perms;
++ manage_files_pattern($1, root_t, root_t)
+')
+
+########################################
+##
-+## Transition named content in the var_run_t directory
++## Create a default directory
+##
++##
++##
++## Create a default_t direcrory
++##
++##
+##
-+##
-+## Domain allowed access.
-+##
++##
++## Domain allowed access.
++##
+##
++##
+#
++interface(`files_create_default_dir',`
++ gen_require(`
++ type default_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 default_t:dir create;
+ ')
+
+ ########################################
+ ##
+-## Create a generic lock directory within the run directories
++## Create, default_t objects with an automatic
++## type transition.
+ ##
+ ##
+-##
+-## Domain allowed access
++##
++## Domain allowed access.
+ ##
+ ##
+-##
++##
+ ##
+-## The name of the object being created.
++## The class of the object being created.
+ ##
+ ##
+ #
+-interface(`files_pid_filetrans_lock_dir',`
+- gen_require(`
+- type var_lock_t;
+- ')
++interface(`files_root_filetrans_default',`
++ gen_require(`
++ type root_t, default_t;
++ ')
+
+- files_pid_filetrans($1, var_lock_t, dir, $2)
++ filetrans_pattern($1, root_t, default_t, $2)
+ ')
+
+ ########################################
+ ##
+-## Read and write generic process ID files.
++## manage generic symbolic links
++## in the /var/run directory.
+ ##
+ ##
+ ##
+@@ -6159,20 +8188,18 @@ interface(`files_pid_filetrans_lock_dir',`
+ ##
+ ##
+ #
+-interface(`files_rw_generic_pids',`
++interface(`files_manage_generic_pids_symlinks',`
+ gen_require(`
+- type var_t, var_run_t;
++ type var_run_t;
+ ')
+
+- 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)
++ manage_lnk_files_pattern($1,var_run_t,var_run_t)
+ ')
+
+ ########################################
+ ##
+-## Do not audit attempts to get the attributes of
+-## daemon runtime data files.
++## Do not audit attempts to getattr
++## all tmpfs files.
+ ##
+ ##
+ ##
+@@ -6180,19 +8207,17 @@ interface(`files_rw_generic_pids',`
+ ##
+ ##
+ #
+-interface(`files_dontaudit_getattr_all_pids',`
++interface(`files_dontaudit_getattr_tmpfs_files',`
+ 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 getattr;
+ ')
+
+ ########################################
+ ##
+-## Do not audit attempts to write to daemon runtime data files.
++## Allow read write all tmpfs files
+ ##
+ ##
+ ##
+@@ -6200,18 +8225,17 @@ interface(`files_dontaudit_getattr_all_pids',`
+ ##
+ ##
+ #
+-interface(`files_dontaudit_write_all_pids',`
++interface(`files_rw_tmpfs_files',`
+ gen_require(`
+- attribute pidfile;
++ attribute tmpfsfile;
+ ')
+
+- dontaudit $1 var_run_t:lnk_file read_lnk_file_perms;
+- dontaudit $1 pidfile:file write;
++ allow $1 tmpfsfile:file { read write };
+ ')
+
+ ########################################
+ ##
+-## Do not audit attempts to ioctl daemon runtime data files.
++## Do not audit attempts to read security files
+ ##
+ ##
+ ##
+@@ -6219,41 +8243,43 @@ interface(`files_dontaudit_write_all_pids',`
+ ##
+ ##
+ #
+-interface(`files_dontaudit_ioctl_all_pids',`
++interface(`files_dontaudit_read_security_files',`
+ 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:file read_file_perms;
+ ')
+
+ ########################################
+ ##
+-## Read all process ID files.
++## rw any files inherited from another process
+ ##
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
+-##
++##
++##
++## Object type.
++##
++##
+ #
+-interface(`files_read_all_pids',`
++interface(`files_rw_all_inherited_files',`
+ gen_require(`
+- attribute pidfile;
+- type var_t, var_run_t;
++ attribute 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)
++ 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 IDs.
++## Allow any file point to be the entrypoint of this domain
+ ##
+ ##
+ ##
+@@ -6262,67 +8288,55 @@ interface(`files_read_all_pids',`
+ ##
+ ##
+ #
+-interface(`files_delete_all_pids',`
++interface(`files_entrypoint_all_files',`
+ 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:file entrypoint;
+ ')
+
+ ########################################
+ ##
+-## Delete all process ID directories.
++## Do not audit attempts to rw inherited file perms
++## of non security files.
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_delete_all_pid_dirs',`
++interface(`files_dontaudit_all_non_security_leaks',`
+ gen_require(`
+- attribute pidfile;
+- type var_t, var_run_t;
++ attribute non_security_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)
++ dontaudit $1 non_security_file_type:file_class_set rw_inherited_file_perms;
+ ')
+
+ ########################################
+ ##
+-## Create, read, write and delete all
+-## var_run (pid) content
++## Do not audit attempts to read or write
++## all leaked files.
+ ##
+ ##
+ ##
+-## Domain alloed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_manage_all_pids',`
++interface(`files_dontaudit_leaks',`
+ gen_require(`
+- attribute pidfile;
++ attribute file_type;
+ ')
+
+- manage_dirs_pattern($1, pidfile, pidfile)
+- manage_files_pattern($1, pidfile, pidfile)
+- manage_lnk_files_pattern($1, pidfile, pidfile)
++ dontaudit $1 file_type:file rw_inherited_file_perms;
++ dontaudit $1 file_type:lnk_file { read };
+ ')
+
+ ########################################
+ ##
+-## Mount filesystems on all polyinstantiation
+-## member directories.
++## Allow domain to create_file_ass all types
+ ##
+ ##
+ ##
+@@ -6330,37 +8344,37 @@ interface(`files_manage_all_pids',`
+ ##
+ ##
+ #
+-interface(`files_mounton_all_poly_members',`
++interface(`files_create_as_is_all_files',`
+ gen_require(`
+- attribute polymember;
++ attribute file_type;
++ class kernel_service create_files_as;
+ ')
+
+- allow $1 polymember:dir mounton;
++ allow $1 file_type:kernel_service create_files_as;
+ ')
+
+ ########################################
+ ##
+-## Search the contents of generic spool
+-## directories (/var/spool).
++## Do not audit attempts to check the
++## access on all files
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_search_spool',`
++interface(`files_dontaudit_all_access_check',`
+ gen_require(`
+- type var_t, var_spool_t;
++ attribute file_type;
+ ')
+
+- search_dirs_pattern($1, var_t, var_spool_t)
++ dontaudit $1 file_type:dir_file_class_set audit_access;
+ ')
+
+ ########################################
+ ##
+-## Do not audit attempts to search generic
+-## spool directories.
++## Do not audit attempts to write to all files
+ ##
+ ##
+ ##
+@@ -6368,132 +8382,206 @@ interface(`files_search_spool',`
+ ##
+ ##
+ #
+-interface(`files_dontaudit_search_spool',`
++interface(`files_dontaudit_write_all_files',`
+ 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 write;
+ ')
+
+ ########################################
+ ##
+-## List the contents of generic spool
+-## (/var/spool) directories.
++## Allow domain to delete to all files
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_list_spool',`
++interface(`files_delete_all_non_security_files',`
+ gen_require(`
+- type var_t, var_spool_t;
++ attribute non_security_file_type;
+ ')
+
+- list_dirs_pattern($1, var_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;
+ ')
+
+ ########################################
+ ##
+-## Create, read, write, and delete generic
+-## spool directories (/var/spool).
++## Allow domain to delete to all dirs
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`files_manage_generic_spool_dirs',`
++interface(`files_delete_all_non_security_dirs',`
+ 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 delete_dir_perms };
+ ')
+
+ ########################################
+ ##
+-## Read generic spool files.
++## Transition named content in the var_run_t directory
+ ##
+ ##
+ ##
+-## Domain allowed access.
++## Domain allowed access.
+ ##
+ ##
+ #
+-interface(`files_read_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;
+ type tmp_t;
+ type var_t;
+ type var_run_t;
++ type var_lock_t;
+ type tmp_t;
-+ ')
-+
+ ')
+
+- list_dirs_pattern($1, var_t, var_spool_t)
+- read_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")
@@ -12459,6 +15242,8 @@ index 64ff4d7..2b01383 100644
+ files_root_filetrans($1, usr_t, dir, "emul")
+ files_root_filetrans($1, var_t, dir, "srv")
+ files_root_filetrans($1, var_run_t, dir, "run")
++ files_root_filetrans($1, var_run_t, lnk_file, "run")
++ files_root_filetrans($1, var_lock_t, lnk_file, "lock")
+ files_root_filetrans($1, tmp_t, dir, "sandbox")
+ files_root_filetrans($1, tmp_t, dir, "tmp")
+ files_root_filetrans($1, var_t, dir, "nsr")
@@ -12481,13 +15266,17 @@ index 64ff4d7..2b01383 100644
+ files_etc_filetrans_etc_runtime($1, file, "iptables.save")
+ files_tmp_filetrans($1, tmp_t, dir, "tmp-inst")
+ files_var_filetrans($1, tmp_t, dir, "tmp")
-+')
-+
-+########################################
-+##
++ files_var_filetrans($1, var_run_t, dir, "run")
+ ')
+
+ ########################################
+ ##
+-## Create, read, write, and delete generic
+-## spool files.
+## Make the specified type a
+## base file.
-+##
+ ##
+-##
+##
+##
+## Identify file type as base file type. Tools will use this attribute,
@@ -12495,35 +15284,51 @@ index 64ff4d7..2b01383 100644
+##
+##
+##
-+##
+ ##
+-## Domain allowed access.
+## Type to be used as a base files.
-+##
-+##
+ ##
+ ##
+##
-+#
+ #
+-interface(`files_manage_generic_spool',`
+interface(`files_base_file',`
-+ gen_require(`
+ gen_require(`
+- type var_t, var_spool_t;
+ attribute base_file_type;
-+ ')
+ ')
+-
+- allow $1 var_t:dir search_dir_perms;
+- manage_files_pattern($1, var_spool_t, var_spool_t)
+ files_type($1)
+ typeattribute $1 base_file_type;
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Create objects in the spool directory
+-## with a private type with a type transition.
+## Make the specified type a
+## base read only file.
-+##
+ ##
+-##
+-##
+-## Domain allowed access.
+-##
+-##
+-##
+##
+##
+## Make the specified type readable for all domains.
+##
+##
+##
-+##
+ ##
+-## Type to which the created node will be transitioned.
+## Type to be used as a base read only files.
-+##
-+##
+ ##
+ ##
+-##
+##
+#
+interface(`files_ro_base_file',`
@@ -12539,10 +15344,13 @@ index 64ff4d7..2b01383 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',`
@@ -12560,58 +15368,108 @@ index 64ff4d7..2b01383 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.
-+##
-+##
-+#
+ ##
+ ##
+ ##
+@@ -6501,53 +8589,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.
-+##
-+##
-+#
+ ##
+ ##
+ ##
+@@ -6555,10 +8607,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
-index 148d87a..ccbcb66 100644
+index 148d87a..b5a89ba 100644
--- a/policy/modules/kernel/files.te
+++ b/policy/modules/kernel/files.te
@@ -5,12 +5,16 @@ policy_module(files, 1.17.5)
@@ -12631,7 +15489,7 @@ index 148d87a..ccbcb66 100644
# For labeling types that are to be polyinstantiated
attribute polydir;
-@@ -48,28 +52,45 @@ attribute usercanread;
+@@ -48,31 +52,46 @@ attribute usercanread;
#
type boot_t;
files_mountpoint(boot_t)
@@ -12675,11 +15533,15 @@ index 148d87a..ccbcb66 100644
# generated during initialization.
#
-type etc_runtime_t;
+-files_type(etc_runtime_t)
+-#Temporarily in policy until FC5 dissappears
+-typealias etc_runtime_t alias firstboot_rw_t;
+type etc_runtime_t, configfile;
- files_type(etc_runtime_t)
- #Temporarily in policy until FC5 dissappears
- typealias etc_runtime_t alias firstboot_rw_t;
-@@ -81,6 +102,7 @@ typealias etc_runtime_t alias firstboot_rw_t;
++files_ro_base_file(etc_runtime_t)
+
+ #
+ # file_t is the default type of a file that has not yet been
+@@ -81,6 +100,7 @@ typealias etc_runtime_t alias firstboot_rw_t;
#
type file_t;
files_mountpoint(file_t)
@@ -12687,7 +15549,7 @@ index 148d87a..ccbcb66 100644
kernel_rootfs_mountpoint(file_t)
sid file gen_context(system_u:object_r:file_t,s0)
-@@ -89,6 +111,7 @@ sid file gen_context(system_u:object_r:file_t,s0)
+@@ -89,6 +109,7 @@ sid file gen_context(system_u:object_r:file_t,s0)
# are created
#
type home_root_t;
@@ -12695,7 +15557,7 @@ index 148d87a..ccbcb66 100644
files_mountpoint(home_root_t)
files_poly_parent(home_root_t)
-@@ -96,12 +119,13 @@ files_poly_parent(home_root_t)
+@@ -96,12 +117,13 @@ files_poly_parent(home_root_t)
# lost_found_t is the type for the lost+found directories.
#
type lost_found_t;
@@ -12710,7 +15572,7 @@ index 148d87a..ccbcb66 100644
files_mountpoint(mnt_t)
#
-@@ -123,6 +147,7 @@ files_type(readable_t)
+@@ -123,6 +145,7 @@ files_type(readable_t)
# root_t is the type for rootfs and the root directory.
#
type root_t;
@@ -12718,7 +15580,7 @@ index 148d87a..ccbcb66 100644
files_mountpoint(root_t)
files_poly_parent(root_t)
kernel_rootfs_mountpoint(root_t)
-@@ -133,52 +158,63 @@ genfscon rootfs / gen_context(system_u:object_r:root_t,s0)
+@@ -133,52 +156,63 @@ genfscon rootfs / gen_context(system_u:object_r:root_t,s0)
#
type src_t;
files_mountpoint(src_t)
@@ -12782,7 +15644,7 @@ index 148d87a..ccbcb66 100644
files_pid_file(var_run_t)
files_mountpoint(var_run_t)
-@@ -186,7 +222,9 @@ files_mountpoint(var_run_t)
+@@ -186,7 +220,9 @@ files_mountpoint(var_run_t)
# var_spool_t is the type of /var/spool
#
type var_spool_t;
@@ -12792,7 +15654,7 @@ index 148d87a..ccbcb66 100644
########################################
#
-@@ -225,10 +263,11 @@ fs_associate_tmpfs(tmpfsfile)
+@@ -225,10 +261,11 @@ fs_associate_tmpfs(tmpfsfile)
# Create/access any file in a labeled filesystem;
allow files_unconfined_type file_type:{ file chr_file } ~execmod;
allow files_unconfined_type file_type:{ dir lnk_file sock_file fifo_file blk_file } *;
@@ -14256,7 +17118,7 @@ index 8416beb..c6cd3eb 100644
+ fs_tmpfs_filetrans($1, cgroup_t, lnk_file, "cpuacct")
+')
diff --git a/policy/modules/kernel/filesystem.te b/policy/modules/kernel/filesystem.te
-index 9e603f5..1198b51 100644
+index 9e603f5..3b8dd74 100644
--- a/policy/modules/kernel/filesystem.te
+++ b/policy/modules/kernel/filesystem.te
@@ -32,8 +32,11 @@ fs_use_xattr gpfs gen_context(system_u:object_r:fs_t,s0);
@@ -14279,12 +17141,13 @@ index 9e603f5..1198b51 100644
type bdev_t;
fs_type(bdev_t)
-@@ -63,12 +67,17 @@ fs_type(binfmt_misc_fs_t)
+@@ -63,12 +67,18 @@ fs_type(binfmt_misc_fs_t)
files_mountpoint(binfmt_misc_fs_t)
genfscon binfmt_misc / gen_context(system_u:object_r:binfmt_misc_fs_t,s0)
+type oracleasmfs_t;
+fs_type(oracleasmfs_t)
++dev_node(oracleasmfs_t)
+files_mountpoint(oracleasmfs_t)
+genfscon oracleasmfs / gen_context(system_u:object_r:oracleasmfs_t,s0)
+
@@ -14298,7 +17161,7 @@ index 9e603f5..1198b51 100644
fs_type(cgroup_t)
files_type(cgroup_t)
files_mountpoint(cgroup_t)
-@@ -89,6 +98,11 @@ fs_noxattr_type(ecryptfs_t)
+@@ -89,6 +99,11 @@ fs_noxattr_type(ecryptfs_t)
files_mountpoint(ecryptfs_t)
genfscon ecryptfs / gen_context(system_u:object_r:ecryptfs_t,s0)
@@ -14310,7 +17173,7 @@ index 9e603f5..1198b51 100644
type futexfs_t;
fs_type(futexfs_t)
genfscon futexfs / gen_context(system_u:object_r:futexfs_t,s0)
-@@ -97,6 +111,7 @@ type hugetlbfs_t;
+@@ -97,6 +112,7 @@ type hugetlbfs_t;
fs_type(hugetlbfs_t)
files_mountpoint(hugetlbfs_t)
fs_use_trans hugetlbfs gen_context(system_u:object_r:hugetlbfs_t,s0);
@@ -14318,7 +17181,7 @@ index 9e603f5..1198b51 100644
type ibmasmfs_t;
fs_type(ibmasmfs_t)
-@@ -119,12 +134,17 @@ genfscon mvfs / gen_context(system_u:object_r:mvfs_t,s0)
+@@ -119,12 +135,17 @@ genfscon mvfs / gen_context(system_u:object_r:mvfs_t,s0)
type nfsd_fs_t;
fs_type(nfsd_fs_t)
@@ -14336,7 +17199,7 @@ index 9e603f5..1198b51 100644
type ramfs_t;
fs_type(ramfs_t)
files_mountpoint(ramfs_t)
-@@ -145,11 +165,6 @@ fs_type(spufs_t)
+@@ -145,11 +166,6 @@ fs_type(spufs_t)
genfscon spufs / gen_context(system_u:object_r:spufs_t,s0)
files_mountpoint(spufs_t)
@@ -14348,7 +17211,7 @@ index 9e603f5..1198b51 100644
type sysv_t;
fs_noxattr_type(sysv_t)
files_mountpoint(sysv_t)
-@@ -167,6 +182,8 @@ type vxfs_t;
+@@ -167,6 +183,8 @@ type vxfs_t;
fs_noxattr_type(vxfs_t)
files_mountpoint(vxfs_t)
genfscon vxfs / gen_context(system_u:object_r:vxfs_t,s0)
@@ -14357,7 +17220,7 @@ index 9e603f5..1198b51 100644
#
# tmpfs_t is the type for tmpfs filesystems
-@@ -176,6 +193,8 @@ fs_type(tmpfs_t)
+@@ -176,6 +194,8 @@ fs_type(tmpfs_t)
files_type(tmpfs_t)
files_mountpoint(tmpfs_t)
files_poly_parent(tmpfs_t)
@@ -14366,7 +17229,7 @@ index 9e603f5..1198b51 100644
# Use a transition SID based on the allocating task SID and the
# filesystem SID to label inodes in the following filesystem types,
-@@ -255,6 +274,8 @@ genfscon udf / gen_context(system_u:object_r:iso9660_t,s0)
+@@ -255,6 +275,8 @@ genfscon udf / gen_context(system_u:object_r:iso9660_t,s0)
type removable_t;
allow removable_t noxattrfs:filesystem associate;
fs_noxattr_type(removable_t)
@@ -14375,7 +17238,7 @@ index 9e603f5..1198b51 100644
files_mountpoint(removable_t)
#
-@@ -274,6 +295,7 @@ genfscon ncpfs / gen_context(system_u:object_r:nfs_t,s0)
+@@ -274,6 +296,7 @@ genfscon ncpfs / gen_context(system_u:object_r:nfs_t,s0)
genfscon reiserfs / gen_context(system_u:object_r:nfs_t,s0)
genfscon panfs / gen_context(system_u:object_r:nfs_t,s0)
genfscon gadgetfs / gen_context(system_u:object_r:nfs_t,s0)
@@ -14392,7 +17255,7 @@ index 7be4ddf..f7021a0 100644
+
+/sys/class/net/ib.* gen_context(system_u:object_r:sysctl_net_t,s0)
diff --git a/policy/modules/kernel/kernel.if b/policy/modules/kernel/kernel.if
-index 649e458..d47750f 100644
+index 649e458..3270372 100644
--- a/policy/modules/kernel/kernel.if
+++ b/policy/modules/kernel/kernel.if
@@ -286,7 +286,7 @@ interface(`kernel_rw_unix_dgram_sockets',`
@@ -14404,6 +17267,16 @@ index 649e458..d47750f 100644
')
########################################
+@@ -762,8 +762,8 @@ interface(`kernel_manage_debugfs',`
+ ')
+
+ manage_files_pattern($1, debugfs_t, debugfs_t)
++ manage_dirs_pattern($1,debugfs_t, debugfs_t)
+ read_lnk_files_pattern($1, debugfs_t, debugfs_t)
+- list_dirs_pattern($1, debugfs_t, debugfs_t)
+ ')
+
+ ########################################
@@ -786,6 +786,24 @@ interface(`kernel_mount_kvmfs',`
########################################
@@ -14470,7 +17343,59 @@ index 649e458..d47750f 100644
')
########################################
-@@ -1477,6 +1510,24 @@ interface(`kernel_dontaudit_list_all_proc',`
+@@ -1025,6 +1058,25 @@ interface(`kernel_write_proc_files',`
+
+ ########################################
+ ##
++## Do not audit attempts to check the
++## access on generic proc entries.
++##
++##
++##
++## Domain to not audit.
++##
++##
++#
++interface(`kernel_dontaudit_access_check_proc',`
++ gen_require(`
++ type proc_t;
++ ')
++
++ dontaudit $1 proc_t:dir_file_class_set audit_access;
++')
++
++########################################
++##
+ ## Do not audit attempts by caller to
+ ## read system state information in proc.
+ ##
+@@ -1208,6 +1260,25 @@ interface(`kernel_read_messages',`
+
+ ########################################
+ ##
++## Allow caller to read kernel messages
++## using the /proc/kmsg interface.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`kernel_mounton_messages',`
++ gen_require(`
++ type proc_kmsg_t, proc_t;
++ ')
++
++ allow $1 proc_kmsg_t:dir mounton;
++')
++
++########################################
++##
+ ## Allow caller to get the attributes of kernel message
+ ## interface (/proc/kmsg).
+ ##
+@@ -1477,6 +1548,24 @@ interface(`kernel_dontaudit_list_all_proc',`
########################################
##
@@ -14495,7 +17420,7 @@ index 649e458..d47750f 100644
## Do not audit attempts by caller to search
## the base directory of sysctls.
##
-@@ -2085,7 +2136,7 @@ interface(`kernel_dontaudit_list_all_sysctls',`
+@@ -2085,7 +2174,7 @@ interface(`kernel_dontaudit_list_all_sysctls',`
')
dontaudit $1 sysctl_type:dir list_dir_perms;
@@ -14504,7 +17429,7 @@ index 649e458..d47750f 100644
')
########################################
-@@ -2282,6 +2333,25 @@ interface(`kernel_list_unlabeled',`
+@@ -2282,6 +2371,25 @@ interface(`kernel_list_unlabeled',`
########################################
##
@@ -14530,7 +17455,7 @@ index 649e458..d47750f 100644
## Read the process state (/proc/pid) of all unlabeled_t.
##
##
-@@ -2306,7 +2376,7 @@ interface(`kernel_read_unlabeled_state',`
+@@ -2306,7 +2414,7 @@ interface(`kernel_read_unlabeled_state',`
##
##
##
@@ -14539,7 +17464,7 @@ index 649e458..d47750f 100644
##
##
#
-@@ -2488,6 +2558,24 @@ interface(`kernel_rw_unlabeled_blk_files',`
+@@ -2488,6 +2596,24 @@ interface(`kernel_rw_unlabeled_blk_files',`
########################################
##
@@ -14564,7 +17489,7 @@ index 649e458..d47750f 100644
## Do not audit attempts by caller to get attributes for
## unlabeled character devices.
##
-@@ -2525,6 +2613,24 @@ interface(`kernel_relabelfrom_unlabeled_dirs',`
+@@ -2525,6 +2651,24 @@ interface(`kernel_relabelfrom_unlabeled_dirs',`
########################################
##
@@ -14589,7 +17514,7 @@ index 649e458..d47750f 100644
## Allow caller to relabel unlabeled files.
##
##
-@@ -2632,7 +2738,7 @@ interface(`kernel_sendrecv_unlabeled_association',`
+@@ -2632,7 +2776,7 @@ interface(`kernel_sendrecv_unlabeled_association',`
allow $1 unlabeled_t:association { sendto recvfrom };
# temporary hack until labeling on packets is supported
@@ -14598,7 +17523,7 @@ index 649e458..d47750f 100644
')
########################################
-@@ -2670,6 +2776,24 @@ interface(`kernel_dontaudit_sendrecv_unlabeled_association',`
+@@ -2670,6 +2814,24 @@ interface(`kernel_dontaudit_sendrecv_unlabeled_association',`
########################################
##
@@ -14623,7 +17548,7 @@ index 649e458..d47750f 100644
## Receive TCP packets from an unlabeled connection.
##
##
-@@ -2697,6 +2821,25 @@ interface(`kernel_tcp_recvfrom_unlabeled',`
+@@ -2697,6 +2859,25 @@ interface(`kernel_tcp_recvfrom_unlabeled',`
########################################
##
@@ -14649,7 +17574,7 @@ index 649e458..d47750f 100644
## Do not audit attempts to receive TCP packets from an unlabeled
## connection.
##
-@@ -2806,6 +2949,33 @@ interface(`kernel_raw_recvfrom_unlabeled',`
+@@ -2806,6 +2987,33 @@ interface(`kernel_raw_recvfrom_unlabeled',`
allow $1 unlabeled_t:rawip_socket recvfrom;
')
@@ -14683,7 +17608,7 @@ index 649e458..d47750f 100644
########################################
##
-@@ -2961,6 +3131,24 @@ interface(`kernel_relabelfrom_unlabeled_database',`
+@@ -2961,6 +3169,24 @@ interface(`kernel_relabelfrom_unlabeled_database',`
########################################
##
@@ -14708,7 +17633,7 @@ index 649e458..d47750f 100644
## Unconfined access to kernel module resources.
##
##
-@@ -2975,5 +3163,300 @@ interface(`kernel_unconfined',`
+@@ -2975,5 +3201,300 @@ interface(`kernel_unconfined',`
')
typeattribute $1 kern_unconfined;
@@ -15011,7 +17936,7 @@ index 649e458..d47750f 100644
+ list_dirs_pattern($1, sysctl_vm_overcommit_t, sysctl_vm_overcommit_t)
')
diff --git a/policy/modules/kernel/kernel.te b/policy/modules/kernel/kernel.te
-index 6fac350..5a087a7 100644
+index 6fac350..cdc610d 100644
--- a/policy/modules/kernel/kernel.te
+++ b/policy/modules/kernel/kernel.te
@@ -25,6 +25,9 @@ attribute kern_unconfined;
@@ -15192,18 +18117,19 @@ index 6fac350..5a087a7 100644
')
optional_policy(`
-@@ -312,6 +368,10 @@ optional_policy(`
+@@ -312,6 +368,11 @@ optional_policy(`
')
optional_policy(`
+ plymouthd_create_log(kernel_t)
++ plymouthd_filetrans_named_content(kernel_t)
+')
+
+optional_policy(`
# nfs kernel server needs kernel UDP access. It is less risky and painful
# to just give it everything.
allow kernel_t self:tcp_socket create_stream_socket_perms;
-@@ -332,9 +392,6 @@ optional_policy(`
+@@ -332,9 +393,6 @@ optional_policy(`
sysnet_read_config(kernel_t)
@@ -15213,7 +18139,7 @@ index 6fac350..5a087a7 100644
rpc_udp_rw_nfs_sockets(kernel_t)
tunable_policy(`nfs_export_all_ro',`
-@@ -343,9 +400,7 @@ optional_policy(`
+@@ -343,9 +401,7 @@ optional_policy(`
fs_read_noxattr_fs_files(kernel_t)
fs_read_noxattr_fs_symlinks(kernel_t)
@@ -15224,7 +18150,7 @@ index 6fac350..5a087a7 100644
')
tunable_policy(`nfs_export_all_rw',`
-@@ -354,7 +409,7 @@ optional_policy(`
+@@ -354,7 +410,7 @@ optional_policy(`
fs_read_noxattr_fs_files(kernel_t)
fs_read_noxattr_fs_symlinks(kernel_t)
@@ -15233,7 +18159,7 @@ index 6fac350..5a087a7 100644
')
')
-@@ -367,6 +422,15 @@ optional_policy(`
+@@ -367,6 +423,15 @@ optional_policy(`
unconfined_domain_noaudit(kernel_t)
')
@@ -15249,7 +18175,7 @@ index 6fac350..5a087a7 100644
########################################
#
# Unlabeled process local policy
-@@ -409,4 +473,26 @@ allow kern_unconfined unlabeled_t:dir_file_class_set *;
+@@ -409,4 +474,26 @@ allow kern_unconfined unlabeled_t:dir_file_class_set *;
allow kern_unconfined unlabeled_t:filesystem *;
allow kern_unconfined unlabeled_t:association *;
allow kern_unconfined unlabeled_t:packet *;
@@ -15763,10 +18689,18 @@ index 522ab32..cb9c3a2 100644
')
}
diff --git a/policy/modules/kernel/storage.fc b/policy/modules/kernel/storage.fc
-index 54f1827..cc2de1a 100644
+index 54f1827..39faa3f 100644
--- a/policy/modules/kernel/storage.fc
+++ b/policy/modules/kernel/storage.fc
-@@ -23,12 +23,15 @@
+@@ -7,6 +7,7 @@
+ /dev/n?tpqic[12].* -c gen_context(system_u:object_r:tape_device_t,s0)
+ /dev/[shmxv]d[^/]* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
+ /dev/aztcd -b gen_context(system_u:object_r:removable_device_t,s0)
++/dev/bcache[0-9]+ -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
+ /dev/bpcd -b gen_context(system_u:object_r:removable_device_t,s0)
+ /dev/bsg/.+ -c gen_context(system_u:object_r:scsi_generic_device_t,s0)
+ /dev/cdu.* -b gen_context(system_u:object_r:removable_device_t,s0)
+@@ -23,12 +24,15 @@
/dev/ht[0-1] -b gen_context(system_u:object_r:tape_device_t,s0)
/dev/hwcdrom -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/initrd -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
@@ -15783,7 +18717,7 @@ index 54f1827..cc2de1a 100644
/dev/mmcblk.* -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/mspblk.* -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/mtd.* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
-@@ -51,7 +54,8 @@ ifdef(`distro_redhat', `
+@@ -51,7 +55,8 @@ ifdef(`distro_redhat', `
/dev/sjcd -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/sonycd -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/tape.* -c gen_context(system_u:object_r:tape_device_t,s0)
@@ -15793,7 +18727,7 @@ index 54f1827..cc2de1a 100644
/dev/ub[a-z][^/]+ -b gen_context(system_u:object_r:removable_device_t,mls_systemhigh)
/dev/ubd[^/]* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/dev/vd[^/]* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
-@@ -81,3 +85,6 @@ ifdef(`distro_redhat', `
+@@ -81,3 +86,6 @@ ifdef(`distro_redhat', `
/lib/udev/devices/loop.* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/lib/udev/devices/fuse -c gen_context(system_u:object_r:fuse_device_t,s0)
@@ -15801,7 +18735,7 @@ index 54f1827..cc2de1a 100644
+/usr/lib/udev/devices/loop.* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
+/usr/lib/udev/devices/fuse -c gen_context(system_u:object_r:fuse_device_t,s0)
diff --git a/policy/modules/kernel/storage.if b/policy/modules/kernel/storage.if
-index 1700ef2..38b597e 100644
+index 1700ef2..13caedd 100644
--- a/policy/modules/kernel/storage.if
+++ b/policy/modules/kernel/storage.if
@@ -22,6 +22,26 @@ interface(`storage_getattr_fixed_disk_dev',`
@@ -15930,7 +18864,7 @@ index 1700ef2..38b597e 100644
########################################
##
## Allow the caller to directly read
-@@ -808,3 +892,401 @@ interface(`storage_unconfined',`
+@@ -808,3 +892,452 @@ interface(`storage_unconfined',`
typeattribute $1 storage_unconfined_type;
')
@@ -16031,6 +18965,16 @@ index 1700ef2..38b597e 100644
+ dev_filetrans($1, removable_device_t, blk_file, "cm207")
+ dev_filetrans($1, removable_device_t, blk_file, "cm208")
+ dev_filetrans($1, removable_device_t, blk_file, "cm209")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache0")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache1")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache2")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache3")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache4")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache5")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache6")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache7")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache8")
++ dev_filetrans($1, fixed_disk_device_t, blk_file, "bcache9")
+ dev_filetrans($1, fixed_disk_device_t, blk_file, "md0")
+ dev_filetrans($1, fixed_disk_device_t, blk_file, "md1")
+ dev_filetrans($1, fixed_disk_device_t, blk_file, "md2")
@@ -16265,6 +19209,47 @@ index 1700ef2..38b597e 100644
+ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg7")
+ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg8")
+ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg9")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg10")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg11")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg12")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg13")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg14")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg15")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg16")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg17")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg18")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg19")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg20")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg21")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg22")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg23")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg24")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg25")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg26")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg27")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg28")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg29")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg30")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg31")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg32")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg33")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg34")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg35")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg36")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg37")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg38")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg39")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg40")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg41")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg42")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg43")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg44")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg45")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg46")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg47")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg48")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg49")
++ dev_filetrans($1, scsi_generic_device_t, chr_file, "sg50")
+ dev_filetrans($1, removable_device_t, blk_file, "sr0")
+ dev_filetrans($1, removable_device_t, blk_file, "sr1")
+ dev_filetrans($1, removable_device_t, blk_file, "sr2")
@@ -16347,16 +19332,17 @@ index 156c333..02f5a3c 100644
+ dev_manage_generic_blk_files(fixed_disk_raw_write)
+')
diff --git a/policy/modules/kernel/terminal.fc b/policy/modules/kernel/terminal.fc
-index 7d45d15..22c9cfe 100644
+index 7d45d15..a3e5a1e 100644
--- a/policy/modules/kernel/terminal.fc
+++ b/policy/modules/kernel/terminal.fc
-@@ -14,11 +14,12 @@
+@@ -14,11 +14,13 @@
/dev/ip2[^/]* -c gen_context(system_u:object_r:tty_device_t,s0)
/dev/isdn.* -c gen_context(system_u:object_r:tty_device_t,s0)
/dev/ptmx -c gen_context(system_u:object_r:ptmx_t,s0)
-/dev/pts/ptmx -c gen_context(system_u:object_r:ptmx_t,s0)
/dev/rfcomm[0-9]+ -c gen_context(system_u:object_r:tty_device_t,s0)
/dev/slamr[0-9]+ -c gen_context(system_u:object_r:tty_device_t,s0)
++/dev/sclp_line[0-9]+ -c gen_context(system_u:object_r:tty_device_t,s0)
/dev/tty -c gen_context(system_u:object_r:devtty_t,s0)
/dev/ttySG.* -c gen_context(system_u:object_r:tty_device_t,s0)
+/dev/ttyUSB[0-9]+ -c gen_context(system_u:object_r:usbtty_device_t,s0)
@@ -16364,7 +19350,7 @@ index 7d45d15..22c9cfe 100644
/dev/xvc[^/]* -c gen_context(system_u:object_r:tty_device_t,s0)
/dev/pty/.* -c gen_context(system_u:object_r:bsdpty_device_t,s0)
-@@ -41,3 +42,7 @@ ifdef(`distro_gentoo',`
+@@ -41,3 +43,7 @@ ifdef(`distro_gentoo',`
# used by init scripts to initally populate udev /dev
/lib/udev/devices/console -c gen_context(system_u:object_r:console_device_t,s0)
')
@@ -16373,7 +19359,7 @@ index 7d45d15..22c9cfe 100644
+
+/usr/lib/udev/devices/pts -d gen_context(system_u:object_r:devpts_t,s0-mls_systemhigh)
diff --git a/policy/modules/kernel/terminal.if b/policy/modules/kernel/terminal.if
-index 771bce1..5bbf50b 100644
+index 771bce1..e3722ab 100644
--- a/policy/modules/kernel/terminal.if
+++ b/policy/modules/kernel/terminal.if
@@ -124,7 +124,7 @@ interface(`term_user_tty',`
@@ -16600,7 +19586,33 @@ index 771bce1..5bbf50b 100644
##
##
#
-@@ -1259,7 +1376,47 @@ interface(`term_dontaudit_use_unallocated_ttys',`
+@@ -1165,6 +1282,25 @@ interface(`term_relabel_unallocated_ttys',`
+
+ ########################################
+ ##
++## Mounton unallocated tty device nodes.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`term_mounton_unallocated_ttys',`
++ gen_require(`
++ type tty_device_t;
++ ')
++
++ allow $1 tty_device_t:chr_file mounton;
++')
++
++########################################
++##
+ ## Relabel from all user tty types to
+ ## the unallocated tty type.
+ ##
+@@ -1259,7 +1395,47 @@ interface(`term_dontaudit_use_unallocated_ttys',`
type tty_device_t;
')
@@ -16649,7 +19661,7 @@ index 771bce1..5bbf50b 100644
')
########################################
-@@ -1275,11 +1432,13 @@ interface(`term_dontaudit_use_unallocated_ttys',`
+@@ -1275,11 +1451,13 @@ interface(`term_dontaudit_use_unallocated_ttys',`
#
interface(`term_getattr_all_ttys',`
gen_require(`
@@ -16663,7 +19675,7 @@ index 771bce1..5bbf50b 100644
')
########################################
-@@ -1296,10 +1455,12 @@ interface(`term_getattr_all_ttys',`
+@@ -1296,10 +1474,12 @@ interface(`term_getattr_all_ttys',`
interface(`term_dontaudit_getattr_all_ttys',`
gen_require(`
attribute ttynode;
@@ -16676,7 +19688,7 @@ index 771bce1..5bbf50b 100644
')
########################################
-@@ -1377,7 +1538,27 @@ interface(`term_use_all_ttys',`
+@@ -1377,7 +1557,27 @@ interface(`term_use_all_ttys',`
')
dev_list_all_dev_nodes($1)
@@ -16705,7 +19717,7 @@ index 771bce1..5bbf50b 100644
')
########################################
-@@ -1396,7 +1577,7 @@ interface(`term_dontaudit_use_all_ttys',`
+@@ -1396,7 +1596,7 @@ interface(`term_dontaudit_use_all_ttys',`
attribute ttynode;
')
@@ -16714,7 +19726,7 @@ index 771bce1..5bbf50b 100644
')
########################################
-@@ -1504,7 +1685,7 @@ interface(`term_use_all_user_ttys',`
+@@ -1504,7 +1704,7 @@ interface(`term_use_all_user_ttys',`
##
##
##
@@ -16723,7 +19735,7 @@ index 771bce1..5bbf50b 100644
##
##
#
-@@ -1512,3 +1693,436 @@ interface(`term_dontaudit_use_all_user_ttys',`
+@@ -1512,3 +1712,436 @@ interface(`term_dontaudit_use_all_user_ttys',`
refpolicywarn(`$0() is deprecated, use term_dontaudit_use_all_ttys() instead.')
term_dontaudit_use_all_ttys($1)
')
@@ -17219,7 +20231,7 @@ index 0000000..48caabc
+allow domain unlabeled_t:packet { send recv };
+
diff --git a/policy/modules/roles/auditadm.te b/policy/modules/roles/auditadm.te
-index 834a065..c769f81 100644
+index 834a065..ff93697 100644
--- a/policy/modules/roles/auditadm.te
+++ b/policy/modules/roles/auditadm.te
@@ -7,7 +7,7 @@ policy_module(auditadm, 2.2.0)
@@ -17231,10 +20243,12 @@ index 834a065..c769f81 100644
########################################
#
-@@ -22,16 +22,21 @@ corecmd_exec_shell(auditadm_t)
+@@ -22,16 +22,23 @@ corecmd_exec_shell(auditadm_t)
domain_kill_all_domains(auditadm_t)
++mls_file_read_all_levels(auditadm_t)
++
+selinux_read_policy(auditadm_t)
+
logging_send_syslog_msg(auditadm_t)
@@ -17274,10 +20288,10 @@ index 3a45a3e..7499f24 100644
+allow logadm_t self:capability { dac_override dac_read_search kill sys_nice };
logging_admin(logadm_t, logadm_r)
diff --git a/policy/modules/roles/secadm.te b/policy/modules/roles/secadm.te
-index da11120..d67bcca 100644
+index da11120..621ec5a 100644
--- a/policy/modules/roles/secadm.te
+++ b/policy/modules/roles/secadm.te
-@@ -7,8 +7,10 @@ policy_module(secadm, 2.4.0)
+@@ -7,8 +7,11 @@ policy_module(secadm, 2.4.0)
role secadm_r;
@@ -17287,10 +20301,24 @@ index da11120..d67bcca 100644
+userdom_security_admin(secadm_t, secadm_r)
+userdom_inherit_append_admin_home_files(secadm_t)
+userdom_read_admin_home_files(secadm_t)
++userdom_manage_tmp_role(secadm_r, secadm_t)
########################################
#
-@@ -30,8 +32,7 @@ mls_file_upgrade(secadm_t)
+@@ -17,9 +20,12 @@ userdom_security_admin_template(secadm_t, secadm_r)
+
+ allow secadm_t self:capability { dac_read_search dac_override };
+
++kernel_read_system_state(secadm_t)
++
+ corecmd_exec_shell(secadm_t)
+
+ dev_relabel_all_dev_nodes(secadm_t)
++dev_read_urand(secadm_t)
+
+ domain_obj_id_change_exemption(secadm_t)
+
+@@ -30,8 +36,7 @@ mls_file_upgrade(secadm_t)
mls_file_downgrade(secadm_t)
auth_role(secadm_r, secadm_t)
@@ -17311,7 +20339,7 @@ index 234a940..d340f20 100644
########################################
##
diff --git a/policy/modules/roles/staff.te b/policy/modules/roles/staff.te
-index 5da7870..4f46291 100644
+index 5da7870..5247b99 100644
--- a/policy/modules/roles/staff.te
+++ b/policy/modules/roles/staff.te
@@ -8,12 +8,71 @@ policy_module(staff, 2.3.1)
@@ -17386,7 +20414,7 @@ index 5da7870..4f46291 100644
optional_policy(`
apache_role(staff_r, staff_t)
')
-@@ -23,11 +82,110 @@ optional_policy(`
+@@ -23,11 +82,114 @@ optional_policy(`
')
optional_policy(`
@@ -17431,6 +20459,10 @@ index 5da7870..4f46291 100644
+')
+
+optional_policy(`
++ freqset_run(staff_t, staff_r)
++')
++
++optional_policy(`
+ gnome_role(staff_r, staff_t)
+')
+
@@ -17498,7 +20530,7 @@ index 5da7870..4f46291 100644
')
optional_policy(`
-@@ -35,15 +193,31 @@ optional_policy(`
+@@ -35,15 +197,31 @@ optional_policy(`
')
optional_policy(`
@@ -17532,7 +20564,7 @@ index 5da7870..4f46291 100644
')
optional_policy(`
-@@ -52,10 +226,55 @@ optional_policy(`
+@@ -52,11 +230,61 @@ optional_policy(`
')
optional_policy(`
@@ -17577,6 +20609,10 @@ index 5da7870..4f46291 100644
')
optional_policy(`
++ vmtools_run_helper(staff_t, staff_r)
++')
++
++optional_policy(`
+ vnstatd_read_lib_files(staff_t)
+')
+
@@ -17586,9 +20622,11 @@ index 5da7870..4f46291 100644
+
+optional_policy(`
xserver_role(staff_r, staff_t)
++ xserver_read_log(staff_t)
')
-@@ -65,10 +284,6 @@ ifndef(`distro_redhat',`
+ ifndef(`distro_redhat',`
+@@ -65,10 +293,6 @@ ifndef(`distro_redhat',`
')
optional_policy(`
@@ -17599,7 +20637,7 @@ index 5da7870..4f46291 100644
cdrecord_role(staff_r, staff_t)
')
-@@ -78,10 +293,6 @@ ifndef(`distro_redhat',`
+@@ -78,10 +302,6 @@ ifndef(`distro_redhat',`
optional_policy(`
dbus_role_template(staff, staff_r, staff_t)
@@ -17610,7 +20648,7 @@ index 5da7870..4f46291 100644
')
optional_policy(`
-@@ -101,10 +312,6 @@ ifndef(`distro_redhat',`
+@@ -101,10 +321,6 @@ ifndef(`distro_redhat',`
')
optional_policy(`
@@ -17621,7 +20659,7 @@ index 5da7870..4f46291 100644
java_role(staff_r, staff_t)
')
-@@ -125,10 +332,6 @@ ifndef(`distro_redhat',`
+@@ -125,10 +341,6 @@ ifndef(`distro_redhat',`
')
optional_policy(`
@@ -17632,7 +20670,7 @@ index 5da7870..4f46291 100644
pyzor_role(staff_r, staff_t)
')
-@@ -141,10 +344,6 @@ ifndef(`distro_redhat',`
+@@ -141,10 +353,6 @@ ifndef(`distro_redhat',`
')
optional_policy(`
@@ -17643,7 +20681,7 @@ index 5da7870..4f46291 100644
spamassassin_role(staff_r, staff_t)
')
-@@ -176,3 +375,22 @@ ifndef(`distro_redhat',`
+@@ -176,3 +384,22 @@ ifndef(`distro_redhat',`
wireshark_role(staff_r, staff_t)
')
')
@@ -17695,7 +20733,7 @@ index ff92430..36740ea 100644
##
## Execute a generic bin program in the sysadm domain.
diff --git a/policy/modules/roles/sysadm.te b/policy/modules/roles/sysadm.te
-index 88d0028..f520b74 100644
+index 88d0028..4a77968 100644
--- a/policy/modules/roles/sysadm.te
+++ b/policy/modules/roles/sysadm.te
@@ -5,39 +5,85 @@ policy_module(sysadm, 2.5.1)
@@ -18204,7 +21242,7 @@ index 88d0028..f520b74 100644
dbus_role_template(sysadm, sysadm_r, sysadm_t)
optional_policy(`
-@@ -463,15 +575,75 @@ ifndef(`distro_redhat',`
+@@ -463,15 +575,79 @@ ifndef(`distro_redhat',`
')
optional_policy(`
@@ -18271,6 +21309,10 @@ index 88d0028..f520b74 100644
+ userhelper_role_template(sysadm, sysadm_r, sysadm_t)
+ ')
+
++ optional_policy(`
++ vmtools_run_helper(sysadm_t, sysadm_r)
++ ')
++
+ optional_policy(`
+ vmware_role(sysadm_r, sysadm_t)
+ ')
@@ -18344,11 +21386,11 @@ index 0000000..0e8654b
+/usr/sbin/xrdp-sesman -- gen_context(system_u:object_r:unconfined_exec_t,s0)
diff --git a/policy/modules/roles/unconfineduser.if b/policy/modules/roles/unconfineduser.if
new file mode 100644
-index 0000000..cf6582f
+index 0000000..b1163a6
--- /dev/null
+++ b/policy/modules/roles/unconfineduser.if
-@@ -0,0 +1,613 @@
-+## Unconfiend user role
+@@ -0,0 +1,637 @@
++## Unconfined user role
+
+########################################
+##
@@ -18961,12 +22003,36 @@ index 0000000..cf6582f
+ allow $1 self:tun_socket relabelto;
+')
+
++########################################
++##
++## Allow domain to transition to unconfined_t user
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`unconfined_transition',`
++ gen_require(`
++ type unconfined_t;
++ ')
++
++ domtrans_pattern($1,$2,unconfined_t)
++ allow unconfined_t $2:file entrypoint;
++ allow $1 unconfined_t:process signal_perms;
++')
diff --git a/policy/modules/roles/unconfineduser.te b/policy/modules/roles/unconfineduser.te
new file mode 100644
-index 0000000..539c163
+index 0000000..b126e2b
--- /dev/null
+++ b/policy/modules/roles/unconfineduser.te
-@@ -0,0 +1,328 @@
+@@ -0,0 +1,332 @@
+policy_module(unconfineduser, 1.0.0)
+
+########################################
@@ -19127,6 +22193,10 @@ index 0000000..539c163
+ sandbox_x_transition(unconfined_t, unconfined_r)
+ ')
+
++ optional_policy(`
++ vmtools_run_helper(unconfined_t, unconfined_r)
++ ')
++
+ optional_policy(`
+ gen_require(`
+ type user_tmpfs_t;
@@ -19306,7 +22376,7 @@ index 3835596..fbca2be 100644
########################################
##
diff --git a/policy/modules/roles/unprivuser.te b/policy/modules/roles/unprivuser.te
-index cdfddf4..ad1f001 100644
+index cdfddf4..c3271fb 100644
--- a/policy/modules/roles/unprivuser.te
+++ b/policy/modules/roles/unprivuser.te
@@ -1,5 +1,12 @@
@@ -19314,7 +22384,7 @@ index cdfddf4..ad1f001 100644
+##
+##
-+## Allow unprivledged user to create and transition to svirt domains.
++## Allow unprivileged user to create and transition to svirt domains.
+##
+##
+gen_tunable(unprivuser_use_svirt, false)
@@ -19322,7 +22392,7 @@ index cdfddf4..ad1f001 100644
# this module should be named user, but that is
# a compile error since user is a keyword.
-@@ -12,12 +19,100 @@ role user_r;
+@@ -12,12 +19,102 @@ role user_r;
userdom_unpriv_user_template(user)
@@ -19335,6 +22405,8 @@ index cdfddf4..ad1f001 100644
+storage_read_scsi_generic(user_t)
+storage_write_scsi_generic(user_t)
+
++seutil_read_module_store(user_t)
++
+init_dbus_chat(user_t)
+init_status(user_t)
+
@@ -19424,7 +22496,7 @@ index cdfddf4..ad1f001 100644
')
optional_policy(`
-@@ -25,6 +120,18 @@ optional_policy(`
+@@ -25,6 +122,18 @@ optional_policy(`
')
optional_policy(`
@@ -19443,7 +22515,7 @@ index cdfddf4..ad1f001 100644
vlock_run(user_t, user_r)
')
-@@ -102,10 +209,6 @@ ifndef(`distro_redhat',`
+@@ -102,10 +211,6 @@ ifndef(`distro_redhat',`
')
optional_policy(`
@@ -19454,7 +22526,7 @@ index cdfddf4..ad1f001 100644
postgresql_role(user_r, user_t)
')
-@@ -128,7 +231,6 @@ ifndef(`distro_redhat',`
+@@ -128,7 +233,6 @@ ifndef(`distro_redhat',`
optional_policy(`
ssh_role_template(user, user_r, user_t)
')
@@ -19462,11 +22534,15 @@ index cdfddf4..ad1f001 100644
optional_policy(`
su_role_template(user, user_r, user_t)
')
-@@ -161,3 +263,15 @@ ifndef(`distro_redhat',`
+@@ -161,3 +265,19 @@ ifndef(`distro_redhat',`
wireshark_role(user_r, user_t)
')
')
+
++optional_policy(`
++ vmtools_run_helper(user_t, user_r)
++')
++
+
+optional_policy(`
+ virt_transition_svirt(user_t, user_r)
@@ -19843,7 +22919,7 @@ index 9d2f311..9e87525 100644
+ postgresql_filetrans_named_content($1)
')
diff --git a/policy/modules/services/postgresql.te b/policy/modules/services/postgresql.te
-index 346d011..3e23acb 100644
+index 346d011..19dfc1f 100644
--- a/policy/modules/services/postgresql.te
+++ b/policy/modules/services/postgresql.te
@@ -19,25 +19,32 @@ gen_require(`
@@ -19917,7 +22993,13 @@ index 346d011..3e23acb 100644
manage_files_pattern(postgresql_t, postgresql_log_t, postgresql_log_t)
logging_log_filetrans(postgresql_t, postgresql_log_t, { file dir })
-@@ -304,7 +313,6 @@ kernel_list_proc(postgresql_t)
+@@ -299,12 +308,12 @@ manage_sock_files_pattern(postgresql_t, postgresql_var_run_t, postgresql_var_run
+ files_pid_filetrans(postgresql_t, postgresql_var_run_t, { dir file })
+
+ kernel_read_kernel_sysctls(postgresql_t)
++kernel_read_network_state(postgresql_t)
+ kernel_read_system_state(postgresql_t)
+ kernel_list_proc(postgresql_t)
kernel_read_all_sysctls(postgresql_t)
kernel_read_proc_symlinks(postgresql_t)
@@ -19925,7 +23007,7 @@ index 346d011..3e23acb 100644
corenet_all_recvfrom_netlabel(postgresql_t)
corenet_tcp_sendrecv_generic_if(postgresql_t)
corenet_udp_sendrecv_generic_if(postgresql_t)
-@@ -342,8 +350,7 @@ domain_dontaudit_list_all_domains_state(postgresql_t)
+@@ -342,8 +351,7 @@ domain_dontaudit_list_all_domains_state(postgresql_t)
domain_use_interactive_fds(postgresql_t)
files_dontaudit_search_home(postgresql_t)
@@ -19935,15 +23017,19 @@ index 346d011..3e23acb 100644
files_read_etc_runtime_files(postgresql_t)
files_read_usr_files(postgresql_t)
-@@ -354,7 +361,6 @@ init_read_utmp(postgresql_t)
+@@ -354,20 +362,28 @@ init_read_utmp(postgresql_t)
logging_send_syslog_msg(postgresql_t)
logging_send_audit_msgs(postgresql_t)
-miscfiles_read_localization(postgresql_t)
-
+-
seutil_libselinux_linked(postgresql_t)
seutil_read_default_contexts(postgresql_t)
-@@ -364,10 +370,18 @@ userdom_dontaudit_search_user_home_dirs(postgresql_t)
+
++sysnet_use_ldap(postgresql_t)
++
+ userdom_dontaudit_use_unpriv_user_fds(postgresql_t)
+ userdom_dontaudit_search_user_home_dirs(postgresql_t)
userdom_dontaudit_use_user_terminals(postgresql_t)
optional_policy(`
@@ -19963,7 +23049,7 @@ index 346d011..3e23acb 100644
allow postgresql_t self:process execmem;
')
-@@ -485,10 +499,52 @@ dontaudit { postgresql_t sepgsql_admin_type sepgsql_client_type sepgsql_unconfin
+@@ -485,10 +501,52 @@ dontaudit { postgresql_t sepgsql_admin_type sepgsql_client_type sepgsql_unconfin
# It is always allowed to operate temporary objects for any database client.
allow sepgsql_client_type sepgsql_temp_object_t:{db_schema db_table db_column db_tuple db_sequence db_view db_procedure} ~{ relabelto relabelfrom };
@@ -20020,7 +23106,7 @@ index 346d011..3e23acb 100644
allow sepgsql_client_type sepgsql_schema_t:db_schema { add_name remove_name };
')
-@@ -536,7 +592,7 @@ allow sepgsql_admin_type sepgsql_module_type:db_database install_module;
+@@ -536,7 +594,7 @@ allow sepgsql_admin_type sepgsql_module_type:db_database install_module;
kernel_relabelfrom_unlabeled_database(sepgsql_admin_type)
@@ -20029,7 +23115,7 @@ index 346d011..3e23acb 100644
allow sepgsql_admin_type sepgsql_database_type:db_database *;
allow sepgsql_admin_type sepgsql_schema_type:db_schema *;
-@@ -589,3 +645,17 @@ allow sepgsql_unconfined_type sepgsql_blob_type:db_blob *;
+@@ -589,3 +647,17 @@ allow sepgsql_unconfined_type sepgsql_blob_type:db_blob *;
allow sepgsql_unconfined_type sepgsql_module_type:db_database install_module;
kernel_relabelfrom_unlabeled_database(sepgsql_unconfined_type)
@@ -20096,7 +23182,7 @@ index 76d9f66..5c271ce 100644
+/root/\.ssh(/.*)? gen_context(system_u:object_r:ssh_home_t,s0)
+/root/\.shosts gen_context(system_u:object_r:ssh_home_t,s0)
diff --git a/policy/modules/services/ssh.if b/policy/modules/services/ssh.if
-index fe0c682..c0413e8 100644
+index fe0c682..e8dcfa7 100644
--- a/policy/modules/services/ssh.if
+++ b/policy/modules/services/ssh.if
@@ -32,10 +32,11 @@
@@ -20347,7 +23433,7 @@ index fe0c682..c0413e8 100644
allow ssh_t $3:unix_stream_socket rw_socket_perms;
allow ssh_t $3:unix_stream_socket connectto;
+ allow ssh_t $3:key manage_key_perms;
-+ allow $3 ssh_t:key read;
++ allow $3 ssh_t:key { write search read view };
# user can manage the keys and config
manage_files_pattern($3, ssh_home_t, ssh_home_t)
@@ -20796,10 +23882,10 @@ index fe0c682..c0413e8 100644
+ ps_process_pattern($1, sshd_t)
+')
diff --git a/policy/modules/services/ssh.te b/policy/modules/services/ssh.te
-index 5fc0391..692569b 100644
+index 5fc0391..d6519a1 100644
--- a/policy/modules/services/ssh.te
+++ b/policy/modules/services/ssh.te
-@@ -6,43 +6,61 @@ policy_module(ssh, 2.3.3)
+@@ -6,43 +6,62 @@ policy_module(ssh, 2.3.3)
#
##
@@ -20856,6 +23942,7 @@ index 5fc0391..692569b 100644
ssh_server_template(sshd)
init_daemon_domain(sshd_t, sshd_exec_t)
+mls_trusted_object(sshd_t)
++mls_process_write_all_levels(sshd_t)
-type sshd_key_t;
-files_type(sshd_key_t)
@@ -20876,7 +23963,7 @@ index 5fc0391..692569b 100644
type ssh_t;
type ssh_exec_t;
-@@ -73,6 +91,11 @@ type ssh_home_t;
+@@ -73,6 +92,11 @@ type ssh_home_t;
typealias ssh_home_t alias { home_ssh_t user_ssh_home_t user_home_ssh_t staff_home_ssh_t sysadm_home_ssh_t };
typealias ssh_home_t alias { auditadm_home_ssh_t secadm_home_ssh_t };
userdom_user_home_content(ssh_home_t)
@@ -20888,7 +23975,7 @@ index 5fc0391..692569b 100644
##############################
#
-@@ -83,6 +106,7 @@ allow ssh_t self:capability { setuid setgid dac_override dac_read_search };
+@@ -83,6 +107,7 @@ allow ssh_t self:capability { setuid setgid dac_override dac_read_search };
allow ssh_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
allow ssh_t self:fd use;
allow ssh_t self:fifo_file rw_fifo_file_perms;
@@ -20896,7 +23983,7 @@ index 5fc0391..692569b 100644
allow ssh_t self:unix_dgram_socket { create_socket_perms sendto };
allow ssh_t self:unix_stream_socket { create_stream_socket_perms connectto };
allow ssh_t self:shm create_shm_perms;
-@@ -90,15 +114,11 @@ allow ssh_t self:sem create_sem_perms;
+@@ -90,15 +115,11 @@ allow ssh_t self:sem create_sem_perms;
allow ssh_t self:msgq create_msgq_perms;
allow ssh_t self:msg { send receive };
allow ssh_t self:tcp_socket create_stream_socket_perms;
@@ -20913,7 +24000,7 @@ index 5fc0391..692569b 100644
manage_files_pattern(ssh_t, ssh_tmpfs_t, ssh_tmpfs_t)
manage_lnk_files_pattern(ssh_t, ssh_tmpfs_t, ssh_tmpfs_t)
manage_fifo_files_pattern(ssh_t, ssh_tmpfs_t, ssh_tmpfs_t)
-@@ -107,33 +127,42 @@ fs_tmpfs_filetrans(ssh_t, ssh_tmpfs_t, { dir file lnk_file sock_file fifo_file }
+@@ -107,33 +128,42 @@ fs_tmpfs_filetrans(ssh_t, ssh_tmpfs_t, { dir file lnk_file sock_file fifo_file }
manage_dirs_pattern(ssh_t, ssh_home_t, ssh_home_t)
manage_sock_files_pattern(ssh_t, ssh_home_t, ssh_home_t)
@@ -20961,7 +24048,7 @@ index 5fc0391..692569b 100644
dev_read_urand(ssh_t)
fs_getattr_all_fs(ssh_t)
-@@ -154,40 +183,46 @@ files_read_var_files(ssh_t)
+@@ -154,40 +184,46 @@ files_read_var_files(ssh_t)
logging_send_syslog_msg(ssh_t)
logging_read_generic_logs(ssh_t)
@@ -21027,7 +24114,7 @@ index 5fc0391..692569b 100644
')
optional_policy(`
-@@ -195,6 +230,7 @@ optional_policy(`
+@@ -195,6 +231,7 @@ optional_policy(`
xserver_domtrans_xauth(ssh_t)
')
@@ -21035,7 +24122,7 @@ index 5fc0391..692569b 100644
##############################
#
# ssh_keysign_t local policy
-@@ -206,6 +242,7 @@ allow ssh_keysign_t self:unix_stream_socket create_socket_perms;
+@@ -206,6 +243,7 @@ allow ssh_keysign_t self:unix_stream_socket create_socket_perms;
allow ssh_keysign_t sshd_key_t:file { getattr read };
dev_read_urand(ssh_keysign_t)
@@ -21043,7 +24130,7 @@ index 5fc0391..692569b 100644
files_read_etc_files(ssh_keysign_t)
-@@ -223,33 +260,54 @@ optional_policy(`
+@@ -223,33 +261,55 @@ optional_policy(`
# so a tunnel can point to another ssh tunnel
allow sshd_t self:netlink_route_socket r_netlink_socket_perms;
allow sshd_t self:key { search link write };
@@ -21056,12 +24143,13 @@ index 5fc0391..692569b 100644
kernel_search_key(sshd_t)
kernel_link_key(sshd_t)
-
++kernel_read_net_sysctls(sshd_t)
++
+files_search_all(sshd_t)
+
+fs_search_cgroup_dirs(sshd_t)
+fs_rw_cgroup_files(sshd_t)
-+
+
term_use_all_ptys(sshd_t)
term_setattr_all_ptys(sshd_t)
+term_setattr_all_ttys(sshd_t)
@@ -21107,7 +24195,7 @@ index 5fc0391..692569b 100644
')
optional_policy(`
-@@ -257,11 +315,28 @@ optional_policy(`
+@@ -257,11 +317,28 @@ optional_policy(`
')
optional_policy(`
@@ -21137,7 +24225,7 @@ index 5fc0391..692569b 100644
')
optional_policy(`
-@@ -269,6 +344,10 @@ optional_policy(`
+@@ -269,6 +346,10 @@ optional_policy(`
')
optional_policy(`
@@ -21148,7 +24236,7 @@ index 5fc0391..692569b 100644
rpm_use_script_fds(sshd_t)
')
-@@ -279,13 +358,93 @@ optional_policy(`
+@@ -279,13 +360,93 @@ optional_policy(`
')
optional_policy(`
@@ -21242,7 +24330,7 @@ index 5fc0391..692569b 100644
########################################
#
# ssh_keygen local policy
-@@ -294,19 +453,29 @@ optional_policy(`
+@@ -294,19 +455,29 @@ optional_policy(`
# ssh_keygen_t is the type of the ssh-keygen program when run at install time
# and by sysadm_t
@@ -21273,7 +24361,7 @@ index 5fc0391..692569b 100644
dev_read_urand(ssh_keygen_t)
term_dontaudit_use_console(ssh_keygen_t)
-@@ -323,6 +492,12 @@ auth_use_nsswitch(ssh_keygen_t)
+@@ -323,6 +494,12 @@ auth_use_nsswitch(ssh_keygen_t)
logging_send_syslog_msg(ssh_keygen_t)
userdom_dontaudit_use_unpriv_user_fds(ssh_keygen_t)
@@ -21286,7 +24374,7 @@ index 5fc0391..692569b 100644
optional_policy(`
seutil_sigchld_newrole(ssh_keygen_t)
-@@ -331,3 +506,140 @@ optional_policy(`
+@@ -331,3 +508,140 @@ optional_policy(`
optional_policy(`
udev_read_db(ssh_keygen_t)
')
@@ -21428,7 +24516,7 @@ index 5fc0391..692569b 100644
+ xserver_rw_xdm_pipes(ssh_agent_type)
+')
diff --git a/policy/modules/services/xserver.fc b/policy/modules/services/xserver.fc
-index d1f64a0..9a5dab5 100644
+index d1f64a0..7acda6c 100644
--- a/policy/modules/services/xserver.fc
+++ b/policy/modules/services/xserver.fc
@@ -2,13 +2,35 @@
@@ -21490,7 +24578,7 @@ index d1f64a0..9a5dab5 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 +76,32 @@ HOME_DIR/\.Xauthority.* -- gen_context(system_u:object_r:xauth_home_t,s0)
+@@ -46,26 +76,34 @@ HOME_DIR/\.Xauthority.* -- gen_context(system_u:object_r:xauth_home_t,s0)
# /tmp
#
@@ -21519,6 +24607,8 @@ index d1f64a0..9a5dab5 100644
+/usr/s?bin/lxdm(-binary)? -- gen_context(system_u:object_r:xdm_exec_t,s0)
+/usr/s?bin/[mxgkw]dm -- gen_context(system_u:object_r:xdm_exec_t,s0)
+
++/usr/bin/sddm -- gen_context(system_u:object_r:xdm_exec_t,s0)
++/usr/bin/sddm-greeter -- gen_context(system_u:object_r:xdm_exec_t,s0)
/usr/bin/gpe-dm -- gen_context(system_u:object_r:xdm_exec_t,s0)
/usr/bin/iceauth -- gen_context(system_u:object_r:iceauth_exec_t,s0)
+/usr/bin/razor-lightdm-.* -- gen_context(system_u:object_r:xdm_exec_t,s0)
@@ -21532,12 +24622,13 @@ index d1f64a0..9a5dab5 100644
/usr/lib/qt-.*/etc/settings(/.*)? gen_context(system_u:object_r:xdm_var_run_t,s0)
-@@ -92,25 +128,49 @@ ifndef(`distro_debian',`
+@@ -92,25 +130,50 @@ ifndef(`distro_debian',`
/var/lib/gdm(3)?(/.*)? gen_context(system_u:object_r:xdm_var_lib_t,s0)
/var/lib/lxdm(/.*)? gen_context(system_u:object_r:xdm_var_lib_t,s0)
-/var/lib/[xkw]dm(/.*)? gen_context(system_u:object_r:xdm_var_lib_t,s0)
+/var/lib/lightdm(/.*)? gen_context(system_u:object_r:xdm_var_lib_t,s0)
++/var/lib/lightdm-data(/.*)? gen_context(system_u:object_r:xdm_var_lib_t,s0)
+/var/lib/[mxkwg]dm(/.*)? gen_context(system_u:object_r:xdm_var_lib_t,s0)
/var/lib/xkb(/.*)? gen_context(system_u:object_r:xkb_var_lib_t,s0)
+/var/lib/xorg(/.*)? gen_context(system_u:object_r:xserver_var_lib_t,s0)
@@ -21553,7 +24644,7 @@ index d1f64a0..9a5dab5 100644
+/var/log/lightdm(/.*)? gen_context(system_u:object_r:xserver_log_t,s0)
+/var/log/lxdm\.log.* -- gen_context(system_u:object_r:xdm_log_t,s0)
+/var/log/mdm(/.*)? gen_context(system_u:object_r:xdm_log_t,s0)
-+/var/log/slim\.log -- gen_context(system_u:object_r:xdm_log_t,s0)
++/var/log/slim\.log.* -- gen_context(system_u:object_r:xdm_log_t,s0)
/var/log/XFree86.* -- gen_context(system_u:object_r:xserver_log_t,s0)
/var/log/Xorg.* -- gen_context(system_u:object_r:xserver_log_t,s0)
+/var/log/nvidia-installer\.log.* -- gen_context(system_u:object_r:xserver_log_t,s0)
@@ -21588,7 +24679,7 @@ index d1f64a0..9a5dab5 100644
+/var/lib/pqsql/\.Xauthority.* -- gen_context(system_u:object_r:xauth_home_t,s0)
+
diff --git a/policy/modules/services/xserver.if b/policy/modules/services/xserver.if
-index 6bf0ecc..5a7e2a4 100644
+index 6bf0ecc..0d55916 100644
--- a/policy/modules/services/xserver.if
+++ b/policy/modules/services/xserver.if
@@ -18,100 +18,37 @@
@@ -22323,10 +25414,30 @@ index 6bf0ecc..5a7e2a4 100644
')
########################################
-@@ -1004,6 +1230,64 @@ interface(`xserver_read_xkb_libs',`
+@@ -1004,6 +1230,84 @@ interface(`xserver_read_xkb_libs',`
########################################
##
++## Manage X keyboard extension libraries.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`xserver_manage_xkb_libs',`
++ gen_require(`
++ type xkb_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ allow $1 xkb_var_lib_t:dir list_dir_perms;
++ manage_files_pattern($1, xkb_var_lib_t, xkb_var_lib_t)
++')
++
++########################################
++##
+## dontaudit access checks X keyboard extension libraries.
+##
+##
@@ -22388,7 +25499,7 @@ index 6bf0ecc..5a7e2a4 100644
## Read xdm temporary files.
##
##
-@@ -1017,7 +1301,7 @@ interface(`xserver_read_xdm_tmp_files',`
+@@ -1017,7 +1321,7 @@ interface(`xserver_read_xdm_tmp_files',`
type xdm_tmp_t;
')
@@ -22397,7 +25508,7 @@ index 6bf0ecc..5a7e2a4 100644
read_files_pattern($1, xdm_tmp_t, xdm_tmp_t)
')
-@@ -1079,6 +1363,42 @@ interface(`xserver_manage_xdm_tmp_files',`
+@@ -1079,6 +1383,42 @@ interface(`xserver_manage_xdm_tmp_files',`
########################################
##
@@ -22440,7 +25551,7 @@ index 6bf0ecc..5a7e2a4 100644
## Do not audit attempts to get the attributes of
## xdm temporary named sockets.
##
-@@ -1093,7 +1413,7 @@ interface(`xserver_dontaudit_getattr_xdm_tmp_sockets',`
+@@ -1093,7 +1433,7 @@ interface(`xserver_dontaudit_getattr_xdm_tmp_sockets',`
type xdm_tmp_t;
')
@@ -22449,7 +25560,7 @@ index 6bf0ecc..5a7e2a4 100644
')
########################################
-@@ -1111,8 +1431,10 @@ interface(`xserver_domtrans',`
+@@ -1111,8 +1451,10 @@ interface(`xserver_domtrans',`
type xserver_t, xserver_exec_t;
')
@@ -22461,7 +25572,7 @@ index 6bf0ecc..5a7e2a4 100644
')
########################################
-@@ -1210,6 +1532,25 @@ interface(`xserver_dontaudit_rw_stream_sockets',`
+@@ -1210,6 +1552,25 @@ interface(`xserver_dontaudit_rw_stream_sockets',`
########################################
##
@@ -22487,7 +25598,7 @@ index 6bf0ecc..5a7e2a4 100644
## Connect to the X server over a unix domain
## stream socket.
##
-@@ -1226,6 +1567,26 @@ interface(`xserver_stream_connect',`
+@@ -1226,6 +1587,26 @@ interface(`xserver_stream_connect',`
files_search_tmp($1)
stream_connect_pattern($1, xserver_tmp_t, xserver_tmp_t, xserver_t)
@@ -22514,7 +25625,7 @@ index 6bf0ecc..5a7e2a4 100644
')
########################################
-@@ -1251,7 +1612,7 @@ interface(`xserver_read_tmp_files',`
+@@ -1251,7 +1632,7 @@ interface(`xserver_read_tmp_files',`
##
## Interface to provide X object permissions on a given X server to
## an X client domain. Gives the domain permission to read the
@@ -22523,7 +25634,7 @@ index 6bf0ecc..5a7e2a4 100644
##
##
##
-@@ -1261,13 +1622,27 @@ interface(`xserver_read_tmp_files',`
+@@ -1261,13 +1642,27 @@ interface(`xserver_read_tmp_files',`
#
interface(`xserver_manage_core_devices',`
gen_require(`
@@ -22552,7 +25663,7 @@ index 6bf0ecc..5a7e2a4 100644
')
########################################
-@@ -1284,10 +1659,624 @@ interface(`xserver_manage_core_devices',`
+@@ -1284,10 +1679,643 @@ interface(`xserver_manage_core_devices',`
#
interface(`xserver_unconfined',`
gen_require(`
@@ -23179,8 +26290,27 @@ index 6bf0ecc..5a7e2a4 100644
+
+ dontaudit $1 xserver_log_t:dir search_dir_perms;
+')
++
++########################################
++##
++## Manage keys for xdm.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`xserver_rw_xdm_keys',`
++ gen_require(`
++ type xdm_t;
++ ')
++
++ allow $1 xdm_t:key { read write };
++')
++
diff --git a/policy/modules/services/xserver.te b/policy/modules/services/xserver.te
-index 2696452..adbe339 100644
+index 2696452..5be1645 100644
--- a/policy/modules/services/xserver.te
+++ b/policy/modules/services/xserver.te
@@ -26,28 +26,59 @@ gen_require(`
@@ -23431,7 +26561,7 @@ index 2696452..adbe339 100644
')
########################################
-@@ -247,48 +321,89 @@ tunable_policy(`use_samba_home_dirs',`
+@@ -247,48 +321,90 @@ tunable_policy(`use_samba_home_dirs',`
# Xauth local policy
#
@@ -23494,6 +26624,7 @@ index 2696452..adbe339 100644
+userdom_use_inherited_user_terminals(xauth_t)
userdom_read_user_tmp_files(xauth_t)
+userdom_read_all_users_state(xauth_t)
++userdom_search_user_home_dirs(xauth_t)
+userdom_user_home_dir_filetrans(xauth_t, xauth_home_t, file, ".Xauthority")
+userdom_user_home_dir_filetrans(xauth_t, xauth_home_t, file, ".Xauthority-l")
+userdom_user_home_dir_filetrans(xauth_t, xauth_home_t, file, ".Xauthority-c")
@@ -23532,13 +26663,13 @@ index 2696452..adbe339 100644
ssh_sigchld(xauth_t)
ssh_read_pipes(xauth_t)
ssh_dontaudit_rw_tcp_sockets(xauth_t)
-@@ -299,64 +414,109 @@ optional_policy(`
+@@ -299,64 +415,109 @@ optional_policy(`
# XDM Local policy
#
-allow xdm_t self:capability { setgid setuid sys_resource kill sys_tty_config mknod chown dac_override dac_read_search fowner fsetid ipc_owner sys_nice sys_rawio net_bind_service };
-allow xdm_t self:process { setexec setpgid getsched setsched setrlimit signal_perms setkeycreate };
-+allow xdm_t self:capability { setgid setuid sys_resource kill sys_tty_config mknod chown dac_override dac_read_search fowner fsetid ipc_owner sys_nice sys_rawio net_bind_service sys_ptrace };
++allow xdm_t self:capability { setgid setuid sys_resource kill sys_tty_config mknod chown dac_override dac_read_search fowner fsetid ipc_owner sys_nice sys_rawio net_bind_service net_admin sys_ptrace };
+allow xdm_t self:capability2 { block_suspend };
+dontaudit xdm_t self:capability sys_admin;
+tunable_policy(`deny_ptrace',`',`
@@ -23652,7 +26783,7 @@ index 2696452..adbe339 100644
# connect to xdm xserver over stream socket
stream_connect_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t, xserver_t)
-@@ -365,20 +525,29 @@ stream_connect_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t, xserver_t)
+@@ -365,20 +526,30 @@ stream_connect_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t, xserver_t)
delete_files_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t)
delete_sock_files_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t)
@@ -23667,6 +26798,7 @@ index 2696452..adbe339 100644
+manage_lnk_files_pattern(xdm_t, xserver_log_t, xserver_log_t)
manage_fifo_files_pattern(xdm_t, xserver_log_t, xserver_log_t)
-logging_log_filetrans(xdm_t, xserver_log_t, file)
++files_var_filetrans(xdm_t, xserver_log_t, dir, "gdm")
kernel_read_system_state(xdm_t)
+kernel_read_device_sysctls(xdm_t)
@@ -23684,7 +26816,7 @@ index 2696452..adbe339 100644
corenet_all_recvfrom_netlabel(xdm_t)
corenet_tcp_sendrecv_generic_if(xdm_t)
corenet_udp_sendrecv_generic_if(xdm_t)
-@@ -388,38 +557,49 @@ corenet_tcp_sendrecv_all_ports(xdm_t)
+@@ -388,38 +559,49 @@ corenet_tcp_sendrecv_all_ports(xdm_t)
corenet_udp_sendrecv_all_ports(xdm_t)
corenet_tcp_bind_generic_node(xdm_t)
corenet_udp_bind_generic_node(xdm_t)
@@ -23738,7 +26870,7 @@ index 2696452..adbe339 100644
files_read_etc_files(xdm_t)
files_read_var_files(xdm_t)
-@@ -430,9 +610,28 @@ files_list_mnt(xdm_t)
+@@ -430,9 +612,28 @@ files_list_mnt(xdm_t)
files_read_usr_files(xdm_t)
# Poweroff wants to create the /poweroff file when run from xdm
files_create_boot_flag(xdm_t)
@@ -23767,7 +26899,7 @@ index 2696452..adbe339 100644
storage_dontaudit_read_fixed_disk(xdm_t)
storage_dontaudit_write_fixed_disk(xdm_t)
-@@ -441,28 +640,45 @@ storage_dontaudit_raw_read_removable_device(xdm_t)
+@@ -441,28 +642,45 @@ storage_dontaudit_raw_read_removable_device(xdm_t)
storage_dontaudit_raw_write_removable_device(xdm_t)
storage_dontaudit_setattr_removable_dev(xdm_t)
storage_dontaudit_rw_scsi_generic(xdm_t)
@@ -23816,7 +26948,7 @@ index 2696452..adbe339 100644
userdom_dontaudit_use_unpriv_user_fds(xdm_t)
userdom_create_all_users_keys(xdm_t)
-@@ -471,24 +687,144 @@ userdom_read_user_home_content_files(xdm_t)
+@@ -471,24 +689,151 @@ userdom_read_user_home_content_files(xdm_t)
# Search /proc for any user domain processes.
userdom_read_all_users_state(xdm_t)
userdom_signal_all_users(xdm_t)
@@ -23828,7 +26960,8 @@ index 2696452..adbe339 100644
+
+#userdom_home_manager(xdm_t)
+tunable_policy(`xdm_write_home',`
-+ userdom_user_home_dir_filetrans(xdm_t, xdm_home_t, file)
++ userdom_user_home_dir_filetrans(xdm_t, xdm_home_t, { file lnk_file })
++ userdom_admin_home_dir_filetrans(xdm_t, xdm_home_t, { file lnk_file })
+',`
+ userdom_user_home_dir_filetrans_user_home_content(xdm_t, { dir file lnk_file fifo_file sock_file })
+')
@@ -23838,12 +26971,14 @@ index 2696452..adbe339 100644
+ fs_manage_nfs_dirs(xdm_t)
+ fs_manage_nfs_files(xdm_t)
+ fs_manage_nfs_symlinks(xdm_t)
++ fs_append_nfs_files(xdm_t)
+')
+
+tunable_policy(`use_samba_home_dirs',`
+ fs_manage_cifs_dirs(xdm_t)
+ fs_manage_cifs_files(xdm_t)
+ fs_manage_cifs_symlinks(xdm_t)
++ fs_append_cifs_files(xdm_t)
+')
+
+tunable_policy(`use_fusefs_home_dirs',`
@@ -23901,6 +27036,10 @@ index 2696452..adbe339 100644
+')
+
+optional_policy(`
++ remotelogin_signull(xdm_t)
++')
++
++optional_policy(`
+ spamassassin_filetrans_home_content(xdm_t)
+ spamassassin_filetrans_admin_home_content(xdm_t)
+')
@@ -23967,7 +27106,7 @@ index 2696452..adbe339 100644
tunable_policy(`xdm_sysadm_login',`
userdom_xsession_spec_domtrans_all_users(xdm_t)
# FIXME:
-@@ -502,11 +838,26 @@ tunable_policy(`xdm_sysadm_login',`
+@@ -502,11 +847,26 @@ tunable_policy(`xdm_sysadm_login',`
')
optional_policy(`
@@ -23994,7 +27133,7 @@ index 2696452..adbe339 100644
')
optional_policy(`
-@@ -514,12 +865,57 @@ optional_policy(`
+@@ -514,12 +874,57 @@ optional_policy(`
')
optional_policy(`
@@ -24052,7 +27191,7 @@ index 2696452..adbe339 100644
hostname_exec(xdm_t)
')
-@@ -537,28 +933,78 @@ optional_policy(`
+@@ -537,28 +942,78 @@ optional_policy(`
')
optional_policy(`
@@ -24140,7 +27279,7 @@ index 2696452..adbe339 100644
')
optional_policy(`
-@@ -570,6 +1016,14 @@ optional_policy(`
+@@ -570,6 +1025,14 @@ optional_policy(`
')
optional_policy(`
@@ -24155,7 +27294,7 @@ index 2696452..adbe339 100644
xfs_stream_connect(xdm_t)
')
-@@ -584,7 +1038,7 @@ type_transition xserver_t xserver_t:x_colormap root_xcolormap_t;
+@@ -584,7 +1047,7 @@ type_transition xserver_t xserver_t:x_colormap root_xcolormap_t;
type_transition root_xdrawable_t input_xevent_t:x_event root_input_xevent_t;
allow xserver_t { root_xdrawable_t x_domain }:x_drawable send;
@@ -24164,7 +27303,7 @@ index 2696452..adbe339 100644
# setuid/setgid for the wrapper program to change UID
# sys_rawio is for iopl access - should not be needed for frame-buffer
-@@ -594,8 +1048,11 @@ allow xserver_t input_xevent_t:x_event send;
+@@ -594,8 +1057,11 @@ allow xserver_t input_xevent_t:x_event send;
# execheap needed until the X module loader is fixed.
# NVIDIA Needs execstack
@@ -24177,7 +27316,7 @@ index 2696452..adbe339 100644
allow xserver_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
allow xserver_t self:fd use;
allow xserver_t self:fifo_file rw_fifo_file_perms;
-@@ -608,8 +1065,15 @@ allow xserver_t self:unix_dgram_socket { create_socket_perms sendto };
+@@ -608,8 +1074,15 @@ allow xserver_t self:unix_dgram_socket { create_socket_perms sendto };
allow xserver_t self:unix_stream_socket { create_stream_socket_perms connectto };
allow xserver_t self:tcp_socket create_stream_socket_perms;
allow xserver_t self:udp_socket create_socket_perms;
@@ -24193,7 +27332,7 @@ index 2696452..adbe339 100644
manage_dirs_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t)
manage_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t)
manage_sock_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t)
-@@ -617,6 +1081,10 @@ files_tmp_filetrans(xserver_t, xserver_tmp_t, { file dir sock_file })
+@@ -617,6 +1090,10 @@ files_tmp_filetrans(xserver_t, xserver_tmp_t, { file dir sock_file })
filetrans_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t, sock_file)
@@ -24204,7 +27343,7 @@ index 2696452..adbe339 100644
manage_dirs_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
manage_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
manage_lnk_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t)
-@@ -628,12 +1096,19 @@ manage_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t)
+@@ -628,12 +1105,19 @@ manage_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t)
manage_lnk_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t)
files_search_var_lib(xserver_t)
@@ -24226,7 +27365,7 @@ index 2696452..adbe339 100644
kernel_read_system_state(xserver_t)
kernel_read_device_sysctls(xserver_t)
-@@ -641,12 +1116,12 @@ kernel_read_modprobe_sysctls(xserver_t)
+@@ -641,12 +1125,12 @@ kernel_read_modprobe_sysctls(xserver_t)
# Xorg wants to check if kernel is tainted
kernel_read_kernel_sysctls(xserver_t)
kernel_write_proc_files(xserver_t)
@@ -24240,7 +27379,7 @@ index 2696452..adbe339 100644
corenet_all_recvfrom_netlabel(xserver_t)
corenet_tcp_sendrecv_generic_if(xserver_t)
corenet_udp_sendrecv_generic_if(xserver_t)
-@@ -667,23 +1142,28 @@ dev_rw_apm_bios(xserver_t)
+@@ -667,23 +1151,28 @@ dev_rw_apm_bios(xserver_t)
dev_rw_agp(xserver_t)
dev_rw_framebuffer(xserver_t)
dev_manage_dri_dev(xserver_t)
@@ -24272,7 +27411,7 @@ index 2696452..adbe339 100644
# brought on by rhgb
files_search_mnt(xserver_t)
-@@ -694,7 +1174,16 @@ fs_getattr_xattr_fs(xserver_t)
+@@ -694,7 +1183,16 @@ fs_getattr_xattr_fs(xserver_t)
fs_search_nfs(xserver_t)
fs_search_auto_mountpoints(xserver_t)
fs_search_ramfs(xserver_t)
@@ -24290,7 +27429,7 @@ index 2696452..adbe339 100644
mls_xwin_read_to_clearance(xserver_t)
selinux_validate_context(xserver_t)
-@@ -708,20 +1197,18 @@ init_getpgid(xserver_t)
+@@ -708,20 +1206,18 @@ init_getpgid(xserver_t)
term_setattr_unallocated_ttys(xserver_t)
term_use_unallocated_ttys(xserver_t)
@@ -24314,7 +27453,7 @@ index 2696452..adbe339 100644
userdom_search_user_home_dirs(xserver_t)
userdom_use_user_ttys(xserver_t)
-@@ -729,8 +1216,6 @@ userdom_setattr_user_ttys(xserver_t)
+@@ -729,8 +1225,6 @@ userdom_setattr_user_ttys(xserver_t)
userdom_read_user_tmp_files(xserver_t)
userdom_rw_user_tmpfs_files(xserver_t)
@@ -24323,7 +27462,7 @@ index 2696452..adbe339 100644
ifndef(`distro_redhat',`
allow xserver_t self:process { execmem execheap execstack };
domain_mmap_low_uncond(xserver_t)
-@@ -775,16 +1260,44 @@ optional_policy(`
+@@ -775,16 +1269,44 @@ optional_policy(`
')
optional_policy(`
@@ -24369,7 +27508,7 @@ index 2696452..adbe339 100644
unconfined_domtrans(xserver_t)
')
-@@ -793,6 +1306,10 @@ optional_policy(`
+@@ -793,6 +1315,10 @@ optional_policy(`
')
optional_policy(`
@@ -24380,7 +27519,7 @@ index 2696452..adbe339 100644
xfs_stream_connect(xserver_t)
')
-@@ -808,10 +1325,10 @@ allow xserver_t xdm_t:shm rw_shm_perms;
+@@ -808,10 +1334,10 @@ allow xserver_t xdm_t:shm rw_shm_perms;
# NB we do NOT allow xserver_t xdm_var_lib_t:dir, only access to an open
# handle of a file inside the dir!!!
@@ -24394,7 +27533,7 @@ index 2696452..adbe339 100644
# Label pid and temporary files with derived types.
manage_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t)
-@@ -819,7 +1336,7 @@ manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t)
+@@ -819,7 +1345,7 @@ manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t)
manage_sock_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t)
# Run xkbcomp.
@@ -24403,7 +27542,7 @@ index 2696452..adbe339 100644
can_exec(xserver_t, xkb_var_lib_t)
# VNC v4 module in X server
-@@ -832,26 +1349,21 @@ init_use_fds(xserver_t)
+@@ -832,26 +1358,21 @@ init_use_fds(xserver_t)
# to read ROLE_home_t - examine this in more detail
# (xauth?)
userdom_read_user_home_content_files(xserver_t)
@@ -24438,7 +27577,7 @@ index 2696452..adbe339 100644
')
optional_policy(`
-@@ -902,7 +1414,7 @@ allow x_domain xproperty_t:x_property { getattr create read write append destroy
+@@ -902,7 +1423,7 @@ allow x_domain xproperty_t:x_property { getattr create read write append destroy
allow x_domain root_xdrawable_t:x_drawable { getattr setattr list_child add_child remove_child send receive hide show };
# operations allowed on my windows
allow x_domain self:x_drawable { create destroy getattr setattr read write show hide list_child add_child remove_child manage send receive };
@@ -24447,7 +27586,7 @@ index 2696452..adbe339 100644
# operations allowed on all windows
allow x_domain x_domain:x_drawable { getattr get_property set_property remove_child };
-@@ -956,11 +1468,31 @@ allow x_domain self:x_resource { read write };
+@@ -956,11 +1477,31 @@ allow x_domain self:x_resource { read write };
# can mess with the screensaver
allow x_domain xserver_t:x_screen { getattr saver_getattr };
@@ -24479,7 +27618,7 @@ index 2696452..adbe339 100644
tunable_policy(`! xserver_object_manager',`
# should be xserver_unconfined(x_domain),
# but typeattribute doesnt work in conditionals
-@@ -982,18 +1514,150 @@ tunable_policy(`! xserver_object_manager',`
+@@ -982,18 +1523,150 @@ tunable_policy(`! xserver_object_manager',`
allow x_domain xevent_type:{ x_event x_synthetic_event } *;
')
@@ -24803,7 +27942,7 @@ index c6fdab7..af71c62 100644
sudo_sigchld(application_domain_type)
')
diff --git a/policy/modules/system/authlogin.fc b/policy/modules/system/authlogin.fc
-index 28ad538..003b09a 100644
+index 28ad538..36fbb93 100644
--- a/policy/modules/system/authlogin.fc
+++ b/policy/modules/system/authlogin.fc
@@ -1,14 +1,28 @@
@@ -24839,7 +27978,7 @@ index 28ad538..003b09a 100644
/sbin/unix_chkpwd -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
/sbin/unix_update -- gen_context(system_u:object_r:updpwd_exec_t,s0)
/sbin/unix_verify -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
-@@ -16,13 +30,24 @@ ifdef(`distro_suse', `
+@@ -16,13 +30,25 @@ ifdef(`distro_suse', `
/sbin/unix2_chkpwd -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
')
@@ -24851,6 +27990,7 @@ index 28ad538..003b09a 100644
-/usr/sbin/validate -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
+/usr/sbin/pam_console_apply -- gen_context(system_u:object_r:pam_console_exec_t,s0)
+/usr/sbin/pam_timestamp_check -- gen_context(system_u:object_r:pam_timestamp_exec_t,s0)
++/usr/sbin/pwhistory_helper -- gen_context(system_u:object_r:updpwd_exec_t,s0)
+/usr/sbin/unix_chkpwd -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
+/usr/sbin/unix_update -- gen_context(system_u:object_r:updpwd_exec_t,s0)
+/usr/sbin/unix_verify -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
@@ -24866,7 +28006,7 @@ index 28ad538..003b09a 100644
/var/cache/coolkey(/.*)? gen_context(system_u:object_r:auth_cache_t,s0)
-@@ -30,20 +55,24 @@ ifdef(`distro_gentoo', `
+@@ -30,20 +56,24 @@ ifdef(`distro_gentoo', `
/var/lib/abl(/.*)? gen_context(system_u:object_r:var_auth_t,s0)
/var/lib/pam_ssh(/.*)? gen_context(system_u:object_r:var_auth_t,s0)
@@ -24896,7 +28036,7 @@ index 28ad538..003b09a 100644
-/var/run/user(/.*)? gen_context(system_u:object_r:var_auth_t,s0)
/var/(db|lib|adm)/sudo(/.*)? gen_context(system_u:object_r:pam_var_run_t,s0)
diff --git a/policy/modules/system/authlogin.if b/policy/modules/system/authlogin.if
-index 3efd5b6..08c3e93 100644
+index 3efd5b6..c74d0d5 100644
--- a/policy/modules/system/authlogin.if
+++ b/policy/modules/system/authlogin.if
@@ -23,11 +23,17 @@ interface(`auth_role',`
@@ -25465,7 +28605,7 @@ index 3efd5b6..08c3e93 100644
')
########################################
-@@ -1767,11 +1989,13 @@ interface(`auth_relabel_login_records',`
+@@ -1767,11 +1989,17 @@ interface(`auth_relabel_login_records',`
##
#
interface(`auth_use_nsswitch',`
@@ -25479,10 +28619,14 @@ index 3efd5b6..08c3e93 100644
typeattribute $1 nsswitch_domain;
+
+ corenet_all_recvfrom_netlabel($1)
++
++ optional_policy(`
++ kerberos_keytab_domains($1)
++ ')
')
########################################
-@@ -1805,3 +2029,242 @@ interface(`auth_unconfined',`
+@@ -1805,3 +2033,242 @@ interface(`auth_unconfined',`
typeattribute $1 can_write_shadow_passwords;
typeattribute $1 can_relabelto_shadow_passwords;
')
@@ -25726,7 +28870,7 @@ index 3efd5b6..08c3e93 100644
+ allow $1 login_pgm:process sigchld;
+')
diff --git a/policy/modules/system/authlogin.te b/policy/modules/system/authlogin.te
-index 104037e..348e8cf 100644
+index 104037e..9b993c6 100644
--- a/policy/modules/system/authlogin.te
+++ b/policy/modules/system/authlogin.te
@@ -5,6 +5,19 @@ policy_module(authlogin, 2.4.2)
@@ -25923,15 +29067,19 @@ index 104037e..348e8cf 100644
miscfiles_read_generic_certs(pam_console_t)
seutil_read_file_contexts(pam_console_t)
-@@ -341,6 +362,7 @@ kernel_read_system_state(updpwd_t)
+@@ -341,6 +362,11 @@ kernel_read_system_state(updpwd_t)
dev_read_urand(updpwd_t)
files_manage_etc_files(updpwd_t)
+auth_manage_passwd(updpwd_t)
++
++mls_file_read_all_levels(updpwd_t)
++mls_file_write_all_levels(updpwd_t)
++mls_file_downgrade(updpwd_t)
term_dontaudit_use_console(updpwd_t)
term_dontaudit_use_unallocated_ttys(updpwd_t)
-@@ -350,9 +372,7 @@ auth_use_nsswitch(updpwd_t)
+@@ -350,9 +376,7 @@ auth_use_nsswitch(updpwd_t)
logging_send_syslog_msg(updpwd_t)
@@ -25942,7 +29090,7 @@ index 104037e..348e8cf 100644
ifdef(`distro_ubuntu',`
optional_policy(`
-@@ -380,13 +400,15 @@ term_dontaudit_use_all_ttys(utempter_t)
+@@ -380,13 +404,15 @@ term_dontaudit_use_all_ttys(utempter_t)
term_dontaudit_use_all_ptys(utempter_t)
term_dontaudit_use_ptmx(utempter_t)
@@ -25959,7 +29107,7 @@ index 104037e..348e8cf 100644
# Allow utemper to write to /tmp/.xses-*
userdom_write_user_tmp_files(utempter_t)
-@@ -397,19 +419,29 @@ ifdef(`distro_ubuntu',`
+@@ -397,19 +423,29 @@ ifdef(`distro_ubuntu',`
')
optional_policy(`
@@ -25993,7 +29141,7 @@ index 104037e..348e8cf 100644
files_list_var_lib(nsswitch_domain)
# read /etc/nsswitch.conf
-@@ -417,15 +449,21 @@ files_read_etc_files(nsswitch_domain)
+@@ -417,15 +453,21 @@ files_read_etc_files(nsswitch_domain)
sysnet_dns_name_resolve(nsswitch_domain)
@@ -26017,7 +29165,7 @@ index 104037e..348e8cf 100644
ldap_stream_connect(nsswitch_domain)
')
')
-@@ -438,6 +476,7 @@ optional_policy(`
+@@ -438,6 +480,7 @@ optional_policy(`
likewise_stream_connect_lsassd(nsswitch_domain)
')
@@ -26025,7 +29173,7 @@ index 104037e..348e8cf 100644
optional_policy(`
kerberos_use(nsswitch_domain)
')
-@@ -456,6 +495,8 @@ optional_policy(`
+@@ -456,10 +499,145 @@ optional_policy(`
optional_policy(`
sssd_stream_connect(nsswitch_domain)
@@ -26034,7 +29182,8 @@ index 104037e..348e8cf 100644
')
optional_policy(`
-@@ -463,3 +504,133 @@ optional_policy(`
+ samba_stream_connect_winbind(nsswitch_domain)
++ samba_stream_connect_nmbd(nsswitch_domain)
samba_read_var_files(nsswitch_domain)
samba_dontaudit_write_var_files(nsswitch_domain)
')
@@ -26050,6 +29199,7 @@ index 104037e..348e8cf 100644
+
+allow login_pgm self:netlink_kobject_uevent_socket create_socket_perms;
+allow login_pgm self:capability ipc_lock;
++dontaudit login_pgm self:capability net_admin;
+allow login_pgm self:process setkeycreate;
+allow login_pgm self:key manage_key_perms;
+userdom_manage_all_users_keys(login_pgm)
@@ -26062,7 +29212,7 @@ index 104037e..348e8cf 100644
+manage_dirs_pattern(login_pgm, auth_cache_t, auth_cache_t)
+manage_files_pattern(login_pgm, auth_cache_t, auth_cache_t)
+manage_sock_files_pattern(login_pgm, auth_cache_t, auth_cache_t)
-+files_var_filetrans(login_pgm, auth_cache_t, dir)
++files_var_filetrans(login_pgm, auth_cache_t, dir, "coolkey")
+
+manage_dirs_pattern(login_pgm, auth_home_t, auth_home_t)
+manage_files_pattern(login_pgm, auth_home_t, auth_home_t)
@@ -26110,6 +29260,7 @@ index 104037e..348e8cf 100644
+logging_set_tty_audit(login_pgm)
+
+miscfiles_dontaudit_write_generic_cert_files(login_pgm)
++miscfiles_filetrans_named_content(login_pgm)
+
+seutil_read_config(login_pgm)
+seutil_read_login_config(login_pgm)
@@ -26362,7 +29513,7 @@ index 016a770..1effeb4 100644
+ files_pid_filetrans($1, fsadm_var_run_t, dir, "blkid")
+')
diff --git a/policy/modules/system/fstools.te b/policy/modules/system/fstools.te
-index 6c4b6ee..f512b72 100644
+index 6c4b6ee..9eebe0b 100644
--- a/policy/modules/system/fstools.te
+++ b/policy/modules/system/fstools.te
@@ -13,6 +13,9 @@ role system_r types fsadm_t;
@@ -26375,7 +29526,15 @@ index 6c4b6ee..f512b72 100644
type fsadm_tmp_t;
files_tmp_file(fsadm_tmp_t)
-@@ -41,9 +44,15 @@ allow fsadm_t self:msg { send receive };
+@@ -26,6 +29,7 @@ files_type(swapfile_t)
+
+ # ipc_lock is for losetup
+ allow fsadm_t self:capability { ipc_lock sys_rawio sys_admin sys_resource sys_tty_config dac_override dac_read_search };
++dontaudit fsadm_t self:capability net_admin;
+ allow fsadm_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execmem execheap };
+ allow fsadm_t self:fd use;
+ allow fsadm_t self:fifo_file rw_fifo_file_perms;
+@@ -41,9 +45,15 @@ allow fsadm_t self:msg { send receive };
can_exec(fsadm_t, fsadm_exec_t)
@@ -26391,7 +29550,7 @@ index 6c4b6ee..f512b72 100644
# log files
allow fsadm_t fsadm_log_t:dir setattr;
-@@ -53,6 +62,7 @@ logging_log_filetrans(fsadm_t, fsadm_log_t, file)
+@@ -53,6 +63,7 @@ logging_log_filetrans(fsadm_t, fsadm_log_t, file)
# Enable swapping to files
allow fsadm_t swapfile_t:file { rw_file_perms swapon };
@@ -26399,7 +29558,7 @@ index 6c4b6ee..f512b72 100644
kernel_read_system_state(fsadm_t)
kernel_read_kernel_sysctls(fsadm_t)
kernel_request_load_module(fsadm_t)
-@@ -101,6 +111,8 @@ files_read_usr_files(fsadm_t)
+@@ -101,6 +112,8 @@ files_read_usr_files(fsadm_t)
files_read_etc_files(fsadm_t)
files_manage_lost_found(fsadm_t)
files_manage_isid_type_dirs(fsadm_t)
@@ -26408,7 +29567,7 @@ index 6c4b6ee..f512b72 100644
# Write to /etc/mtab.
files_manage_etc_runtime_files(fsadm_t)
files_etc_filetrans_etc_runtime(fsadm_t, file)
-@@ -120,6 +132,9 @@ fs_list_auto_mountpoints(fsadm_t)
+@@ -120,6 +133,9 @@ fs_list_auto_mountpoints(fsadm_t)
fs_search_tmpfs(fsadm_t)
fs_getattr_tmpfs_dirs(fsadm_t)
fs_read_tmpfs_symlinks(fsadm_t)
@@ -26418,7 +29577,7 @@ index 6c4b6ee..f512b72 100644
# Recreate /mnt/cdrom.
files_manage_mnt_dirs(fsadm_t)
# for tune2fs
-@@ -133,21 +148,27 @@ storage_raw_write_fixed_disk(fsadm_t)
+@@ -133,21 +149,27 @@ storage_raw_write_fixed_disk(fsadm_t)
storage_raw_read_removable_device(fsadm_t)
storage_raw_write_removable_device(fsadm_t)
storage_read_scsi_generic(fsadm_t)
@@ -26448,7 +29607,7 @@ index 6c4b6ee..f512b72 100644
ifdef(`distro_redhat',`
optional_policy(`
-@@ -166,6 +187,11 @@ optional_policy(`
+@@ -166,6 +188,11 @@ optional_policy(`
')
optional_policy(`
@@ -26460,7 +29619,7 @@ index 6c4b6ee..f512b72 100644
hal_dontaudit_write_log(fsadm_t)
')
-@@ -179,6 +205,10 @@ optional_policy(`
+@@ -179,6 +206,10 @@ optional_policy(`
')
optional_policy(`
@@ -26471,7 +29630,7 @@ index 6c4b6ee..f512b72 100644
nis_use_ypbind(fsadm_t)
')
-@@ -192,6 +222,10 @@ optional_policy(`
+@@ -192,6 +223,10 @@ optional_policy(`
')
optional_policy(`
@@ -26629,6 +29788,18 @@ index 9dfecf7..6d00f5c 100644
/bin/hostname -- gen_context(system_u:object_r:hostname_exec_t,s0)
+
+/usr/bin/hostname -- gen_context(system_u:object_r:hostname_exec_t,s0)
+diff --git a/policy/modules/system/hostname.if b/policy/modules/system/hostname.if
+index 187f04f..cf0af09 100644
+--- a/policy/modules/system/hostname.if
++++ b/policy/modules/system/hostname.if
+@@ -53,7 +53,6 @@ interface(`hostname_run',`
+ ## Domain allowed access.
+ ##
+ ##
+-##
+ #
+ interface(`hostname_exec',`
+ gen_require(`
diff --git a/policy/modules/system/hostname.te b/policy/modules/system/hostname.te
index f6cbda9..51e9aef 100644
--- a/policy/modules/system/hostname.te
@@ -26830,7 +30001,7 @@ index 9a4d3a7..9d960bb 100644
')
+/var/run/systemd(/.*)? gen_context(system_u:object_r:init_var_run_t,s0)
diff --git a/policy/modules/system/init.if b/policy/modules/system/init.if
-index 24e7804..76da5dd 100644
+index 24e7804..2863546 100644
--- a/policy/modules/system/init.if
+++ b/policy/modules/system/init.if
@@ -1,5 +1,21 @@
@@ -27213,11 +30384,11 @@ index 24e7804..76da5dd 100644
+ type init_t;
+ ')
+
-+ dontaudit $1 init_t:unix_stream_socket { getattr read write };
++ dontaudit $1 init_t:unix_stream_socket { getattr read write ioctl };
')
########################################
-@@ -743,22 +923,23 @@ interface(`init_write_initctl',`
+@@ -743,22 +923,24 @@ interface(`init_write_initctl',`
interface(`init_telinit',`
gen_require(`
type initctl_t;
@@ -27242,6 +30413,7 @@ index 24e7804..76da5dd 100644
- ')
+ ps_process_pattern($1, init_t)
+ allow $1 init_t:process signal;
++ dontaudit $1 self:capability net_admin;
+ # upstart uses a datagram socket instead of initctl pipe
+ allow $1 self:unix_dgram_socket create_socket_perms;
+ allow $1 init_t:unix_dgram_socket sendto;
@@ -27250,7 +30422,7 @@ index 24e7804..76da5dd 100644
')
########################################
-@@ -787,7 +968,7 @@ interface(`init_rw_initctl',`
+@@ -787,7 +969,7 @@ interface(`init_rw_initctl',`
##
##
##
@@ -27259,7 +30431,7 @@ index 24e7804..76da5dd 100644
##
##
#
-@@ -830,11 +1011,12 @@ interface(`init_script_file_entry_type',`
+@@ -830,11 +1012,12 @@ interface(`init_script_file_entry_type',`
#
interface(`init_spec_domtrans_script',`
gen_require(`
@@ -27274,7 +30446,7 @@ index 24e7804..76da5dd 100644
ifdef(`distro_gentoo',`
gen_require(`
-@@ -845,11 +1027,11 @@ interface(`init_spec_domtrans_script',`
+@@ -845,11 +1028,11 @@ interface(`init_spec_domtrans_script',`
')
ifdef(`enable_mcs',`
@@ -27288,7 +30460,7 @@ index 24e7804..76da5dd 100644
')
')
-@@ -865,19 +1047,41 @@ interface(`init_spec_domtrans_script',`
+@@ -865,19 +1048,41 @@ interface(`init_spec_domtrans_script',`
#
interface(`init_domtrans_script',`
gen_require(`
@@ -27334,7 +30506,7 @@ index 24e7804..76da5dd 100644
')
########################################
-@@ -933,9 +1137,14 @@ interface(`init_script_file_domtrans',`
+@@ -933,9 +1138,14 @@ interface(`init_script_file_domtrans',`
interface(`init_labeled_script_domtrans',`
gen_require(`
type initrc_t;
@@ -27349,7 +30521,7 @@ index 24e7804..76da5dd 100644
files_search_etc($1)
')
-@@ -1012,6 +1221,42 @@ interface(`init_read_state',`
+@@ -1012,6 +1222,42 @@ interface(`init_read_state',`
########################################
##
@@ -27392,7 +30564,7 @@ index 24e7804..76da5dd 100644
## Ptrace init
##
##
-@@ -1026,7 +1271,9 @@ interface(`init_ptrace',`
+@@ -1026,7 +1272,9 @@ interface(`init_ptrace',`
type init_t;
')
@@ -27403,7 +30575,7 @@ index 24e7804..76da5dd 100644
')
########################################
-@@ -1125,6 +1372,25 @@ interface(`init_getattr_all_script_files',`
+@@ -1125,6 +1373,25 @@ interface(`init_getattr_all_script_files',`
########################################
##
@@ -27429,7 +30601,7 @@ index 24e7804..76da5dd 100644
## Read all init script files.
##
##
-@@ -1144,6 +1410,24 @@ interface(`init_read_all_script_files',`
+@@ -1144,6 +1411,24 @@ interface(`init_read_all_script_files',`
#######################################
##
@@ -27454,7 +30626,7 @@ index 24e7804..76da5dd 100644
## Dontaudit read all init script files.
##
##
-@@ -1195,12 +1479,7 @@ interface(`init_read_script_state',`
+@@ -1195,12 +1480,7 @@ interface(`init_read_script_state',`
')
kernel_search_proc($1)
@@ -27468,69 +30640,113 @@ index 24e7804..76da5dd 100644
')
########################################
-@@ -1440,7 +1719,7 @@ interface(`init_dbus_send_script',`
+@@ -1314,7 +1594,7 @@ interface(`init_signal_script',`
+
########################################
##
- ## Send and receive messages from
--## init scripts over dbus.
-+## init over dbus.
+-## Send null signals to init scripts.
++## Send kill signals to init scripts.
##
##
##
-@@ -1448,23 +1727,44 @@ interface(`init_dbus_send_script',`
+@@ -1322,17 +1602,17 @@ interface(`init_signal_script',`
##
##
#
--interface(`init_dbus_chat_script',`
-+interface(`init_dbus_chat',`
+-interface(`init_signull_script',`
++interface(`init_sigkill_script',`
gen_require(`
-- type initrc_t;
-+ type init_t;
- class dbus send_msg;
+ type initrc_t;
')
-- allow $1 initrc_t:dbus send_msg;
-- allow initrc_t $1:dbus send_msg;
-+ allow $1 init_t:dbus send_msg;
-+ allow init_t $1:dbus send_msg;
+- allow $1 initrc_t:process signull;
++ allow $1 initrc_t:process sigkill;
')
########################################
##
--## Read and write the init script pty.
-+## Send and receive messages from
-+## init scripts over dbus.
+-## Read and write init script unnamed pipes.
++## Send null signals to init scripts.
##
--##
--##
--## Read and write the init script pty. This
+ ##
+ ##
+@@ -1340,17 +1620,17 @@ interface(`init_signull_script',`
+ ##
+ ##
+ #
+-interface(`init_rw_script_pipes',`
++interface(`init_signull_script',`
+ gen_require(`
+ type initrc_t;
+ ')
+
+- allow $1 initrc_t:fifo_file { read write };
++ allow $1 initrc_t:process signull;
+ ')
+
+ ########################################
+ ##
+-## Send UDP network traffic to init scripts. (Deprecated)
++## Read and write init script unnamed pipes.
+ ##
+ ##
+ ##
+@@ -1358,7 +1638,25 @@ interface(`init_rw_script_pipes',`
+ ##
+ ##
+ #
+-interface(`init_udp_send_script',`
++interface(`init_rw_script_pipes',`
++ gen_require(`
++ type initrc_t;
++ ')
++
++ allow $1 initrc_t:fifo_file { read write };
++')
++
++########################################
++##
++## Send UDP network traffic to init scripts. (Deprecated)
++##
+##
+##
+## Domain allowed access.
+##
+##
+#
-+interface(`init_dbus_chat_script',`
++interface(`init_udp_send_script',`
+ refpolicywarn(`$0($*) has been deprecated.')
+ ')
+
+@@ -1440,6 +1738,27 @@ interface(`init_dbus_send_script',`
+ ########################################
+ ##
+ ## Send and receive messages from
++## init over dbus.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`init_dbus_chat',`
+ gen_require(`
-+ type initrc_t;
++ type init_t;
+ class dbus send_msg;
+ ')
+
-+ allow $1 initrc_t:dbus send_msg;
-+ allow initrc_t $1:dbus send_msg;
++ allow $1 init_t:dbus send_msg;
++ allow init_t $1:dbus send_msg;
+')
+
+########################################
+##
-+## Read and write the init script pty.
-+##
-+##
-+##
-+## Read and write the init script pty. This
- ## pty is generally opened by the open_init_pty
- ## portion of the run_init program so that the
- ## daemon does not require direct access to
-@@ -1526,6 +1826,25 @@ interface(`init_getattr_script_status_files',`
++## Send and receive messages from
+ ## init scripts over dbus.
+ ##
+ ##
+@@ -1526,6 +1845,25 @@ interface(`init_getattr_script_status_files',`
########################################
##
@@ -27556,7 +30772,7 @@ index 24e7804..76da5dd 100644
## Do not audit attempts to read init script
## status files.
##
-@@ -1584,6 +1903,24 @@ interface(`init_rw_script_tmp_files',`
+@@ -1584,6 +1922,24 @@ interface(`init_rw_script_tmp_files',`
########################################
##
@@ -27581,7 +30797,7 @@ index 24e7804..76da5dd 100644
## Create files in a init script
## temporary data directory.
##
-@@ -1656,6 +1993,43 @@ interface(`init_read_utmp',`
+@@ -1656,6 +2012,43 @@ interface(`init_read_utmp',`
########################################
##
@@ -27625,7 +30841,7 @@ index 24e7804..76da5dd 100644
## Do not audit attempts to write utmp.
##
##
-@@ -1744,7 +2118,7 @@ interface(`init_dontaudit_rw_utmp',`
+@@ -1744,7 +2137,7 @@ interface(`init_dontaudit_rw_utmp',`
type initrc_var_run_t;
')
@@ -27634,7 +30850,7 @@ index 24e7804..76da5dd 100644
')
########################################
-@@ -1785,6 +2159,133 @@ interface(`init_pid_filetrans_utmp',`
+@@ -1785,6 +2178,133 @@ interface(`init_pid_filetrans_utmp',`
files_pid_filetrans($1, initrc_var_run_t, file, "utmp")
')
@@ -27768,7 +30984,7 @@ index 24e7804..76da5dd 100644
########################################
##
## Allow the specified domain to connect to daemon with a tcp socket
-@@ -1819,3 +2320,360 @@ interface(`init_udp_recvfrom_all_daemons',`
+@@ -1819,3 +2339,450 @@ interface(`init_udp_recvfrom_all_daemons',`
')
corenet_udp_recvfrom_labeled($1, daemon)
')
@@ -28110,6 +31326,96 @@ index 24e7804..76da5dd 100644
+
+########################################
+##
++## Tell init to do an unknown access.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`init_start_transient_unit',`
++ gen_require(`
++ type init_t;
++ ')
++
++ allow $1 init_t:service start;
++')
++
++########################################
++##
++## Tell init to do an unknown access.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`init_stop_transient_unit',`
++ gen_require(`
++ type init_t;
++ ')
++
++ allow $1 init_t:service stop;
++')
++
++########################################
++##
++## Tell init to do an unknown access.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`init_reload_transient_unit',`
++ gen_require(`
++ type init_t;
++ ')
++
++ allow $1 init_t:service reload;
++')
++
++########################################
++##
++## Tell init to do an unknown access.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`init_status_transient_unit',`
++ gen_require(`
++ type init_t;
++ ')
++
++ allow $1 init_t:service status;
++')
++
++########################################
++##
++## Tell init to do an unknown access.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`init_manage_transient_unit',`
++ gen_require(`
++ type init_t;
++ ')
++
++ allow $1 init_t:service { start stop reload status };
++')
++
++########################################
++##
+## Transition to init named content
+##
+##
@@ -28130,7 +31436,7 @@ index 24e7804..76da5dd 100644
+ files_etc_filetrans($1, machineid_t, file, "machine-id" )
+')
diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te
-index dd3be8d..0996734 100644
+index dd3be8d..c983546 100644
--- a/policy/modules/system/init.te
+++ b/policy/modules/system/init.te
@@ -11,10 +11,31 @@ gen_require(`
@@ -28185,7 +31491,7 @@ index dd3be8d..0996734 100644
# Mark file type as a daemon run directory
attribute daemonrundir;
-@@ -35,12 +64,14 @@ attribute daemonrundir;
+@@ -35,12 +64,20 @@ attribute daemonrundir;
#
# init_t is the domain of the init process.
#
@@ -28198,10 +31504,16 @@ index dd3be8d..0996734 100644
kernel_domtrans_to(init_t, init_exec_t)
role system_r types init_t;
+init_initrc_domain(init_t)
++
++#
++# init_tmp_t is the type for content in /tmp directory
++#
++type init_tmp_t;
++files_tmp_file(init_tmp_t)
#
# init_var_run_t is the type for /var/run/shutdown.pid.
-@@ -49,6 +80,15 @@ type init_var_run_t;
+@@ -49,6 +86,15 @@ type init_var_run_t;
files_pid_file(init_var_run_t)
#
@@ -28217,7 +31529,7 @@ index dd3be8d..0996734 100644
# initctl_t is the type of the named pipe created
# by init during initialization. This pipe is used
# to communicate with init.
-@@ -57,7 +97,7 @@ type initctl_t;
+@@ -57,7 +103,7 @@ type initctl_t;
files_type(initctl_t)
mls_trusted_object(initctl_t)
@@ -28226,7 +31538,7 @@ index dd3be8d..0996734 100644
type initrc_exec_t, init_script_file_type;
domain_type(initrc_t)
domain_entry_file(initrc_t, initrc_exec_t)
-@@ -98,7 +138,9 @@ ifdef(`enable_mls',`
+@@ -98,7 +144,9 @@ ifdef(`enable_mls',`
#
# Use capabilities. old rule:
@@ -28237,8 +31549,12 @@ index dd3be8d..0996734 100644
# is ~sys_module really needed? observed:
# sys_boot
# sys_tty_config
-@@ -110,12 +152,33 @@ allow init_t self:fifo_file rw_fifo_file_perms;
+@@ -108,14 +156,42 @@ allow init_t self:capability ~sys_module;
+
+ allow init_t self:fifo_file rw_fifo_file_perms;
++allow init_t self:service manage_service_perms;
++
# Re-exec itself
can_exec(init_t, init_exec_t)
-
@@ -28256,6 +31572,11 @@ index dd3be8d..0996734 100644
+allow initrc_t init_t:unix_stream_socket { connectto rw_stream_socket_perms sendto };
+allow initrc_t init_t:fifo_file rw_fifo_file_perms;
+
++manage_files_pattern(init_t, init_tmp_t, init_tmp_t)
++manage_dirs_pattern(init_t, init_tmp_t, init_tmp_t)
++manage_lnk_files_pattern(init_t, init_tmp_t, init_tmp_t)
++files_tmp_filetrans(init_t, init_tmp_t, { file })
++
+manage_dirs_pattern(init_t, init_var_lib_t, init_var_lib_t)
+manage_files_pattern(init_t, init_var_lib_t, init_var_lib_t)
+manage_lnk_files_pattern(init_t, init_var_lib_t, init_var_lib_t)
@@ -28277,7 +31598,7 @@ index dd3be8d..0996734 100644
allow init_t initctl_t:fifo_file manage_fifo_file_perms;
dev_filetrans(init_t, initctl_t, fifo_file)
-@@ -125,13 +188,18 @@ allow init_t initrc_var_run_t:file { rw_file_perms setattr };
+@@ -125,13 +201,18 @@ allow init_t initrc_var_run_t:file { rw_file_perms setattr };
kernel_read_system_state(init_t)
kernel_share_state(init_t)
@@ -28297,11 +31618,12 @@ index dd3be8d..0996734 100644
domain_getpgid_all_domains(init_t)
domain_kill_all_domains(init_t)
-@@ -139,14 +207,20 @@ domain_signal_all_domains(init_t)
+@@ -139,14 +220,22 @@ domain_signal_all_domains(init_t)
domain_signull_all_domains(init_t)
domain_sigstop_all_domains(init_t)
domain_sigchld_all_domains(init_t)
+domain_read_all_domains_state(init_t)
++domain_getattr_all_domains(init_t)
files_read_etc_files(init_t)
+files_read_all_pids(init_t)
@@ -28315,10 +31637,11 @@ index dd3be8d..0996734 100644
# Run /etc/X11/prefdm:
files_exec_etc_files(init_t)
+files_read_usr_files(init_t)
++files_write_root_dirs(init_t)
# file descriptors inherited from the rootfs:
files_dontaudit_rw_root_files(init_t)
files_dontaudit_rw_root_chr_files(init_t)
-@@ -156,28 +230,52 @@ fs_list_inotifyfs(init_t)
+@@ -156,28 +245,53 @@ fs_list_inotifyfs(init_t)
fs_write_ramfs_sockets(init_t)
mcs_process_set_categories(init_t)
@@ -28358,14 +31681,15 @@ index dd3be8d..0996734 100644
+logging_send_audit_msgs(init_t)
logging_rw_generic_logs(init_t)
+logging_relabel_devlog_dev(init_t)
++logging_manage_audit_config(init_t)
seutil_read_config(init_t)
+seutil_read_module_store(init_t)
-+
-+miscfiles_manage_localization(init_t)
-+miscfiles_filetrans_named_content(init_t)
-miscfiles_read_localization(init_t)
++miscfiles_manage_localization(init_t)
++miscfiles_filetrans_named_content(init_t)
++
+userdom_use_user_ttys(init_t)
+userdom_manage_tmp_dirs(init_t)
+userdom_manage_tmp_sockets(init_t)
@@ -28374,7 +31698,7 @@ index dd3be8d..0996734 100644
ifdef(`distro_gentoo',`
allow init_t self:process { getcap setcap };
-@@ -186,29 +284,208 @@ ifdef(`distro_gentoo',`
+@@ -186,29 +300,226 @@ ifdef(`distro_gentoo',`
')
ifdef(`distro_redhat',`
@@ -28404,20 +31728,21 @@ index dd3be8d..0996734 100644
+
+optional_policy(`
+ chronyd_read_keys(init_t)
-+')
-+
-+optional_policy(`
-+ kdump_read_crash(init_t)
')
optional_policy(`
- auth_rw_login_records(init_t)
-+ gnome_filetrans_home_content(init_t)
-+ gnome_manage_data(init_t)
++ kdump_read_crash(init_t)
')
optional_policy(`
++ gnome_filetrans_home_content(init_t)
++ gnome_manage_data(init_t)
++')
++
++optional_policy(`
+ iscsi_read_lib_files(init_t)
++ iscsi_manage_lock(init_t)
+')
+
+optional_policy(`
@@ -28549,8 +31874,25 @@ index dd3be8d..0996734 100644
+auth_rw_login_records(init_t)
+auth_domtrans_chk_passwd(init_t)
+
-+optional_policy(`
-+ ipsec_read_config(init_t)
++ifdef(`distro_redhat',`
++ # it comes from setupr scripts used in systemd unit files
++ # has been covered by initrc_t
++ optional_policy(`
++ bind_manage_config_dirs(init_t)
++ bind_manage_config(init_t)
++ bind_write_config(init_t)
++ bind_setattr_zone_dirs(init_t)
++ ')
++
++ optional_policy(`
++ ipsec_read_config(init_t)
++ ipsec_manage_pid(init_t)
++ ipsec_stream_connect(init_t)
++ ')
++
++ optional_policy(`
++ rpc_manage_nfs_state_data(init_t)
++ ')
+')
+
+optional_policy(`
@@ -28570,9 +31912,10 @@ index dd3be8d..0996734 100644
+ optional_policy(`
+ devicekit_dbus_chat_power(init_t)
+ ')
-+')
-+
-+optional_policy(`
+ ')
+
+ optional_policy(`
+- nscd_use(init_t)
+ # /var/run/dovecot/login/ssl-parameters.dat is a hard link to
+ # /var/lib/dovecot/ssl-parameters.dat and init tries to clean up
+ # the directory. But we do not want to allow this.
@@ -28582,16 +31925,15 @@ index dd3be8d..0996734 100644
+
+optional_policy(`
+ networkmanager_stream_connect(init_t)
- ')
-
- optional_policy(`
-- nscd_use(init_t)
++')
++
++optional_policy(`
+ plymouthd_stream_connect(init_t)
+ plymouthd_exec_plymouth(init_t)
')
optional_policy(`
-@@ -216,7 +493,30 @@ optional_policy(`
+@@ -216,7 +527,30 @@ optional_policy(`
')
optional_policy(`
@@ -28622,7 +31964,7 @@ index dd3be8d..0996734 100644
')
########################################
-@@ -225,8 +525,9 @@ optional_policy(`
+@@ -225,8 +559,9 @@ optional_policy(`
#
allow initrc_t self:process { getpgid setsched setpgid setrlimit getsched };
@@ -28634,7 +31976,7 @@ index dd3be8d..0996734 100644
allow initrc_t self:passwd rootok;
allow initrc_t self:key manage_key_perms;
-@@ -257,12 +558,16 @@ manage_fifo_files_pattern(initrc_t, initrc_state_t, initrc_state_t)
+@@ -257,12 +592,16 @@ manage_fifo_files_pattern(initrc_t, initrc_state_t, initrc_state_t)
allow initrc_t initrc_var_run_t:file manage_file_perms;
files_pid_filetrans(initrc_t, initrc_var_run_t, file)
@@ -28651,7 +31993,7 @@ index dd3be8d..0996734 100644
manage_dirs_pattern(initrc_t, initrc_var_log_t, initrc_var_log_t)
manage_files_pattern(initrc_t, initrc_var_log_t, initrc_var_log_t)
-@@ -278,23 +583,36 @@ kernel_change_ring_buffer_level(initrc_t)
+@@ -278,23 +617,36 @@ kernel_change_ring_buffer_level(initrc_t)
kernel_clear_ring_buffer(initrc_t)
kernel_get_sysvipc_info(initrc_t)
kernel_read_all_sysctls(initrc_t)
@@ -28694,7 +32036,7 @@ index dd3be8d..0996734 100644
corenet_tcp_sendrecv_all_ports(initrc_t)
corenet_udp_sendrecv_all_ports(initrc_t)
corenet_tcp_connect_all_ports(initrc_t)
-@@ -302,9 +620,11 @@ corenet_sendrecv_all_client_packets(initrc_t)
+@@ -302,9 +654,11 @@ corenet_sendrecv_all_client_packets(initrc_t)
dev_read_rand(initrc_t)
dev_read_urand(initrc_t)
@@ -28706,7 +32048,7 @@ index dd3be8d..0996734 100644
dev_rw_sysfs(initrc_t)
dev_list_usbfs(initrc_t)
dev_read_framebuffer(initrc_t)
-@@ -312,8 +632,10 @@ dev_write_framebuffer(initrc_t)
+@@ -312,8 +666,10 @@ dev_write_framebuffer(initrc_t)
dev_read_realtime_clock(initrc_t)
dev_read_sound_mixer(initrc_t)
dev_write_sound_mixer(initrc_t)
@@ -28717,7 +32059,7 @@ index dd3be8d..0996734 100644
dev_delete_lvm_control_dev(initrc_t)
dev_manage_generic_symlinks(initrc_t)
dev_manage_generic_files(initrc_t)
-@@ -321,8 +643,7 @@ dev_manage_generic_files(initrc_t)
+@@ -321,8 +677,7 @@ dev_manage_generic_files(initrc_t)
dev_delete_generic_symlinks(initrc_t)
dev_getattr_all_blk_files(initrc_t)
dev_getattr_all_chr_files(initrc_t)
@@ -28727,7 +32069,7 @@ index dd3be8d..0996734 100644
domain_kill_all_domains(initrc_t)
domain_signal_all_domains(initrc_t)
-@@ -331,7 +652,6 @@ domain_sigstop_all_domains(initrc_t)
+@@ -331,7 +686,6 @@ domain_sigstop_all_domains(initrc_t)
domain_sigchld_all_domains(initrc_t)
domain_read_all_domains_state(initrc_t)
domain_getattr_all_domains(initrc_t)
@@ -28735,7 +32077,7 @@ index dd3be8d..0996734 100644
domain_getsession_all_domains(initrc_t)
domain_use_interactive_fds(initrc_t)
# for lsof which is used by alsa shutdown:
-@@ -339,6 +659,7 @@ domain_dontaudit_getattr_all_udp_sockets(initrc_t)
+@@ -339,6 +693,7 @@ domain_dontaudit_getattr_all_udp_sockets(initrc_t)
domain_dontaudit_getattr_all_tcp_sockets(initrc_t)
domain_dontaudit_getattr_all_dgram_sockets(initrc_t)
domain_dontaudit_getattr_all_pipes(initrc_t)
@@ -28743,7 +32085,7 @@ index dd3be8d..0996734 100644
files_getattr_all_dirs(initrc_t)
files_getattr_all_files(initrc_t)
-@@ -346,14 +667,15 @@ files_getattr_all_symlinks(initrc_t)
+@@ -346,14 +701,15 @@ files_getattr_all_symlinks(initrc_t)
files_getattr_all_pipes(initrc_t)
files_getattr_all_sockets(initrc_t)
files_purge_tmp(initrc_t)
@@ -28761,7 +32103,7 @@ index dd3be8d..0996734 100644
files_read_usr_files(initrc_t)
files_manage_urandom_seed(initrc_t)
files_manage_generic_spool(initrc_t)
-@@ -363,8 +685,12 @@ files_list_isid_type_dirs(initrc_t)
+@@ -363,8 +719,12 @@ files_list_isid_type_dirs(initrc_t)
files_mounton_isid_type_dirs(initrc_t)
files_list_default(initrc_t)
files_mounton_default(initrc_t)
@@ -28775,7 +32117,7 @@ index dd3be8d..0996734 100644
fs_list_inotifyfs(initrc_t)
fs_register_binary_executable_type(initrc_t)
# rhgb-console writes to ramfs
-@@ -374,10 +700,11 @@ fs_mount_all_fs(initrc_t)
+@@ -374,10 +734,11 @@ fs_mount_all_fs(initrc_t)
fs_unmount_all_fs(initrc_t)
fs_remount_all_fs(initrc_t)
fs_getattr_all_fs(initrc_t)
@@ -28789,7 +32131,7 @@ index dd3be8d..0996734 100644
mcs_process_set_categories(initrc_t)
mls_file_read_all_levels(initrc_t)
-@@ -386,6 +713,7 @@ mls_process_read_up(initrc_t)
+@@ -386,6 +747,7 @@ mls_process_read_up(initrc_t)
mls_process_write_down(initrc_t)
mls_rangetrans_source(initrc_t)
mls_fd_share_all_levels(initrc_t)
@@ -28797,7 +32139,7 @@ index dd3be8d..0996734 100644
selinux_get_enforce_mode(initrc_t)
-@@ -397,6 +725,7 @@ term_use_all_terms(initrc_t)
+@@ -397,6 +759,7 @@ term_use_all_terms(initrc_t)
term_reset_tty_labels(initrc_t)
auth_rw_login_records(initrc_t)
@@ -28805,7 +32147,7 @@ index dd3be8d..0996734 100644
auth_setattr_login_records(initrc_t)
auth_rw_lastlog(initrc_t)
auth_read_pam_pid(initrc_t)
-@@ -415,20 +744,18 @@ logging_read_all_logs(initrc_t)
+@@ -415,20 +778,18 @@ logging_read_all_logs(initrc_t)
logging_append_all_logs(initrc_t)
logging_read_audit_config(initrc_t)
@@ -28829,7 +32171,7 @@ index dd3be8d..0996734 100644
ifdef(`distro_debian',`
dev_setattr_generic_dirs(initrc_t)
-@@ -450,7 +777,6 @@ ifdef(`distro_gentoo',`
+@@ -450,7 +811,6 @@ ifdef(`distro_gentoo',`
allow initrc_t self:process setfscreate;
dev_create_null_dev(initrc_t)
dev_create_zero_dev(initrc_t)
@@ -28837,7 +32179,7 @@ index dd3be8d..0996734 100644
term_create_console_dev(initrc_t)
# unfortunately /sbin/rc does stupid tricks
-@@ -485,6 +811,10 @@ ifdef(`distro_gentoo',`
+@@ -485,6 +845,10 @@ ifdef(`distro_gentoo',`
sysnet_setattr_config(initrc_t)
optional_policy(`
@@ -28848,7 +32190,7 @@ index dd3be8d..0996734 100644
alsa_read_lib(initrc_t)
')
-@@ -505,7 +835,7 @@ ifdef(`distro_redhat',`
+@@ -505,7 +869,7 @@ ifdef(`distro_redhat',`
# Red Hat systems seem to have a stray
# fd open from the initrd
@@ -28857,7 +32199,7 @@ index dd3be8d..0996734 100644
files_dontaudit_read_root_files(initrc_t)
# These seem to be from the initrd
-@@ -520,6 +850,7 @@ ifdef(`distro_redhat',`
+@@ -520,6 +884,7 @@ ifdef(`distro_redhat',`
files_create_boot_dirs(initrc_t)
files_create_boot_flag(initrc_t)
files_rw_boot_symlinks(initrc_t)
@@ -28865,7 +32207,7 @@ index dd3be8d..0996734 100644
# wants to read /.fonts directory
files_read_default_files(initrc_t)
files_mountpoint(initrc_tmp_t)
-@@ -540,6 +871,7 @@ ifdef(`distro_redhat',`
+@@ -540,6 +905,7 @@ ifdef(`distro_redhat',`
miscfiles_rw_localization(initrc_t)
miscfiles_setattr_localization(initrc_t)
miscfiles_relabel_localization(initrc_t)
@@ -28873,7 +32215,7 @@ index dd3be8d..0996734 100644
miscfiles_read_fonts(initrc_t)
miscfiles_read_hwdata(initrc_t)
-@@ -549,8 +881,44 @@ ifdef(`distro_redhat',`
+@@ -549,8 +915,44 @@ ifdef(`distro_redhat',`
')
optional_policy(`
@@ -28918,7 +32260,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -558,14 +926,31 @@ ifdef(`distro_redhat',`
+@@ -558,14 +960,31 @@ ifdef(`distro_redhat',`
rpc_write_exports(initrc_t)
rpc_manage_nfs_state_data(initrc_t)
')
@@ -28950,7 +32292,7 @@ index dd3be8d..0996734 100644
')
')
-@@ -576,6 +961,39 @@ ifdef(`distro_suse',`
+@@ -576,6 +995,39 @@ ifdef(`distro_suse',`
')
')
@@ -28990,7 +32332,7 @@ index dd3be8d..0996734 100644
optional_policy(`
amavis_search_lib(initrc_t)
amavis_setattr_pid_files(initrc_t)
-@@ -588,6 +1006,8 @@ optional_policy(`
+@@ -588,6 +1040,8 @@ optional_policy(`
optional_policy(`
apache_read_config(initrc_t)
apache_list_modules(initrc_t)
@@ -28999,7 +32341,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -609,6 +1029,7 @@ optional_policy(`
+@@ -609,6 +1063,7 @@ optional_policy(`
optional_policy(`
cgroup_stream_connect_cgred(initrc_t)
@@ -29007,7 +32349,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -625,6 +1046,17 @@ optional_policy(`
+@@ -625,6 +1080,17 @@ optional_policy(`
')
optional_policy(`
@@ -29025,7 +32367,7 @@ index dd3be8d..0996734 100644
dev_getattr_printer_dev(initrc_t)
cups_read_log(initrc_t)
-@@ -641,9 +1073,13 @@ optional_policy(`
+@@ -641,9 +1107,13 @@ optional_policy(`
dbus_connect_system_bus(initrc_t)
dbus_system_bus_client(initrc_t)
dbus_read_config(initrc_t)
@@ -29039,7 +32381,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -656,15 +1092,11 @@ optional_policy(`
+@@ -656,15 +1126,11 @@ optional_policy(`
')
optional_policy(`
@@ -29057,7 +32399,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -685,6 +1117,15 @@ optional_policy(`
+@@ -685,6 +1151,15 @@ optional_policy(`
')
optional_policy(`
@@ -29073,7 +32415,7 @@ index dd3be8d..0996734 100644
inn_exec_config(initrc_t)
')
-@@ -725,6 +1166,7 @@ optional_policy(`
+@@ -725,6 +1200,7 @@ optional_policy(`
lpd_list_spool(initrc_t)
lpd_read_config(initrc_t)
@@ -29081,7 +32423,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -742,7 +1184,13 @@ optional_policy(`
+@@ -742,7 +1218,13 @@ optional_policy(`
')
optional_policy(`
@@ -29096,7 +32438,7 @@ index dd3be8d..0996734 100644
mta_dontaudit_read_spool_symlinks(initrc_t)
')
-@@ -765,6 +1213,10 @@ optional_policy(`
+@@ -765,6 +1247,10 @@ optional_policy(`
')
optional_policy(`
@@ -29107,7 +32449,7 @@ index dd3be8d..0996734 100644
postgresql_manage_db(initrc_t)
postgresql_read_config(initrc_t)
')
-@@ -774,10 +1226,20 @@ optional_policy(`
+@@ -774,10 +1260,20 @@ optional_policy(`
')
optional_policy(`
@@ -29128,7 +32470,7 @@ index dd3be8d..0996734 100644
quota_manage_flags(initrc_t)
')
-@@ -786,6 +1248,10 @@ optional_policy(`
+@@ -786,6 +1282,10 @@ optional_policy(`
')
optional_policy(`
@@ -29139,7 +32481,7 @@ index dd3be8d..0996734 100644
fs_write_ramfs_sockets(initrc_t)
fs_search_ramfs(initrc_t)
-@@ -807,8 +1273,6 @@ optional_policy(`
+@@ -807,8 +1307,6 @@ optional_policy(`
# bash tries ioctl for some reason
files_dontaudit_ioctl_all_pids(initrc_t)
@@ -29148,7 +32490,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -817,6 +1281,10 @@ optional_policy(`
+@@ -817,6 +1315,10 @@ optional_policy(`
')
optional_policy(`
@@ -29159,7 +32501,7 @@ index dd3be8d..0996734 100644
# shorewall-init script run /var/lib/shorewall/firewall
shorewall_lib_domtrans(initrc_t)
')
-@@ -826,10 +1294,12 @@ optional_policy(`
+@@ -826,10 +1328,12 @@ optional_policy(`
squid_manage_logs(initrc_t)
')
@@ -29172,12 +32514,14 @@ index dd3be8d..0996734 100644
optional_policy(`
ssh_dontaudit_read_server_keys(initrc_t)
-@@ -856,12 +1326,33 @@ optional_policy(`
+@@ -856,12 +1360,35 @@ optional_policy(`
')
optional_policy(`
+ virt_read_config(init_t)
+ virt_stream_connect(init_t)
++ virt_noatsecure(init_t)
++ virt_rlimitinh(init_t)
+')
+
+optional_policy(`
@@ -29207,7 +32551,7 @@ index dd3be8d..0996734 100644
ifdef(`distro_redhat',`
# system-config-services causes avc messages that should be dontaudited
-@@ -871,6 +1362,18 @@ optional_policy(`
+@@ -871,6 +1398,18 @@ optional_policy(`
optional_policy(`
mono_domtrans(initrc_t)
')
@@ -29226,7 +32570,7 @@ index dd3be8d..0996734 100644
')
optional_policy(`
-@@ -886,6 +1389,10 @@ optional_policy(`
+@@ -886,6 +1425,10 @@ optional_policy(`
')
optional_policy(`
@@ -29237,7 +32581,7 @@ index dd3be8d..0996734 100644
# Set device ownerships/modes.
xserver_setattr_console_pipes(initrc_t)
-@@ -896,3 +1403,218 @@ optional_policy(`
+@@ -896,3 +1439,218 @@ optional_policy(`
optional_policy(`
zebra_read_config(initrc_t)
')
@@ -29457,48 +32801,59 @@ index dd3be8d..0996734 100644
+ ')
+ ')
diff --git a/policy/modules/system/ipsec.fc b/policy/modules/system/ipsec.fc
-index 662e79b..a199ffd 100644
+index 662e79b..15116db 100644
--- a/policy/modules/system/ipsec.fc
+++ b/policy/modules/system/ipsec.fc
-@@ -1,14 +1,22 @@
+@@ -1,14 +1,28 @@
/etc/rc\.d/init\.d/ipsec -- gen_context(system_u:object_r:ipsec_initrc_exec_t,s0)
/etc/rc\.d/init\.d/racoon -- gen_context(system_u:object_r:ipsec_initrc_exec_t,s0)
+/etc/rc\.d/init\.d/strongswan -- gen_context(system_u:object_r:ipsec_initrc_exec_t,s0)
-/etc/ipsec\.secrets -- gen_context(system_u:object_r:ipsec_key_file_t,s0)
++/usr/lib/systemd/system/ipsec.* -- gen_context(system_u:object_r:ipsec_mgmt_unit_file_t,s0)
+/usr/lib/systemd/system/strongswan.* -- gen_context(system_u:object_r:ipsec_mgmt_unit_file_t,s0)
++/usr/lib/systemd/system/strongimcv.* -- gen_context(system_u:object_r:ipsec_mgmt_unit_file_t,s0)
+
+/etc/ipsec\.secrets.* -- gen_context(system_u:object_r:ipsec_key_file_t,s0)
/etc/ipsec\.conf -- gen_context(system_u:object_r:ipsec_conf_file_t,s0)
+/etc/strongswan/ipsec\.secrets.* -- gen_context(system_u:object_r:ipsec_key_file_t,s0)
+/etc/strongswan/ipsec\.conf -- gen_context(system_u:object_r:ipsec_conf_file_t,s0)
++/etc/strongimcv/ipsec\.secrets.* -- gen_context(system_u:object_r:ipsec_key_file_t,s0)
++/etc/strongimcv/ipsec\.conf -- gen_context(system_u:object_r:ipsec_conf_file_t,s0)
/etc/racoon/psk\.txt -- gen_context(system_u:object_r:ipsec_key_file_t,s0)
/etc/racoon(/.*)? gen_context(system_u:object_r:ipsec_conf_file_t,s0)
/etc/racoon/certs(/.*)? gen_context(system_u:object_r:ipsec_key_file_t,s0)
+/etc/strongswan(/.*)? gen_context(system_u:object_r:ipsec_conf_file_t,s0)
++/etc/strongimcv(/.*)? gen_context(system_u:object_r:ipsec_conf_file_t,s0)
+
/etc/ipsec\.d(/.*)? gen_context(system_u:object_r:ipsec_key_file_t,s0)
+/etc/strongswan/ipsec\.d(/.*)? gen_context(system_u:object_r:ipsec_key_file_t,s0)
++/etc/strongimcv/ipsec\.d(/.*)? gen_context(system_u:object_r:ipsec_key_file_t,s0)
/sbin/setkey -- gen_context(system_u:object_r:setkey_exec_t,s0)
-@@ -26,16 +34,23 @@
+@@ -26,16 +40,27 @@
/usr/libexec/ipsec/pluto -- gen_context(system_u:object_r:ipsec_exec_t,s0)
/usr/libexec/ipsec/spi -- gen_context(system_u:object_r:ipsec_exec_t,s0)
/usr/libexec/nm-openswan-service -- gen_context(system_u:object_r:ipsec_mgmt_exec_t,s0)
-+/usr/libexec/strongswan/.* -- gen_context(system_u:object_r:ipsec_exec_t,s0)
++/usr/libexec/nm-libreswan-service -- gen_context(system_u:object_r:ipsec_mgmt_exec_t,s0)
++/usr/libexec/strongswan/.* -- gen_context(system_u:object_r:ipsec_exec_t,s0)
++/usr/libexec/strongimcv/.* -- gen_context(system_u:object_r:ipsec_exec_t,s0)
/usr/sbin/ipsec -- gen_context(system_u:object_r:ipsec_mgmt_exec_t,s0)
/usr/sbin/racoon -- gen_context(system_u:object_r:racoon_exec_t,s0)
/usr/sbin/setkey -- gen_context(system_u:object_r:setkey_exec_t,s0)
+/usr/sbin/strongswan -- gen_context(system_u:object_r:ipsec_mgmt_exec_t,s0)
++/usr/sbin/strongimcv -- gen_context(system_u:object_r:ipsec_mgmt_exec_t,s0)
/var/lock/subsys/ipsec -- gen_context(system_u:object_r:ipsec_mgmt_lock_t,s0)
+/var/lock/subsys/strongswan -- gen_context(system_u:object_r:ipsec_mgmt_lock_t,s0)
++/var/lock/subsys/strongimcv -- gen_context(system_u:object_r:ipsec_mgmt_lock_t,s0)
- /var/log/pluto\.log -- gen_context(system_u:object_r:ipsec_log_t,s0)
+-/var/log/pluto\.log -- gen_context(system_u:object_r:ipsec_log_t,s0)
++/var/log/pluto\.log.* -- gen_context(system_u:object_r:ipsec_log_t,s0)
/var/racoon(/.*)? gen_context(system_u:object_r:ipsec_var_run_t,s0)
@@ -29509,7 +32864,7 @@ index 662e79b..a199ffd 100644
+/var/run/pluto/ipsec\.info -- gen_context(system_u:object_r:ipsec_mgmt_var_run_t, s0)
+/var/run/pluto/ipsec_setup\.pid -- gen_context(system_u:object_r:ipsec_mgmt_var_run_t, s0)
diff --git a/policy/modules/system/ipsec.if b/policy/modules/system/ipsec.if
-index 0d4c8d3..e6ffda3 100644
+index 0d4c8d3..3a3ec52 100644
--- a/policy/modules/system/ipsec.if
+++ b/policy/modules/system/ipsec.if
@@ -55,6 +55,64 @@ interface(`ipsec_domtrans_mgmt',`
@@ -29670,7 +33025,15 @@ index 0d4c8d3..e6ffda3 100644
')
########################################
-@@ -369,3 +479,26 @@ interface(`ipsec_run_setkey',`
+@@ -282,6 +392,7 @@ interface(`ipsec_manage_pid',`
+
+ files_search_pids($1)
+ manage_files_pattern($1, ipsec_var_run_t, ipsec_var_run_t)
++ manage_sock_files_pattern($1, ipsec_var_run_t, ipsec_var_run_t)
+ ')
+
+ ########################################
+@@ -369,3 +480,26 @@ interface(`ipsec_run_setkey',`
ipsec_domtrans_setkey($1)
role $2 types setkey_t;
')
@@ -29698,7 +33061,7 @@ index 0d4c8d3..e6ffda3 100644
+ ps_process_pattern($1, ipsec_mgmt_t)
+')
diff --git a/policy/modules/system/ipsec.te b/policy/modules/system/ipsec.te
-index 9e54bf9..ceb7f99 100644
+index 9e54bf9..7ca1e9e 100644
--- a/policy/modules/system/ipsec.te
+++ b/policy/modules/system/ipsec.te
@@ -48,6 +48,9 @@ init_system_domain(ipsec_mgmt_t, ipsec_mgmt_exec_t)
@@ -29720,7 +33083,7 @@ index 9e54bf9..ceb7f99 100644
-allow ipsec_t self:process { getcap setcap getsched signal setsched };
+allow ipsec_t self:capability { net_admin dac_override dac_read_search setpcap sys_nice net_raw setuid setgid };
+dontaudit ipsec_t self:capability sys_tty_config;
-+allow ipsec_t self:process { getcap setcap getsched signal signull setsched };
++allow ipsec_t self:process { getcap setcap getsched signal signull setsched sigkill };
allow ipsec_t self:tcp_socket create_stream_socket_perms;
allow ipsec_t self:udp_socket create_socket_perms;
+allow ipsec_t self:packet_socket create_socket_perms;
@@ -29893,14 +33256,18 @@ index 9e54bf9..ceb7f99 100644
init_read_utmp(ipsec_mgmt_t)
init_use_script_ptys(ipsec_mgmt_t)
-@@ -290,15 +326,18 @@ init_labeled_script_domtrans(ipsec_mgmt_t, ipsec_initrc_exec_t)
+@@ -288,17 +324,22 @@ init_exec_script_files(ipsec_mgmt_t)
+ init_use_fds(ipsec_mgmt_t)
+ init_labeled_script_domtrans(ipsec_mgmt_t, ipsec_initrc_exec_t)
- logging_send_syslog_msg(ipsec_mgmt_t)
+-logging_send_syslog_msg(ipsec_mgmt_t)
++ipsec_mgmt_systemctl(ipsec_mgmt_t)
-miscfiles_read_localization(ipsec_mgmt_t)
-
-seutil_dontaudit_search_config(ipsec_mgmt_t)
--
++logging_send_syslog_msg(ipsec_mgmt_t)
+
sysnet_manage_config(ipsec_mgmt_t)
sysnet_domtrans_ifconfig(ipsec_mgmt_t)
sysnet_etc_filetrans_config(ipsec_mgmt_t)
@@ -29917,7 +33284,7 @@ index 9e54bf9..ceb7f99 100644
optional_policy(`
consoletype_exec(ipsec_mgmt_t)
-@@ -322,6 +361,10 @@ optional_policy(`
+@@ -322,6 +363,10 @@ optional_policy(`
')
optional_policy(`
@@ -29928,7 +33295,7 @@ index 9e54bf9..ceb7f99 100644
modutils_domtrans_insmod(ipsec_mgmt_t)
')
-@@ -335,7 +378,7 @@ optional_policy(`
+@@ -335,7 +380,7 @@ optional_policy(`
#
allow racoon_t self:capability { net_admin net_bind_service };
@@ -29937,7 +33304,7 @@ index 9e54bf9..ceb7f99 100644
allow racoon_t self:unix_dgram_socket { connect create ioctl write };
allow racoon_t self:netlink_selinux_socket { bind create read };
allow racoon_t self:udp_socket create_socket_perms;
-@@ -370,13 +413,12 @@ kernel_request_load_module(racoon_t)
+@@ -370,13 +415,12 @@ kernel_request_load_module(racoon_t)
corecmd_exec_shell(racoon_t)
corecmd_exec_bin(racoon_t)
@@ -29957,7 +33324,7 @@ index 9e54bf9..ceb7f99 100644
corenet_udp_bind_isakmp_port(racoon_t)
corenet_udp_bind_ipsecnat_port(racoon_t)
-@@ -401,10 +443,10 @@ locallogin_use_fds(racoon_t)
+@@ -401,10 +445,10 @@ locallogin_use_fds(racoon_t)
logging_send_syslog_msg(racoon_t)
logging_send_audit_msgs(racoon_t)
@@ -29970,7 +33337,7 @@ index 9e54bf9..ceb7f99 100644
auth_can_read_shadow_passwords(racoon_t)
tunable_policy(`racoon_read_shadow',`
auth_tunable_read_shadow(racoon_t)
-@@ -438,9 +480,8 @@ corenet_setcontext_all_spds(setkey_t)
+@@ -438,9 +482,8 @@ corenet_setcontext_all_spds(setkey_t)
locallogin_use_fds(setkey_t)
@@ -29983,10 +33350,10 @@ index 9e54bf9..ceb7f99 100644
+userdom_use_inherited_user_terminals(setkey_t)
+userdom_read_user_tmp_files(setkey_t)
diff --git a/policy/modules/system/iptables.fc b/policy/modules/system/iptables.fc
-index 1b93eb7..b2532aa 100644
+index 1b93eb7..957deb0 100644
--- a/policy/modules/system/iptables.fc
+++ b/policy/modules/system/iptables.fc
-@@ -1,21 +1,27 @@
+@@ -1,21 +1,32 @@
/etc/rc\.d/init\.d/ip6?tables -- gen_context(system_u:object_r:iptables_initrc_exec_t,s0)
-/etc/rc\.d/init\.d/ebtables -- gen_context(system_u:object_r:iptables_initrc_exec_t,s0)
-/etc/sysconfig/ip6?tables.* -- gen_context(system_u:object_r:iptables_conf_t,s0)
@@ -29995,6 +33362,9 @@ index 1b93eb7..b2532aa 100644
+
+/usr/lib/systemd/system/iptables.* -- gen_context(system_u:object_r:iptables_unit_file_t,s0)
+/usr/lib/systemd/system/ip6tables.* -- gen_context(system_u:object_r:iptables_unit_file_t,s0)
++/usr/lib/systemd/system/ipset.* -- gen_context(system_u:object_r:iptables_unit_file_t,s0)
++
++/usr/libexec/ipset -- gen_context(system_u:object_r:iptables_exec_t,s0)
/sbin/ebtables -- gen_context(system_u:object_r:iptables_exec_t,s0)
/sbin/ebtables-restore -- gen_context(system_u:object_r:iptables_exec_t,s0)
@@ -30005,6 +33375,7 @@ index 1b93eb7..b2532aa 100644
+/sbin/ip6?tables.* -- gen_context(system_u:object_r:iptables_exec_t,s0)
+/sbin/ip6?tables-restore.* -- gen_context(system_u:object_r:iptables_exec_t,s0)
+/sbin/ip6?tables-multi.* -- gen_context(system_u:object_r:iptables_exec_t,s0)
++/sbin/ipset -- gen_context(system_u:object_r:iptables_exec_t,s0)
/sbin/ipvsadm -- gen_context(system_u:object_r:iptables_exec_t,s0)
/sbin/ipvsadm-restore -- gen_context(system_u:object_r:iptables_exec_t,s0)
/sbin/ipvsadm-save -- gen_context(system_u:object_r:iptables_exec_t,s0)
@@ -30020,6 +33391,7 @@ index 1b93eb7..b2532aa 100644
+/usr/sbin/ip6?tables.* -- gen_context(system_u:object_r:iptables_exec_t,s0)
+/usr/sbin/ip6?tables-restore.* -- gen_context(system_u:object_r:iptables_exec_t,s0)
+/usr/sbin/ip6?tables-multi.* -- gen_context(system_u:object_r:iptables_exec_t,s0)
++/usr/sbin/ipset -- gen_context(system_u:object_r:iptables_exec_t,s0)
+/usr/sbin/ipvsadm -- gen_context(system_u:object_r:iptables_exec_t,s0)
+/usr/sbin/ipvsadm-restore -- gen_context(system_u:object_r:iptables_exec_t,s0)
+/usr/sbin/ipvsadm-save -- gen_context(system_u:object_r:iptables_exec_t,s0)
@@ -30070,7 +33442,7 @@ index c42fbc3..174cfdb 100644
##
## Set the attributes of iptables config files.
diff --git a/policy/modules/system/iptables.te b/policy/modules/system/iptables.te
-index 5dfa44b..cafb28e 100644
+index 5dfa44b..1c9fe59 100644
--- a/policy/modules/system/iptables.te
+++ b/policy/modules/system/iptables.te
@@ -16,15 +16,15 @@ role iptables_roles types iptables_t;
@@ -30111,15 +33483,16 @@ index 5dfa44b..cafb28e 100644
kernel_request_load_module(iptables_t)
kernel_read_system_state(iptables_t)
kernel_read_network_state(iptables_t)
-@@ -64,6 +65,7 @@ corenet_relabelto_all_packets(iptables_t)
+@@ -64,6 +65,8 @@ corenet_relabelto_all_packets(iptables_t)
corenet_dontaudit_rw_tun_tap_dev(iptables_t)
dev_read_sysfs(iptables_t)
+dev_read_urand(iptables_t)
++dev_read_rand(iptables_t)
fs_getattr_xattr_fs(iptables_t)
fs_search_auto_mountpoints(iptables_t)
-@@ -72,11 +74,12 @@ fs_list_inotifyfs(iptables_t)
+@@ -72,11 +75,12 @@ fs_list_inotifyfs(iptables_t)
mls_file_read_all_levels(iptables_t)
term_dontaudit_use_console(iptables_t)
@@ -30134,7 +33507,7 @@ index 5dfa44b..cafb28e 100644
auth_use_nsswitch(iptables_t)
-@@ -85,15 +88,14 @@ init_use_script_ptys(iptables_t)
+@@ -85,15 +89,14 @@ init_use_script_ptys(iptables_t)
# to allow rules to be saved on reboot:
init_rw_script_tmp_files(iptables_t)
init_rw_script_stream_sockets(iptables_t)
@@ -30152,7 +33525,7 @@ index 5dfa44b..cafb28e 100644
userdom_use_all_users_fds(iptables_t)
ifdef(`hide_broken_symptoms',`
-@@ -102,6 +104,8 @@ ifdef(`hide_broken_symptoms',`
+@@ -102,6 +105,8 @@ ifdef(`hide_broken_symptoms',`
optional_policy(`
fail2ban_append_log(iptables_t)
@@ -30161,7 +33534,7 @@ index 5dfa44b..cafb28e 100644
')
optional_policy(`
-@@ -110,6 +114,11 @@ optional_policy(`
+@@ -110,6 +115,11 @@ optional_policy(`
')
optional_policy(`
@@ -30173,7 +33546,7 @@ index 5dfa44b..cafb28e 100644
modutils_run_insmod(iptables_t, iptables_roles)
')
-@@ -124,6 +133,12 @@ optional_policy(`
+@@ -124,6 +134,12 @@ optional_policy(`
optional_policy(`
psad_rw_tmp_files(iptables_t)
@@ -30186,7 +33559,7 @@ index 5dfa44b..cafb28e 100644
')
optional_policy(`
-@@ -135,9 +150,9 @@ optional_policy(`
+@@ -135,9 +151,9 @@ optional_policy(`
')
optional_policy(`
@@ -30528,7 +33901,7 @@ index 73bb3c0..5b9420f 100644
+
+/usr/sbin/ldconfig -- gen_context(system_u:object_r:ldconfig_exec_t,s0)
diff --git a/policy/modules/system/libraries.if b/policy/modules/system/libraries.if
-index 808ba93..9d8f729 100644
+index 808ba93..57a68da 100644
--- a/policy/modules/system/libraries.if
+++ b/policy/modules/system/libraries.if
@@ -66,6 +66,25 @@ interface(`libs_exec_ldconfig',`
@@ -30664,7 +34037,7 @@ index 808ba93..9d8f729 100644
')
########################################
-@@ -534,3 +558,26 @@ interface(`lib_filetrans_shared_lib',`
+@@ -534,3 +558,28 @@ interface(`lib_filetrans_shared_lib',`
interface(`files_lib_filetrans_shared_lib',`
refpolicywarn(`$0($*) has been deprecated.')
')
@@ -30681,10 +34054,12 @@ index 808ba93..9d8f729 100644
+#
+interface(`libs_filetrans_named_content',`
+ gen_require(`
++ type lib_t;
+ type ld_so_cache_t;
+ type ldconfig_cache_t;
+ ')
+
++ files_var_lib_filetrans($1,ldconfig_cache_t, dir, "debug")
+ files_var_filetrans($1, ldconfig_cache_t, dir, "ldconfig")
+ files_etc_filetrans($1, ld_so_cache_t, file, "ld.so.cache")
+ files_etc_filetrans($1, ld_so_cache_t, file, "ld.so.cache~")
@@ -30881,7 +34256,7 @@ index 0e3c2a9..ea9bd57 100644
+ userdom_admin_home_dir_filetrans($1, local_login_home_t, file, ".hushlogin")
+')
diff --git a/policy/modules/system/locallogin.te b/policy/modules/system/locallogin.te
-index c04ac46..ed59137 100644
+index c04ac46..7b55414 100644
--- a/policy/modules/system/locallogin.te
+++ b/policy/modules/system/locallogin.te
@@ -13,9 +13,8 @@ auth_login_entry_type(local_login_t)
@@ -31005,10 +34380,28 @@ index c04ac46..ed59137 100644
unconfined_shell_domtrans(local_login_t)
')
-@@ -215,37 +211,56 @@ allow sulogin_t self:sem create_sem_perms;
+@@ -195,6 +191,7 @@ optional_policy(`
+ optional_policy(`
+ xserver_read_xdm_tmp_files(local_login_t)
+ xserver_rw_xdm_tmp_files(local_login_t)
++ xserver_rw_xdm_keys(local_login_t)
+ ')
+
+ #################################
+@@ -202,7 +199,7 @@ optional_policy(`
+ # Sulogin local policy
+ #
+
+-allow sulogin_t self:capability dac_override;
++allow sulogin_t self:capability { dac_override sys_admin };
+ allow sulogin_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
+ allow sulogin_t self:fd use;
+ allow sulogin_t self:fifo_file rw_fifo_file_perms;
+@@ -215,18 +212,27 @@ allow sulogin_t self:sem create_sem_perms;
allow sulogin_t self:msgq create_msgq_perms;
allow sulogin_t self:msg { send receive };
++kernel_getattr_core_if(sulogin_t)
+kernel_read_crypto_sysctls(sulogin_t)
kernel_read_system_state(sulogin_t)
@@ -31028,12 +34421,11 @@ index c04ac46..ed59137 100644
init_getpgid_script(sulogin_t)
+init_getpgid(sulogin_t)
++init_getattr_initctl(sulogin_t)
logging_send_syslog_msg(sulogin_t)
-+
- seutil_read_config(sulogin_t)
- seutil_read_default_contexts(sulogin_t)
+@@ -235,17 +241,28 @@ seutil_read_default_contexts(sulogin_t)
userdom_use_unpriv_users_fds(sulogin_t)
@@ -31064,7 +34456,7 @@ index c04ac46..ed59137 100644
init_getpgid(sulogin_t)
', `
allow sulogin_t self:process setexec;
-@@ -256,11 +271,3 @@ ifdef(`sulogin_no_pam', `
+@@ -256,11 +273,3 @@ ifdef(`sulogin_no_pam', `
selinux_compute_relabel_context(sulogin_t)
selinux_compute_user_contexts(sulogin_t)
')
@@ -31077,7 +34469,7 @@ index c04ac46..ed59137 100644
- nscd_use(sulogin_t)
-')
diff --git a/policy/modules/system/logging.fc b/policy/modules/system/logging.fc
-index b50c5fe..2faaaf2 100644
+index b50c5fe..e55a556 100644
--- a/policy/modules/system/logging.fc
+++ b/policy/modules/system/logging.fc
@@ -2,10 +2,13 @@
@@ -31121,7 +34513,7 @@ index b50c5fe..2faaaf2 100644
/var/lib/misc/syslog-ng.persist-? -- gen_context(system_u:object_r:syslogd_var_lib_t,s0)
/var/lib/syslog-ng(/.*)? gen_context(system_u:object_r:syslogd_var_lib_t,s0)
-@@ -38,13 +54,13 @@ ifdef(`distro_suse', `
+@@ -38,21 +54,22 @@ ifdef(`distro_suse', `
/var/log -d gen_context(system_u:object_r:var_log_t,s0-mls_systemhigh)
/var/log/.* gen_context(system_u:object_r:var_log_t,s0)
@@ -31136,8 +34528,10 @@ index b50c5fe..2faaaf2 100644
+/var/run/systemd/journal(/.*)? gen_context(system_u:object_r:syslogd_var_run_t,mls_systemhigh)
ifndef(`distro_gentoo',`
- /var/log/audit\.log -- gen_context(system_u:object_r:auditd_log_t,mls_systemhigh)
-@@ -53,6 +69,7 @@ ifndef(`distro_gentoo',`
+-/var/log/audit\.log -- gen_context(system_u:object_r:auditd_log_t,mls_systemhigh)
++/var/log/audit\.log.* -- gen_context(system_u:object_r:auditd_log_t,mls_systemhigh)
+ ')
+
ifdef(`distro_redhat',`
/var/named/chroot/var/log -d gen_context(system_u:object_r:var_log_t,s0)
/var/named/chroot/dev/log -s gen_context(system_u:object_r:devlog_t,s0)
@@ -31164,7 +34558,7 @@ index b50c5fe..2faaaf2 100644
+/var/webmin(/.*)? gen_context(system_u:object_r:var_log_t,s0)
+
diff --git a/policy/modules/system/logging.if b/policy/modules/system/logging.if
-index 4e94884..9b82ed0 100644
+index 4e94884..b144ffe 100644
--- a/policy/modules/system/logging.if
+++ b/policy/modules/system/logging.if
@@ -233,7 +233,7 @@ interface(`logging_run_auditd',`
@@ -31254,24 +34648,17 @@ index 4e94884..9b82ed0 100644
########################################
##
## Send system log messages.
-@@ -530,22 +592,85 @@ interface(`logging_log_filetrans',`
+@@ -530,22 +592,104 @@ interface(`logging_log_filetrans',`
#
interface(`logging_send_syslog_msg',`
gen_require(`
- type syslogd_t, devlog_t;
+ attribute syslog_client_type;
- ')
-
-- allow $1 devlog_t:lnk_file read_lnk_file_perms;
-- allow $1 devlog_t:sock_file write_sock_file_perms;
++ ')
++
+ typeattribute $1 syslog_client_type;
+')
-
-- # the type of socket depends on the syslog daemon
-- allow $1 syslogd_t:unix_dgram_socket sendto;
-- allow $1 syslogd_t:unix_stream_socket connectto;
-- allow $1 self:unix_dgram_socket create_socket_perms;
-- allow $1 self:unix_stream_socket create_socket_perms;
++
+########################################
+##
+## Connect to the syslog control unix stream socket.
@@ -31286,11 +34673,7 @@ index 4e94884..9b82ed0 100644
+ gen_require(`
+ type devlog_t;
+ ')
-
-- # If syslog is down, the glibc syslog() function
-- # will write to the console.
-- term_write_console($1)
-- term_dontaudit_read_console($1)
++
+ allow $1 devlog_t:sock_file manage_sock_file_perms;
+ dev_filetrans($1, devlog_t, sock_file)
+ init_pid_filetrans($1, devlog_t, sock_file, "syslog")
@@ -31316,6 +34699,32 @@ index 4e94884..9b82ed0 100644
+
+########################################
+##
++## Allow domain to read the syslog pid files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`logging_read_syslog_pid',`
++ gen_require(`
++ type syslogd_var_run_t;
+ ')
+
+- allow $1 devlog_t:lnk_file read_lnk_file_perms;
+- allow $1 devlog_t:sock_file write_sock_file_perms;
++ read_files_pattern($1, syslogd_var_run_t, syslogd_var_run_t)
++ list_dirs_pattern($1, syslogd_var_run_t, syslogd_var_run_t)
++')
+
+- # the type of socket depends on the syslog daemon
+- allow $1 syslogd_t:unix_dgram_socket sendto;
+- allow $1 syslogd_t:unix_stream_socket connectto;
+- allow $1 self:unix_dgram_socket create_socket_perms;
+- allow $1 self:unix_stream_socket create_socket_perms;
++########################################
++##
+## Relabel the syslog pid sock_file.
+##
+##
@@ -31328,7 +34737,11 @@ index 4e94884..9b82ed0 100644
+ gen_require(`
+ type syslogd_var_run_t;
+ ')
-+
+
+- # If syslog is down, the glibc syslog() function
+- # will write to the console.
+- term_write_console($1)
+- term_dontaudit_read_console($1)
+ allow $1 syslogd_var_run_t:sock_file relabel_sock_file_perms;
+')
+
@@ -31352,7 +34765,59 @@ index 4e94884..9b82ed0 100644
')
########################################
-@@ -776,7 +901,25 @@ interface(`logging_append_all_logs',`
+@@ -609,6 +753,25 @@ interface(`logging_read_syslog_config',`
+
+ ########################################
+ ##
++## Manage syslog configuration files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`logging_manage_syslog_config',`
++ gen_require(`
++ type syslog_conf_t;
++ ')
++
++ manage_files_pattern($1, syslog_conf_t, syslog_conf_t)
++')
++
++########################################
++##
+ ## Allows the domain to open a file in the
+ ## log directory, but does not allow the listing
+ ## of the contents of the log directory.
+@@ -722,6 +885,25 @@ interface(`logging_setattr_all_log_dirs',`
+ allow $1 logfile:dir setattr;
+ ')
+
++#######################################
++##
++## Relabel on all log dirs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`logging_relabel_all_log_dirs',`
++ gen_require(`
++ attribute logfile;
++ ')
++
++ relabel_dirs_pattern($1, logfile, logfile)
++')
++
+ ########################################
+ ##
+ ## Do not audit attempts to get the attributes
+@@ -776,7 +958,25 @@ interface(`logging_append_all_logs',`
')
files_search_var($1)
@@ -31379,7 +34844,7 @@ index 4e94884..9b82ed0 100644
')
########################################
-@@ -859,7 +1002,7 @@ interface(`logging_manage_all_logs',`
+@@ -859,7 +1059,7 @@ interface(`logging_manage_all_logs',`
files_search_var($1)
manage_files_pattern($1, logfile, logfile)
@@ -31388,7 +34853,7 @@ index 4e94884..9b82ed0 100644
')
########################################
-@@ -885,6 +1028,44 @@ interface(`logging_read_generic_logs',`
+@@ -885,6 +1085,44 @@ interface(`logging_read_generic_logs',`
########################################
##
@@ -31433,7 +34898,7 @@ index 4e94884..9b82ed0 100644
## Write generic log files.
##
##
-@@ -905,6 +1086,24 @@ interface(`logging_write_generic_logs',`
+@@ -905,6 +1143,24 @@ interface(`logging_write_generic_logs',`
########################################
##
@@ -31458,7 +34923,7 @@ index 4e94884..9b82ed0 100644
## Dontaudit Write generic log files.
##
##
-@@ -984,11 +1183,16 @@ interface(`logging_admin_audit',`
+@@ -984,11 +1240,16 @@ interface(`logging_admin_audit',`
type auditd_t, auditd_etc_t, auditd_log_t;
type auditd_var_run_t;
type auditd_initrc_exec_t;
@@ -31476,7 +34941,7 @@ index 4e94884..9b82ed0 100644
manage_dirs_pattern($1, auditd_etc_t, auditd_etc_t)
manage_files_pattern($1, auditd_etc_t, auditd_etc_t)
-@@ -1004,6 +1208,33 @@ interface(`logging_admin_audit',`
+@@ -1004,6 +1265,33 @@ interface(`logging_admin_audit',`
domain_system_change_exemption($1)
role_transition $2 auditd_initrc_exec_t system_r;
allow $2 system_r;
@@ -31510,7 +34975,7 @@ index 4e94884..9b82ed0 100644
')
########################################
-@@ -1032,10 +1263,15 @@ interface(`logging_admin_syslog',`
+@@ -1032,10 +1320,15 @@ interface(`logging_admin_syslog',`
type syslogd_initrc_exec_t;
')
@@ -31528,7 +34993,7 @@ index 4e94884..9b82ed0 100644
manage_dirs_pattern($1, klogd_var_run_t, klogd_var_run_t)
manage_files_pattern($1, klogd_var_run_t, klogd_var_run_t)
-@@ -1057,6 +1293,8 @@ interface(`logging_admin_syslog',`
+@@ -1057,6 +1350,8 @@ interface(`logging_admin_syslog',`
manage_files_pattern($1, syslogd_var_run_t, syslogd_var_run_t)
logging_manage_all_logs($1)
@@ -31537,13 +35002,32 @@ index 4e94884..9b82ed0 100644
init_labeled_script_domtrans($1, syslogd_initrc_exec_t)
domain_system_change_exemption($1)
-@@ -1085,3 +1323,35 @@ interface(`logging_admin',`
+@@ -1085,3 +1380,54 @@ interface(`logging_admin',`
logging_admin_audit($1, $2)
logging_admin_syslog($1, $2)
')
+
+########################################
+##
++## Transition to syslog.conf
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`logging_filetrans_named_conf',`
++ gen_require(`
++ type syslog_conf_t;
++ ')
++
++ files_etc_filetrans($1, syslog_conf_t, file, "syslog.conf")
++ files_etc_filetrans($1, syslog_conf_t, file, "rsyslog.conf")
++')
++
++########################################
++##
+## Transition to logging named content
+##
+##
@@ -31574,7 +35058,7 @@ index 4e94884..9b82ed0 100644
+ logging_log_filetrans($1, var_log_t, dir, "anaconda")
+')
diff --git a/policy/modules/system/logging.te b/policy/modules/system/logging.te
-index 39ea221..616d6a8 100644
+index 39ea221..553ae21 100644
--- a/policy/modules/system/logging.te
+++ b/policy/modules/system/logging.te
@@ -4,6 +4,21 @@ policy_module(logging, 1.19.6)
@@ -31595,7 +35079,7 @@ index 39ea221..616d6a8 100644
+## Allow syslogd the ability to read/write terminals
+##
+##
-+gen_tunable(logging_syslogd_use_tty, false)
++gen_tunable(logging_syslogd_use_tty, true)
attribute logfile;
@@ -31642,16 +35126,18 @@ index 39ea221..616d6a8 100644
read_files_pattern(auditctl_t, auditd_etc_t, auditd_etc_t)
allow auditctl_t auditd_etc_t:dir list_dir_perms;
-@@ -111,7 +134,7 @@ domain_use_interactive_fds(auditctl_t)
+@@ -111,7 +134,9 @@ domain_use_interactive_fds(auditctl_t)
mls_file_read_all_levels(auditctl_t)
-term_use_all_terms(auditctl_t)
++storage_getattr_removable_dev(auditctl_t)
++
+term_use_all_inherited_terms(auditctl_t)
init_dontaudit_use_fds(auditctl_t)
-@@ -148,6 +171,7 @@ kernel_read_kernel_sysctls(auditd_t)
+@@ -148,6 +173,7 @@ kernel_read_kernel_sysctls(auditd_t)
# Needs to be able to run dispatcher. see /etc/audit/auditd.conf
# Probably want a transition, and a new auditd_helper app
kernel_read_system_state(auditd_t)
@@ -31659,7 +35145,7 @@ index 39ea221..616d6a8 100644
dev_read_sysfs(auditd_t)
-@@ -155,9 +179,6 @@ fs_getattr_all_fs(auditd_t)
+@@ -155,9 +181,6 @@ fs_getattr_all_fs(auditd_t)
fs_search_auto_mountpoints(auditd_t)
fs_rw_anon_inodefs_files(auditd_t)
@@ -31669,7 +35155,7 @@ index 39ea221..616d6a8 100644
corenet_all_recvfrom_netlabel(auditd_t)
corenet_tcp_sendrecv_generic_if(auditd_t)
corenet_tcp_sendrecv_generic_node(auditd_t)
-@@ -183,16 +204,17 @@ logging_send_syslog_msg(auditd_t)
+@@ -183,16 +206,17 @@ logging_send_syslog_msg(auditd_t)
logging_domtrans_dispatcher(auditd_t)
logging_signal_dispatcher(auditd_t)
@@ -31691,7 +35177,7 @@ index 39ea221..616d6a8 100644
userdom_dontaudit_use_unpriv_user_fds(auditd_t)
userdom_dontaudit_search_user_home_dirs(auditd_t)
-@@ -237,19 +259,29 @@ corecmd_exec_shell(audisp_t)
+@@ -237,19 +261,29 @@ corecmd_exec_shell(audisp_t)
domain_use_interactive_fds(audisp_t)
@@ -31722,7 +35208,7 @@ index 39ea221..616d6a8 100644
')
########################################
-@@ -268,7 +300,6 @@ files_spool_filetrans(audisp_remote_t, audit_spool_t, { dir file })
+@@ -268,7 +302,6 @@ files_spool_filetrans(audisp_remote_t, audit_spool_t, { dir file })
corecmd_exec_bin(audisp_remote_t)
@@ -31730,7 +35216,7 @@ index 39ea221..616d6a8 100644
corenet_all_recvfrom_netlabel(audisp_remote_t)
corenet_tcp_sendrecv_generic_if(audisp_remote_t)
corenet_tcp_sendrecv_generic_node(audisp_remote_t)
-@@ -280,10 +311,18 @@ corenet_sendrecv_audit_client_packets(audisp_remote_t)
+@@ -280,10 +313,18 @@ corenet_sendrecv_audit_client_packets(audisp_remote_t)
files_read_etc_files(audisp_remote_t)
@@ -31750,7 +35236,7 @@ index 39ea221..616d6a8 100644
sysnet_dns_name_resolve(audisp_remote_t)
-@@ -326,7 +365,6 @@ files_read_etc_files(klogd_t)
+@@ -326,7 +367,6 @@ files_read_etc_files(klogd_t)
logging_send_syslog_msg(klogd_t)
@@ -31758,12 +35244,12 @@ index 39ea221..616d6a8 100644
mls_file_read_all_levels(klogd_t)
-@@ -354,12 +392,12 @@ optional_policy(`
+@@ -354,12 +394,12 @@ optional_policy(`
# chown fsetid for syslog-ng
# sys_admin for the integrated klog of syslog-ng and metalog
# cjp: why net_admin!
-allow syslogd_t self:capability { dac_override sys_resource sys_tty_config net_admin sys_admin chown fsetid };
-+allow syslogd_t self:capability { sys_ptrace dac_override sys_resource sys_tty_config ipc_lock net_admin setgid setuid sys_admin sys_nice chown fsetid setuid setgid };
++allow syslogd_t self:capability { sys_ptrace dac_override sys_resource sys_tty_config ipc_lock net_admin setgid setuid sys_admin sys_nice chown fsetid setuid setgid net_raw };
dontaudit syslogd_t self:capability sys_tty_config;
+allow syslogd_t self:capability2 { syslog block_suspend };
# setpgid for metalog
@@ -31774,15 +35260,18 @@ index 39ea221..616d6a8 100644
# receive messages to be logged
allow syslogd_t self:unix_dgram_socket create_socket_perms;
allow syslogd_t self:unix_stream_socket create_stream_socket_perms;
-@@ -369,6 +407,7 @@ allow syslogd_t self:udp_socket create_socket_perms;
+@@ -367,8 +407,10 @@ allow syslogd_t self:unix_dgram_socket sendto;
+ allow syslogd_t self:fifo_file rw_fifo_file_perms;
+ allow syslogd_t self:udp_socket create_socket_perms;
allow syslogd_t self:tcp_socket create_stream_socket_perms;
++allow syslogd_t self:rawip_socket create_socket_perms;
allow syslogd_t syslog_conf_t:file read_file_perms;
+allow syslogd_t syslog_conf_t:dir list_dir_perms;
# Create and bind to /dev/log or /var/run/log.
allow syslogd_t devlog_t:sock_file manage_sock_file_perms;
-@@ -377,6 +416,7 @@ files_pid_filetrans(syslogd_t, devlog_t, sock_file)
+@@ -377,6 +419,7 @@ files_pid_filetrans(syslogd_t, devlog_t, sock_file)
# create/append log files.
manage_files_pattern(syslogd_t, var_log_t, var_log_t)
rw_fifo_files_pattern(syslogd_t, var_log_t, var_log_t)
@@ -31790,7 +35279,7 @@ index 39ea221..616d6a8 100644
# Allow access for syslog-ng
allow syslogd_t var_log_t:dir { create setattr };
-@@ -386,28 +426,41 @@ manage_dirs_pattern(syslogd_t, syslogd_tmp_t, syslogd_tmp_t)
+@@ -386,28 +429,41 @@ manage_dirs_pattern(syslogd_t, syslogd_tmp_t, syslogd_tmp_t)
manage_files_pattern(syslogd_t, syslogd_tmp_t, syslogd_tmp_t)
files_tmp_filetrans(syslogd_t, syslogd_tmp_t, { dir file })
@@ -31835,7 +35324,7 @@ index 39ea221..616d6a8 100644
# syslog-ng can listen and connect on tcp port 514 (rsh)
corenet_tcp_sendrecv_generic_if(syslogd_t)
corenet_tcp_sendrecv_generic_node(syslogd_t)
-@@ -417,6 +470,8 @@ corenet_tcp_bind_rsh_port(syslogd_t)
+@@ -417,6 +473,8 @@ corenet_tcp_bind_rsh_port(syslogd_t)
corenet_tcp_connect_rsh_port(syslogd_t)
# Allow users to define additional syslog ports to connect to
corenet_tcp_bind_syslogd_port(syslogd_t)
@@ -31844,7 +35333,7 @@ index 39ea221..616d6a8 100644
corenet_tcp_connect_syslogd_port(syslogd_t)
corenet_tcp_connect_postgresql_port(syslogd_t)
corenet_tcp_connect_mysqld_port(syslogd_t)
-@@ -427,9 +482,26 @@ corenet_sendrecv_syslogd_server_packets(syslogd_t)
+@@ -427,9 +485,26 @@ corenet_sendrecv_syslogd_server_packets(syslogd_t)
corenet_sendrecv_postgresql_client_packets(syslogd_t)
corenet_sendrecv_mysqld_client_packets(syslogd_t)
@@ -31872,7 +35361,7 @@ index 39ea221..616d6a8 100644
domain_use_interactive_fds(syslogd_t)
files_read_etc_files(syslogd_t)
-@@ -442,14 +514,19 @@ files_read_kernel_symbol_table(syslogd_t)
+@@ -442,14 +517,19 @@ files_read_kernel_symbol_table(syslogd_t)
files_var_lib_filetrans(syslogd_t, syslogd_var_lib_t, { file dir })
fs_getattr_all_fs(syslogd_t)
@@ -31892,7 +35381,7 @@ index 39ea221..616d6a8 100644
# for sending messages to logged in users
init_read_utmp(syslogd_t)
init_dontaudit_write_utmp(syslogd_t)
-@@ -461,11 +538,11 @@ init_use_fds(syslogd_t)
+@@ -461,11 +541,11 @@ init_use_fds(syslogd_t)
# cjp: this doesnt make sense
logging_send_syslog_msg(syslogd_t)
@@ -31907,7 +35396,16 @@ index 39ea221..616d6a8 100644
ifdef(`distro_gentoo',`
# default gentoo syslog-ng config appends kernel
-@@ -502,15 +579,40 @@ optional_policy(`
+@@ -492,6 +572,8 @@ optional_policy(`
+ optional_policy(`
+ cron_manage_log_files(syslogd_t)
+ cron_generic_log_filetrans_log(syslogd_t, file, "cron.log")
++ cron_generic_log_filetrans_log(syslogd_t, file, "cron")
++
+ ')
+
+ optional_policy(`
+@@ -502,15 +584,40 @@ optional_policy(`
')
optional_policy(`
@@ -31948,7 +35446,7 @@ index 39ea221..616d6a8 100644
')
optional_policy(`
-@@ -521,3 +623,26 @@ optional_policy(`
+@@ -521,3 +628,26 @@ optional_policy(`
# log to the xconsole
xserver_rw_console(syslogd_t)
')
@@ -31976,7 +35474,7 @@ index 39ea221..616d6a8 100644
+
+logging_stream_connect_syslog(syslog_client_type)
diff --git a/policy/modules/system/lvm.fc b/policy/modules/system/lvm.fc
-index 879bb1e..b250b3e 100644
+index 879bb1e..633e449 100644
--- a/policy/modules/system/lvm.fc
+++ b/policy/modules/system/lvm.fc
@@ -23,28 +23,35 @@ ifdef(`distro_gentoo',`
@@ -32091,20 +35589,72 @@ index 879bb1e..b250b3e 100644
#
# /var
-@@ -97,5 +168,8 @@ ifdef(`distro_gentoo',`
+@@ -97,5 +168,9 @@ ifdef(`distro_gentoo',`
/var/cache/multipathd(/.*)? gen_context(system_u:object_r:lvm_metadata_t,s0)
/var/lib/multipath(/.*)? gen_context(system_u:object_r:lvm_var_lib_t,s0)
/var/lock/lvm(/.*)? gen_context(system_u:object_r:lvm_lock_t,s0)
+/var/lock/dmraid(/.*)? gen_context(system_u:object_r:lvm_lock_t,s0)
+/var/run/lvm(/.*)? gen_context(system_u:object_r:lvm_var_run_t,s0)
++/var/run/multipathd(/.*)? gen_context(system_u:object_r:lvm_var_run_t,s0)
/var/run/multipathd\.sock -s gen_context(system_u:object_r:lvm_var_run_t,s0)
+/var/run/clvmd\.pid -- gen_context(system_u:object_r:clvmd_var_run_t,s0)
/var/run/dmevent.* gen_context(system_u:object_r:lvm_var_run_t,s0)
diff --git a/policy/modules/system/lvm.if b/policy/modules/system/lvm.if
-index 58bc27f..51e9872 100644
+index 58bc27f..f887230 100644
--- a/policy/modules/system/lvm.if
+++ b/policy/modules/system/lvm.if
-@@ -123,3 +123,94 @@ interface(`lvm_domtrans_clvmd',`
+@@ -86,6 +86,50 @@ interface(`lvm_read_config',`
+
+ ########################################
+ ##
++## Read LVM configuration files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`lvm_read_metadata',`
++ gen_require(`
++ type lvm_etc_t;
++ type lvm_metadata_t;
++ ')
++
++ files_search_etc($1)
++ allow $1 lvm_etc_t:dir list_dir_perms;
++ read_files_pattern($1,lvm_metadata_t ,lvm_metadata_t)
++')
++
++########################################
++##
++## Read LVM configuration files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`lvm_write_metadata',`
++ gen_require(`
++ type lvm_etc_t;
++ type lvm_metadata_t;
++ ')
++
++ files_search_etc($1)
++ allow $1 lvm_etc_t:dir list_dir_perms;
++ write_files_pattern($1,lvm_metadata_t ,lvm_metadata_t)
++')
++
++########################################
++##
+ ## Manage LVM configuration files.
+ ##
+ ##
+@@ -123,3 +167,113 @@ interface(`lvm_domtrans_clvmd',`
corecmd_search_bin($1)
domtrans_pattern($1, clvmd_exec_t, clvmd_t)
')
@@ -32199,6 +35749,25 @@ index 58bc27f..51e9872 100644
+
+ allow $1 lvm_var_run_t:fifo_file rw_inherited_fifo_file_perms;
+')
++
++########################################
++##
++## Do not audit attempts to access check cert dirs/files.
++##
++##
++##
++## Domain to not audit.
++##
++##
++#
++interface(`lvm_dontaudit_access_check_lock',`
++ gen_require(`
++ type lvm_lock_t;
++ ')
++
++ dontaudit $1 lvm_lock_t:dir audit_access;
++')
++
diff --git a/policy/modules/system/lvm.te b/policy/modules/system/lvm.te
index e8c59a5..b22837c 100644
--- a/policy/modules/system/lvm.te
@@ -32800,7 +36369,7 @@ index 9933677..ca14c17 100644
+
+/var/run/tmpfiles.d/kmod.conf -- gen_context(system_u:object_r:insmod_var_run_t,s0)
diff --git a/policy/modules/system/modutils.if b/policy/modules/system/modutils.if
-index 7449974..6375786 100644
+index 7449974..23bbbf2 100644
--- a/policy/modules/system/modutils.if
+++ b/policy/modules/system/modutils.if
@@ -12,7 +12,7 @@
@@ -32857,7 +36426,57 @@ index 7449974..6375786 100644
## Read the configuration options used when
## loading modules.
##
-@@ -308,11 +346,18 @@ interface(`modutils_domtrans_update_mods',`
+@@ -163,6 +201,24 @@ interface(`modutils_domtrans_insmod',`
+
+ ########################################
+ ##
++## Allow send signal to insmod.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`modutils_signal_insmod',`
++ gen_require(`
++ type insmod_t;
++ ')
++
++ allow $1 insmod_t:process signal;
++')
++
++########################################
++##
+ ## Execute insmod in the insmod domain, and
+ ## allow the specified role the insmod domain,
+ ## and use the caller's terminal. Has a sigchld
+@@ -208,6 +264,24 @@ interface(`modutils_exec_insmod',`
+ can_exec($1, insmod_exec_t)
+ ')
+
++#######################################
++##
++## Don't audit execute insmod in the caller domain.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`modutils_dontaudit_exec_insmod',`
++ gen_require(`
++ type insmod_exec_t;
++ ')
++
++ dontaudit $1 insmod_exec_t:file exec_file_perms;
++')
++
+ ########################################
+ ##
+ ## Execute depmod in the depmod domain.
+@@ -308,11 +382,18 @@ interface(`modutils_domtrans_update_mods',`
#
interface(`modutils_run_update_mods',`
gen_require(`
@@ -32878,7 +36497,7 @@ index 7449974..6375786 100644
')
########################################
-@@ -333,3 +378,25 @@ interface(`modutils_exec_update_mods',`
+@@ -333,3 +414,25 @@ interface(`modutils_exec_update_mods',`
corecmd_search_bin($1)
can_exec($1, update_modules_exec_t)
')
@@ -33204,7 +36823,7 @@ index 72c746e..f035d9f 100644
+/usr/sbin/umount\.ecryptfs_private -- gen_context(system_u:object_r:mount_ecryptfs_exec_t,s0)
+/usr/sbin/umount\.ecryptfs -- gen_context(system_u:object_r:mount_ecryptfs_exec_t,s0)
diff --git a/policy/modules/system/mount.if b/policy/modules/system/mount.if
-index 4584457..e432df3 100644
+index 4584457..8a190ae 100644
--- a/policy/modules/system/mount.if
+++ b/policy/modules/system/mount.if
@@ -16,6 +16,13 @@ interface(`mount_domtrans',`
@@ -33221,7 +36840,7 @@ index 4584457..e432df3 100644
')
########################################
-@@ -38,11 +45,122 @@ interface(`mount_domtrans',`
+@@ -38,11 +45,140 @@ interface(`mount_domtrans',`
#
interface(`mount_run',`
gen_require(`
@@ -33326,6 +36945,24 @@ index 4584457..e432df3 100644
+ files_search_pids($1)
+')
+
++#######################################
++##
++## Do not audit attemps to write mount PID files.
++##
++##
++##
++## Domain to not audit.
++##
++##
++#
++interface(`mount_dontaudit_write_mount_pid',`
++ gen_require(`
++ type mount_var_run_t;
++ ')
++
++ dontaudit $1 mount_var_run_t:file write;
++')
++
+########################################
+##
+## Manage mount PID files.
@@ -33346,7 +36983,7 @@ index 4584457..e432df3 100644
')
########################################
-@@ -91,7 +209,7 @@ interface(`mount_signal',`
+@@ -91,7 +227,7 @@ interface(`mount_signal',`
##
##
##
@@ -33355,7 +36992,7 @@ index 4584457..e432df3 100644
##
##
#
-@@ -131,45 +249,138 @@ interface(`mount_send_nfs_client_request',`
+@@ -131,45 +267,138 @@ interface(`mount_send_nfs_client_request',`
########################################
##
@@ -35601,7 +39238,7 @@ index 346a7cc..42a48b6 100644
+/var/run/netns(/.*)? gen_context(system_u:object_r:ifconfig_var_run_t,s0)
+/etc/firestarter/firestarter\.sh gen_context(system_u:object_r:dhcpc_helper_exec_t,s0)
diff --git a/policy/modules/system/sysnetwork.if b/policy/modules/system/sysnetwork.if
-index 6944526..0bd8d93 100644
+index 6944526..821e74c 100644
--- a/policy/modules/system/sysnetwork.if
+++ b/policy/modules/system/sysnetwork.if
@@ -38,11 +38,30 @@ interface(`sysnet_domtrans_dhcpc',`
@@ -35635,6 +39272,15 @@ index 6944526..0bd8d93 100644
')
########################################
+@@ -212,7 +231,7 @@ interface(`sysnet_rw_dhcp_config',`
+ ')
+
+ files_search_etc($1)
+- allow $1 dhcp_etc_t:file rw_file_perms;
++ rw_files_pattern($1, dhcp_etc_t, dhcp_etc_t)
+ ')
+
+ ########################################
@@ -250,6 +269,7 @@ interface(`sysnet_read_dhcpc_state',`
type dhcpc_state_t;
')
@@ -35840,8 +39486,11 @@ index 6944526..0bd8d93 100644
corenet_tcp_sendrecv_generic_if($1)
corenet_udp_sendrecv_generic_if($1)
corenet_tcp_sendrecv_generic_node($1)
-@@ -692,6 +842,8 @@ interface(`sysnet_dns_name_resolve',`
+@@ -690,8 +840,11 @@ interface(`sysnet_dns_name_resolve',`
+ corenet_tcp_sendrecv_dns_port($1)
+ corenet_udp_sendrecv_dns_port($1)
corenet_tcp_connect_dns_port($1)
++ corenet_tcp_connect_dnssec_port($1)
corenet_sendrecv_dns_client_packets($1)
+ miscfiles_read_generic_certs($1)
@@ -35849,7 +39498,7 @@ index 6944526..0bd8d93 100644
sysnet_read_config($1)
optional_policy(`
-@@ -720,8 +872,6 @@ interface(`sysnet_use_ldap',`
+@@ -720,8 +873,6 @@ interface(`sysnet_use_ldap',`
allow $1 self:tcp_socket create_socket_perms;
@@ -35858,7 +39507,7 @@ index 6944526..0bd8d93 100644
corenet_tcp_sendrecv_generic_if($1)
corenet_tcp_sendrecv_generic_node($1)
corenet_tcp_sendrecv_ldap_port($1)
-@@ -733,6 +883,9 @@ interface(`sysnet_use_ldap',`
+@@ -733,6 +884,9 @@ interface(`sysnet_use_ldap',`
dev_read_urand($1)
sysnet_read_config($1)
@@ -35868,7 +39517,7 @@ index 6944526..0bd8d93 100644
')
########################################
-@@ -754,7 +907,6 @@ interface(`sysnet_use_portmap',`
+@@ -754,7 +908,6 @@ interface(`sysnet_use_portmap',`
allow $1 self:udp_socket create_socket_perms;
corenet_all_recvfrom_unlabeled($1)
@@ -35876,7 +39525,7 @@ index 6944526..0bd8d93 100644
corenet_tcp_sendrecv_generic_if($1)
corenet_udp_sendrecv_generic_if($1)
corenet_tcp_sendrecv_generic_node($1)
-@@ -766,3 +918,76 @@ interface(`sysnet_use_portmap',`
+@@ -766,3 +919,114 @@ interface(`sysnet_use_portmap',`
sysnet_read_config($1)
')
@@ -35953,8 +39602,46 @@ index 6944526..0bd8d93 100644
+ files_etc_filetrans($1, net_conf_t, file, "yp.conf")
+ files_etc_filetrans($1, net_conf_t, file, "ntp.conf")
+')
++
++########################################
++##
++## Transition to sysnet ifconfig named content
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`sysnet_manage_ifconfig_run',`
++ gen_require(`
++ type ifconfig_var_run_t;
++ ')
++
++ manage_files_pattern($1, ifconfig_var_run_t, ifconfig_var_run_t)
++ manage_dirs_pattern($1, ifconfig_var_run_t, ifconfig_var_run_t)
++ manage_lnk_files_pattern($1, ifconfig_var_run_t, ifconfig_var_run_t)
++')
++
++########################################
++##
++## Transition to sysnet ifconfig named content
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`sysnet_filetrans_named_content_ifconfig',`
++ gen_require(`
++ type ifconfig_var_run_t;
++ ')
++
++ files_pid_filetrans($1, ifconfig_var_run_t, dir, "netns")
++')
diff --git a/policy/modules/system/sysnetwork.te b/policy/modules/system/sysnetwork.te
-index b7686d5..087fe08 100644
+index b7686d5..28f16ce 100644
--- a/policy/modules/system/sysnetwork.te
+++ b/policy/modules/system/sysnetwork.te
@@ -5,6 +5,13 @@ policy_module(sysnetwork, 1.14.6)
@@ -36206,7 +39893,7 @@ index b7686d5..087fe08 100644
kernel_use_fds(ifconfig_t)
kernel_read_system_state(ifconfig_t)
kernel_read_network_state(ifconfig_t)
-@@ -274,14 +333,30 @@ kernel_rw_net_sysctls(ifconfig_t)
+@@ -274,14 +333,31 @@ kernel_rw_net_sysctls(ifconfig_t)
corenet_rw_tun_tap_dev(ifconfig_t)
@@ -36230,6 +39917,7 @@ index b7686d5..087fe08 100644
+files_dontaudit_rw_inherited_locks(ifconfig_t)
+files_dontaudit_read_root_files(ifconfig_t)
+files_rw_inherited_tmp_file(ifconfig_t)
++files_dontaudit_rw_var_files(ifconfig_t)
+
files_read_etc_files(ifconfig_t)
files_read_etc_runtime_files(ifconfig_t)
@@ -36237,7 +39925,7 @@ index b7686d5..087fe08 100644
fs_getattr_xattr_fs(ifconfig_t)
fs_search_auto_mountpoints(ifconfig_t)
-@@ -294,22 +369,22 @@ term_dontaudit_use_all_ptys(ifconfig_t)
+@@ -294,22 +370,22 @@ term_dontaudit_use_all_ptys(ifconfig_t)
term_dontaudit_use_ptmx(ifconfig_t)
term_dontaudit_use_generic_ptys(ifconfig_t)
@@ -36265,7 +39953,7 @@ index b7686d5..087fe08 100644
userdom_use_all_users_fds(ifconfig_t)
ifdef(`distro_ubuntu',`
-@@ -318,7 +393,22 @@ ifdef(`distro_ubuntu',`
+@@ -318,7 +394,22 @@ ifdef(`distro_ubuntu',`
')
')
@@ -36288,7 +39976,7 @@ index b7686d5..087fe08 100644
optional_policy(`
dev_dontaudit_rw_cardmgr(ifconfig_t)
')
-@@ -329,8 +419,11 @@ ifdef(`hide_broken_symptoms',`
+@@ -329,8 +420,11 @@ ifdef(`hide_broken_symptoms',`
')
optional_policy(`
@@ -36302,7 +39990,7 @@ index b7686d5..087fe08 100644
')
optional_policy(`
-@@ -339,7 +432,15 @@ optional_policy(`
+@@ -339,7 +433,15 @@ optional_policy(`
')
optional_policy(`
@@ -36319,7 +40007,7 @@ index b7686d5..087fe08 100644
')
optional_policy(`
-@@ -360,3 +461,13 @@ optional_policy(`
+@@ -360,3 +462,13 @@ optional_policy(`
xen_append_log(ifconfig_t)
xen_dontaudit_rw_unix_stream_sockets(ifconfig_t)
')
@@ -36388,10 +40076,10 @@ index 0000000..e9f1096
+/var/run/initramfs(/.*)? <>
diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if
new file mode 100644
-index 0000000..35b4178
+index 0000000..8bca1d7
--- /dev/null
+++ b/policy/modules/system/systemd.if
-@@ -0,0 +1,1400 @@
+@@ -0,0 +1,1440 @@
+## SELinux policy for systemd components
+
+######################################
@@ -37338,6 +41026,27 @@ index 0000000..35b4178
+ allow $1 hostname_etc_t:file read_file_perms;
+')
+
++########################################
++##
++## Allow process to manage hostname config file.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`systemd_hostnamed_manage_config',`
++ gen_require(`
++ type hostname_etc_t;
++ ')
++
++ files_search_etc($1)
++ allow $1 hostname_etc_t:file manage_file_perms;
++ files_etc_filetrans($1, hostname_etc_t, file, "hostname")
++')
++
+#######################################
+##
+## Create objects in /run/systemd/generator directory
@@ -37670,6 +41379,25 @@ index 0000000..35b4178
+ allow $1 power_unit_file_t:service start;
+')
+
++########################################
++##
++## Status power unit files domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`systemd_status_power_services',`
++ gen_require(`
++ type power_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ allow $1 power_unit_file_t:service status;
++')
++
+#######################################
+##
+## Start power unit files domain.
@@ -37794,10 +41522,10 @@ index 0000000..35b4178
+')
diff --git a/policy/modules/system/systemd.te b/policy/modules/system/systemd.te
new file mode 100644
-index 0000000..f758960
+index 0000000..8c56513
--- /dev/null
+++ b/policy/modules/system/systemd.te
-@@ -0,0 +1,650 @@
+@@ -0,0 +1,635 @@
+policy_module(systemd, 1.0.0)
+
+#######################################
@@ -37881,6 +41609,7 @@ index 0000000..f758960
+
+# dac_override is for /run/user/$USER ($USER ownership is $USER:$USER)
+allow systemd_logind_t self:capability { chown kill dac_override fowner sys_tty_config };
++allow systemd_logind_t self:capability2 block_suspend;
+allow systemd_logind_t self:process getcap;
+allow systemd_logind_t self:netlink_kobject_uevent_socket create_socket_perms;
+allow systemd_logind_t self:unix_dgram_socket create_socket_perms;
@@ -37908,6 +41637,7 @@ index 0000000..f758960
+dev_getattr_all_blk_files(systemd_logind_t)
+dev_rw_sysfs(systemd_logind_t)
+dev_rw_input_dev(systemd_logind_t)
++dev_rw_dri(systemd_logind_t)
+dev_setattr_all_chr_files(systemd_logind_t)
+dev_setattr_dri_dev(systemd_logind_t)
+dev_setattr_generic_usb_dev(systemd_logind_t)
@@ -37961,7 +41691,6 @@ index 0000000..f758960
+init_dbus_chat(systemd_logind_t)
+init_dbus_chat_script(systemd_logind_t)
+init_read_script_state(systemd_logind_t)
-+init_read_state(systemd_logind_t)
+init_rw_stream_sockets(systemd_logind_t)
+
+logging_send_syslog_msg(systemd_logind_t)
@@ -38043,7 +41772,7 @@ index 0000000..f758960
+logging_send_syslog_msg(systemd_passwd_agent_t)
+
+userdom_use_user_ptys(systemd_passwd_agent_t)
-+userdom_use_inherited_user_ttys(systemd_passwd_agent_t)
++userdom_use_user_ttys(systemd_passwd_agent_t)
+
+optional_policy(`
+ lvm_signull(systemd_passwd_agent_t)
@@ -38081,31 +41810,8 @@ index 0000000..f758960
+fs_relabel_tmpfs_dirs(systemd_tmpfiles_t)
+fs_list_all(systemd_tmpfiles_t)
+
-+files_getattr_all_dirs(systemd_tmpfiles_t)
-+files_getattr_all_files(systemd_tmpfiles_t)
-+files_getattr_all_sockets(systemd_tmpfiles_t)
-+files_getattr_all_symlinks(systemd_tmpfiles_t)
-+files_relabel_all_lock_dirs(systemd_tmpfiles_t)
-+files_relabel_all_lock_files(systemd_tmpfiles_t)
-+files_relabel_all_pid_dirs(systemd_tmpfiles_t)
-+files_relabel_all_pid_files(systemd_tmpfiles_t)
-+files_relabel_all_spool_dirs(systemd_tmpfiles_t)
-+files_manage_all_pids(systemd_tmpfiles_t)
-+files_manage_all_pid_dirs(systemd_tmpfiles_t)
-+files_manage_all_locks(systemd_tmpfiles_t)
-+files_read_generic_tmp_symlinks(systemd_tmpfiles_t)
-+files_setattr_all_tmp_dirs(systemd_tmpfiles_t)
-+files_delete_boot_flag(systemd_tmpfiles_t)
-+files_delete_all_non_security_files(systemd_tmpfiles_t)
-+files_delete_all_pid_sockets(systemd_tmpfiles_t)
-+files_delete_all_pid_pipes(systemd_tmpfiles_t)
-+files_purge_tmp(systemd_tmpfiles_t)
-+files_manage_generic_tmp_files(systemd_tmpfiles_t)
-+files_manage_generic_tmp_dirs(systemd_tmpfiles_t)
-+files_relabelfrom_tmp_dirs(systemd_tmpfiles_t)
-+files_relabelfrom_tmp_files(systemd_tmpfiles_t)
-+files_relabel_all_tmp_dirs(systemd_tmpfiles_t)
-+files_relabel_all_tmp_files(systemd_tmpfiles_t)
++files_manage_non_auth_files(systemd_tmpfiles_t)
++files_relabel_non_auth_files(systemd_tmpfiles_t)
+files_list_lost_found(systemd_tmpfiles_t)
+
+mls_file_read_all_levels(systemd_tmpfiles_t)
@@ -38129,6 +41835,7 @@ index 0000000..f758960
+logging_create_devlog_dev(systemd_tmpfiles_t)
+logging_send_syslog_msg(systemd_tmpfiles_t)
+logging_setattr_all_log_dirs(systemd_tmpfiles_t)
++logging_relabel_all_log_dirs(systemd_tmpfiles_t)
+
+miscfiles_filetrans_named_content(systemd_tmpfiles_t)
+miscfiles_manage_man_pages(systemd_tmpfiles_t)
@@ -38308,7 +42015,6 @@ index 0000000..f758960
+dev_read_sysfs(systemd_hostnamed_t)
+
+init_status(systemd_hostnamed_t)
-+init_read_state(systemd_hostnamed_t)
+init_stream_connect(systemd_hostnamed_t)
+
+logging_send_syslog_msg(systemd_hostnamed_t)
@@ -38407,7 +42113,7 @@ index 0000000..f758960
+#
+# systemd_sysctl domains local policy
+#
-+allow systemd_sysctl_t self:capability net_admin;
++allow systemd_sysctl_t self:capability { sys_admin net_admin };
+allow systemd_sysctl_t self:unix_dgram_socket create_socket_perms;
+
+kernel_dgram_send(systemd_sysctl_t)
@@ -38428,6 +42134,7 @@ index 0000000..f758960
+# Common rules for systemd domains
+#
+allow systemd_domain self:process { setfscreate signal_perms };
++dontaudit systemd_domain self:capability net_admin;
+
+dev_read_urand(systemd_domain)
+
@@ -38436,6 +42143,11 @@ index 0000000..f758960
+files_read_usr_files(systemd_domain)
+
+init_search_pid_dirs(systemd_domain)
++init_start_transient_unit(systemd_domain)
++init_stop_transient_unit(systemd_domain)
++init_status_transient_unit(systemd_domain)
++init_reload_transient_unit(systemd_domain)
++init_read_state(systemd_domain)
+
+logging_stream_connect_syslog(systemd_domain)
+
@@ -38448,6 +42160,7 @@ index 0000000..f758960
+
+read_files_pattern(systemd_domain, systemd_home_t, systemd_home_t)
+read_lnk_files_pattern(systemd_domain, systemd_home_t, systemd_home_t)
++
diff --git a/policy/modules/system/udev.fc b/policy/modules/system/udev.fc
index 40928d8..49fd32e 100644
--- a/policy/modules/system/udev.fc
@@ -38746,7 +42459,7 @@ index 0f64692..d7e8a01 100644
########################################
diff --git a/policy/modules/system/udev.te b/policy/modules/system/udev.te
-index a5ec88b..de9d585 100644
+index a5ec88b..f10561b 100644
--- a/policy/modules/system/udev.te
+++ b/policy/modules/system/udev.te
@@ -17,16 +17,17 @@ init_daemon_domain(udev_t, udev_exec_t)
@@ -38937,7 +42650,7 @@ index a5ec88b..de9d585 100644
# for arping used for static IP addresses on PCMCIA ethernet
netutils_domtrans(udev_t)
-@@ -226,19 +248,34 @@ optional_policy(`
+@@ -226,19 +248,38 @@ optional_policy(`
optional_policy(`
cups_domtrans_config(udev_t)
@@ -38964,6 +42677,10 @@ index a5ec88b..de9d585 100644
+
+optional_policy(`
+ gpsd_domtrans(udev_t)
++')
++
++optional_policy(`
++ kdump_systemctl(udev_t)
')
optional_policy(`
@@ -38972,7 +42689,7 @@ index a5ec88b..de9d585 100644
')
optional_policy(`
-@@ -264,6 +301,10 @@ optional_policy(`
+@@ -264,6 +305,10 @@ optional_policy(`
')
optional_policy(`
@@ -38983,7 +42700,7 @@ index a5ec88b..de9d585 100644
openct_read_pid_files(udev_t)
openct_domtrans(udev_t)
')
-@@ -278,6 +319,15 @@ optional_policy(`
+@@ -278,6 +323,15 @@ optional_policy(`
')
optional_policy(`
@@ -38999,7 +42716,7 @@ index a5ec88b..de9d585 100644
unconfined_signal(udev_t)
')
-@@ -290,6 +340,7 @@ optional_policy(`
+@@ -290,6 +344,7 @@ optional_policy(`
kernel_read_xen_state(udev_t)
xen_manage_log(udev_t)
xen_read_image_files(udev_t)
@@ -39804,10 +43521,10 @@ index 0280b32..61f19e9 100644
-')
+attribute unconfined_services;
diff --git a/policy/modules/system/userdomain.fc b/policy/modules/system/userdomain.fc
-index db75976..65191bd 100644
+index db75976..4ca3a28 100644
--- a/policy/modules/system/userdomain.fc
+++ b/policy/modules/system/userdomain.fc
-@@ -1,4 +1,21 @@
+@@ -1,4 +1,28 @@
HOME_DIR -d gen_context(system_u:object_r:user_home_dir_t,s0-mls_systemhigh)
+HOME_DIR -l gen_context(system_u:object_r:user_home_dir_t,s0-mls_systemhigh)
HOME_DIR/.+ gen_context(system_u:object_r:user_home_t,s0)
@@ -39828,10 +43545,17 @@ index db75976..65191bd 100644
+HOME_DIR/\.pki(/.*)? gen_context(system_u:object_r:home_cert_t,s0)
+HOME_DIR/\.gvfs/.* <>
+HOME_DIR/\.debug(/.*)? <>
++HOME_DIR/\.texlive2012(/.*)? gen_context(system_u:object_r:texlive_home_t,s0)
++HOME_DIR/\.texlive2013(/.*)? gen_context(system_u:object_r:texlive_home_t,s0)
++HOME_DIR/\.texlive2014(/.*)? gen_context(system_u:object_r:texlive_home_t,s0)
+
+/var/run/user(/.*)? gen_context(system_u:object_r:user_tmp_t,s0)
++
++/tmp/hsperfdata_root gen_context(system_u:object_r:user_tmp_t,s0)
++/var/tmp/hsperfdata_root gen_context(system_u:object_r:user_tmp_t,s0)
++
diff --git a/policy/modules/system/userdomain.if b/policy/modules/system/userdomain.if
-index 3c5dba7..2890de8 100644
+index 3c5dba7..333f640 100644
--- a/policy/modules/system/userdomain.if
+++ b/policy/modules/system/userdomain.if
@@ -30,9 +30,11 @@ template(`userdom_base_user_template',`
@@ -40421,7 +44145,7 @@ index 3c5dba7..2890de8 100644
')
')
-@@ -491,7 +659,8 @@ template(`userdom_common_user_template',`
+@@ -491,51 +659,63 @@ template(`userdom_common_user_template',`
attribute unpriv_userdomain;
')
@@ -40431,7 +44155,10 @@ index 3c5dba7..2890de8 100644
##############################
#
-@@ -501,41 +670,51 @@ template(`userdom_common_user_template',`
+ # User domain Local policy
+ #
++ allow $1_t self:packet_socket create_socket_perms;
+
# evolution and gnome-session try to create a netlink socket
dontaudit $1_t self:netlink_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown };
dontaudit $1_t self:netlink_route_socket { create ioctl read getattr write setattr append bind connect getopt setopt shutdown nlmsg_read nlmsg_write };
@@ -40506,7 +44233,7 @@ index 3c5dba7..2890de8 100644
# cjp: some of this probably can be removed
selinux_get_fs_mount($1_t)
-@@ -546,93 +725,120 @@ template(`userdom_common_user_template',`
+@@ -546,93 +726,128 @@ template(`userdom_common_user_template',`
selinux_compute_user_contexts($1_t)
# for eject
@@ -40601,6 +44328,10 @@ index 3c5dba7..2890de8 100644
+ evolution_alarm_dbus_chat($1_usertype)
+ ')
+
++ optional_policy(`
++ firewalld_dbus_chat($1_usertype)
++ ')
++
+ optional_policy(`
+ gnome_dbus_chat_gconfdefault($1_usertype)
+ ')
@@ -40615,6 +44346,10 @@ index 3c5dba7..2890de8 100644
+ kde_dbus_chat_backlighthelper($1_usertype)
')
++ optional_policy(`
++ memcached_stream_connect($1_usertype)
++ ')
++
optional_policy(`
- cups_dbus_chat_config($1_t)
+ modemmanager_dbus_chat($1_usertype)
@@ -40665,7 +44400,7 @@ index 3c5dba7..2890de8 100644
')
optional_policy(`
-@@ -642,23 +848,21 @@ template(`userdom_common_user_template',`
+@@ -642,23 +857,21 @@ template(`userdom_common_user_template',`
optional_policy(`
mpd_manage_user_data_content($1_t)
mpd_relabel_user_data_content($1_t)
@@ -40694,7 +44429,7 @@ index 3c5dba7..2890de8 100644
mysql_stream_connect($1_t)
')
')
-@@ -671,7 +875,7 @@ template(`userdom_common_user_template',`
+@@ -671,7 +884,7 @@ template(`userdom_common_user_template',`
optional_policy(`
# to allow monitoring of pcmcia status
@@ -40703,7 +44438,7 @@ index 3c5dba7..2890de8 100644
')
optional_policy(`
-@@ -680,9 +884,9 @@ template(`userdom_common_user_template',`
+@@ -680,9 +893,9 @@ template(`userdom_common_user_template',`
')
optional_policy(`
@@ -40716,7 +44451,7 @@ index 3c5dba7..2890de8 100644
')
')
-@@ -693,32 +897,35 @@ template(`userdom_common_user_template',`
+@@ -693,32 +906,35 @@ template(`userdom_common_user_template',`
')
optional_policy(`
@@ -40726,27 +44461,31 @@ index 3c5dba7..2890de8 100644
+
+ optional_policy(`
+ rpc_dontaudit_getattr_exports($1_usertype)
++ ')
++
++ optional_policy(`
++ rpcbind_stream_connect($1_usertype)
')
optional_policy(`
- rpc_dontaudit_getattr_exports($1_t)
- rpc_manage_nfs_rw_content($1_t)
-+ rpcbind_stream_connect($1_usertype)
++ samba_stream_connect_winbind($1_usertype)
')
optional_policy(`
- samba_stream_connect_winbind($1_t)
-+ samba_stream_connect_winbind($1_usertype)
++ sandbox_transition($1_usertype, $1_r)
')
optional_policy(`
- slrnpull_search_spool($1_t)
-+ sandbox_transition($1_usertype, $1_r)
++ seunshare_role_template($1, $1_r, $1_t)
')
optional_policy(`
- usernetctl_run($1_t, $1_r)
-+ seunshare_role_template($1, $1_r, $1_t)
++ slrnpull_search_spool($1_usertype)
')
optional_policy(`
@@ -40755,15 +44494,11 @@ index 3c5dba7..2890de8 100644
- virt_home_filetrans_virt_content($1_t, dir, "isos")
- virt_home_filetrans_svirt_home($1_t, dir, "qemu")
- virt_home_filetrans_virt_home($1_t, dir, "VirtualMachines")
-+ slrnpull_search_spool($1_usertype)
-+ ')
-+
-+ optional_policy(`
+ thumb_role($1_r, $1_usertype)
')
')
-@@ -743,17 +950,33 @@ template(`userdom_common_user_template',`
+@@ -743,17 +959,33 @@ template(`userdom_common_user_template',`
template(`userdom_login_user_template', `
gen_require(`
class context contains;
@@ -40780,9 +44515,7 @@ index 3c5dba7..2890de8 100644
- userdom_manage_tmpfs_role($1_r, $1_t)
+ userdom_manage_tmp_role($1_r, $1_usertype)
+ userdom_manage_tmpfs_role($1_r, $1_usertype)
-
-- userdom_exec_user_tmp_files($1_t)
-- userdom_exec_user_home_content_files($1_t)
++
+ ifelse(`$1',`unconfined',`',`
+ gen_tunable($1_exec_content, true)
+
@@ -40793,7 +44526,9 @@ index 3c5dba7..2890de8 100644
+ tunable_policy(`$1_exec_content && use_nfs_home_dirs',`
+ fs_exec_nfs_files($1_usertype)
+ ')
-+
+
+- userdom_exec_user_tmp_files($1_t)
+- userdom_exec_user_home_content_files($1_t)
+ tunable_policy(`$1_exec_content && use_samba_home_dirs',`
+ fs_exec_cifs_files($1_usertype)
+ ')
@@ -40801,7 +44536,7 @@ index 3c5dba7..2890de8 100644
userdom_change_password_template($1)
-@@ -761,82 +984,101 @@ template(`userdom_login_user_template', `
+@@ -761,83 +993,107 @@ template(`userdom_login_user_template', `
#
# User domain Local policy
#
@@ -40895,8 +44630,7 @@ index 3c5dba7..2890de8 100644
+ seutil_read_file_contexts($1_usertype)
+ seutil_read_default_contexts($1_usertype)
+ seutil_exec_setfiles($1_usertype)
-
-- seutil_read_config($1_t)
++
+ optional_policy(`
+ cups_read_config($1_usertype)
+ cups_stream_connect($1_usertype)
@@ -40908,38 +44642,45 @@ index 3c5dba7..2890de8 100644
+ init_write_key($1_usertype)
+ ')
+- seutil_read_config($1_t)
++ optional_policy(`
++ mysql_filetrans_named_content($1_usertype)
++ ')
+
optional_policy(`
- cups_read_config($1_t)
- cups_stream_connect($1_t)
- cups_stream_connect_ptal($1_t)
-+ mysql_filetrans_named_content($1_usertype)
++ mta_dontaudit_read_spool_symlinks($1_usertype)
')
optional_policy(`
- kerberos_use($1_t)
-+ mta_dontaudit_read_spool_symlinks($1_usertype)
++ quota_dontaudit_getattr_db($1_usertype)
')
optional_policy(`
- mta_dontaudit_read_spool_symlinks($1_t)
-+ quota_dontaudit_getattr_db($1_usertype)
++ rpm_read_db($1_usertype)
++ rpm_dontaudit_manage_db($1_usertype)
++ rpm_read_cache($1_usertype)
')
optional_policy(`
- quota_dontaudit_getattr_db($1_t)
-+ rpm_read_db($1_usertype)
-+ rpm_dontaudit_manage_db($1_usertype)
-+ rpm_read_cache($1_usertype)
++ oddjob_run_mkhomedir($1_t, $1_r)
')
optional_policy(`
- rpm_read_db($1_t)
- rpm_dontaudit_manage_db($1_t)
-+ oddjob_run_mkhomedir($1_t, $1_r)
++ wine_filetrans_named_content($1_usertype)
')
++
')
-@@ -868,6 +1110,12 @@ template(`userdom_restricted_user_template',`
+ #######################################
+@@ -868,6 +1124,12 @@ template(`userdom_restricted_user_template',`
typeattribute $1_t unpriv_userdomain;
domain_interactive_fd($1_t)
@@ -40952,7 +44693,7 @@ index 3c5dba7..2890de8 100644
##############################
#
# Local policy
-@@ -907,42 +1155,99 @@ template(`userdom_restricted_xwindows_user_template',`
+@@ -907,42 +1169,99 @@ template(`userdom_restricted_xwindows_user_template',`
#
# Local policy
#
@@ -41041,57 +44782,60 @@ index 3c5dba7..2890de8 100644
+ consolekit_dontaudit_read_log($1_usertype)
+ consolekit_dbus_chat($1_usertype)
+ ')
-+
-+ optional_policy(`
-+ cups_dbus_chat($1_usertype)
-+ cups_dbus_chat_config($1_usertype)
-+ ')
optional_policy(`
- consolekit_dbus_chat($1_t)
-+ devicekit_dbus_chat($1_usertype)
-+ devicekit_dbus_chat_disk($1_usertype)
-+ devicekit_dbus_chat_power($1_usertype)
++ cups_dbus_chat($1_usertype)
++ cups_dbus_chat_config($1_usertype)
')
optional_policy(`
- cups_dbus_chat($1_t)
-+ fprintd_dbus_chat($1_t)
++ devicekit_dbus_chat($1_usertype)
++ devicekit_dbus_chat_disk($1_usertype)
++ devicekit_dbus_chat_power($1_usertype)
')
optional_policy(`
- gnome_role_template($1, $1_r, $1_t)
++ fprintd_dbus_chat($1_t)
++ ')
++
++ optional_policy(`
+ realmd_dbus_chat($1_t)
')
optional_policy(`
-@@ -951,15 +1256,36 @@ template(`userdom_restricted_xwindows_user_template',`
+@@ -951,17 +1270,38 @@ template(`userdom_restricted_xwindows_user_template',`
')
optional_policy(`
- java_role($1_r, $1_t)
+ policykit_role($1_r, $1_usertype)
-+ ')
-+
-+ optional_policy(`
+ ')
+
+ optional_policy(`
+- setroubleshoot_dontaudit_stream_connect($1_t)
+ pulseaudio_role($1_r, $1_usertype)
+ pulseaudio_filetrans_admin_home_content($1_usertype)
-+ ')
-+
+ ')
+-')
+
+-#######################################
+-##
+-## The template for creating a unprivileged user roughly
+ optional_policy(`
+ rtkit_scheduled($1_usertype)
+ ')
+
+ optional_policy(`
+ systemd_filetrans_home_content($1_usertype)
- ')
-
- optional_policy(`
- setroubleshoot_dontaudit_stream_connect($1_t)
- ')
--')
-
--#######################################
++ ')
++
++ optional_policy(`
++ setroubleshoot_dontaudit_stream_connect($1_t)
++ ')
++
+ optional_policy(`
+ udev_read_db($1_usertype)
+ ')
@@ -41102,10 +44846,12 @@ index 3c5dba7..2890de8 100644
+')
+
+#######################################
- ##
- ## The template for creating a unprivileged user roughly
++##
++## The template for creating a unprivileged user roughly
## equivalent to a regular linux user.
-@@ -990,27 +1316,33 @@ template(`userdom_unpriv_user_template', `
+ ##
+ ##
+@@ -990,27 +1330,33 @@ template(`userdom_unpriv_user_template', `
#
# Inherit rules for ordinary users.
@@ -41143,7 +44889,7 @@ index 3c5dba7..2890de8 100644
fs_manage_noxattr_fs_files($1_t)
fs_manage_noxattr_fs_dirs($1_t)
# Write floppies
-@@ -1021,23 +1353,60 @@ template(`userdom_unpriv_user_template', `
+@@ -1021,23 +1367,60 @@ template(`userdom_unpriv_user_template', `
')
')
@@ -41195,26 +44941,26 @@ index 3c5dba7..2890de8 100644
+
+ optional_policy(`
+ gpm_stream_connect($1_usertype)
-+ ')
-+
-+ optional_policy(`
+ ')
+
+ optional_policy(`
+- netutils_run_ping_cond($1_t, $1_r)
+- netutils_run_traceroute_cond($1_t, $1_r)
+ mount_run_fusermount($1_t, $1_r)
+ mount_read_pid_files($1_t)
+ ')
+
+ optional_policy(`
+ wine_role_template($1, $1_r, $1_t)
- ')
-
- optional_policy(`
-- netutils_run_ping_cond($1_t, $1_r)
-- netutils_run_traceroute_cond($1_t, $1_r)
++ ')
++
++ optional_policy(`
+ postfix_run_postdrop($1_t, $1_r)
+ postfix_search_spool($1_t)
')
# Run pppd in pppd_t by default for user
-@@ -1046,7 +1415,9 @@ template(`userdom_unpriv_user_template', `
+@@ -1046,7 +1429,9 @@ template(`userdom_unpriv_user_template', `
')
optional_policy(`
@@ -41225,7 +44971,7 @@ index 3c5dba7..2890de8 100644
')
')
-@@ -1082,7 +1453,9 @@ template(`userdom_unpriv_user_template', `
+@@ -1082,7 +1467,9 @@ template(`userdom_unpriv_user_template', `
template(`userdom_admin_user_template',`
gen_require(`
attribute admindomain;
@@ -41236,7 +44982,7 @@ index 3c5dba7..2890de8 100644
')
##############################
-@@ -1098,6 +1471,7 @@ template(`userdom_admin_user_template',`
+@@ -1098,6 +1485,7 @@ template(`userdom_admin_user_template',`
role system_r types $1_t;
typeattribute $1_t admindomain;
@@ -41244,25 +44990,24 @@ index 3c5dba7..2890de8 100644
ifdef(`direct_sysadm_daemon',`
domain_system_change_exemption($1_t)
-@@ -1109,6 +1483,7 @@ template(`userdom_admin_user_template',`
+@@ -1108,14 +1496,8 @@ template(`userdom_admin_user_template',`
+ # $1_t local policy
#
- allow $1_t self:capability ~{ sys_module audit_control audit_write };
-+ allow $1_t self:capability2 { block_suspend syslog };
- allow $1_t self:process { setexec setfscreate };
- allow $1_t self:netlink_audit_socket nlmsg_readpriv;
- allow $1_t self:tun_socket create;
-@@ -1117,6 +1492,9 @@ template(`userdom_admin_user_template',`
- # Skip authentication when pam_rootok is specified.
- allow $1_t self:passwd rootok;
-
+- allow $1_t self:capability ~{ sys_module audit_control audit_write };
+- allow $1_t self:process { setexec setfscreate };
+- allow $1_t self:netlink_audit_socket nlmsg_readpriv;
+- allow $1_t self:tun_socket create;
+- # Set password information for other users.
+- allow $1_t self:passwd { passwd chfn chsh };
+- # Skip authentication when pam_rootok is specified.
+- allow $1_t self:passwd rootok;
+ # Manipulate other users crontab.
+ allow $1_t self:passwd crontab;
-+
+
kernel_read_software_raid_state($1_t)
kernel_getattr_core_if($1_t)
- kernel_getattr_message_if($1_t)
-@@ -1131,6 +1509,7 @@ template(`userdom_admin_user_template',`
+@@ -1131,6 +1513,7 @@ template(`userdom_admin_user_template',`
kernel_sigstop_unlabeled($1_t)
kernel_signull_unlabeled($1_t)
kernel_sigchld_unlabeled($1_t)
@@ -41270,7 +45015,7 @@ index 3c5dba7..2890de8 100644
corenet_tcp_bind_generic_port($1_t)
# allow setting up tunnels
-@@ -1148,10 +1527,14 @@ template(`userdom_admin_user_template',`
+@@ -1148,10 +1531,14 @@ template(`userdom_admin_user_template',`
dev_rename_all_blk_files($1_t)
dev_rename_all_chr_files($1_t)
dev_create_generic_symlinks($1_t)
@@ -41285,7 +45030,7 @@ index 3c5dba7..2890de8 100644
domain_dontaudit_ptrace_all_domains($1_t)
# signal all domains:
domain_kill_all_domains($1_t)
-@@ -1162,29 +1545,38 @@ template(`userdom_admin_user_template',`
+@@ -1162,29 +1549,38 @@ template(`userdom_admin_user_template',`
domain_sigchld_all_domains($1_t)
# for lsof
domain_getattr_all_sockets($1_t)
@@ -41328,7 +45073,7 @@ index 3c5dba7..2890de8 100644
# The following rule is temporary until such time that a complete
# policy management infrastructure is in place so that an administrator
-@@ -1194,6 +1586,8 @@ template(`userdom_admin_user_template',`
+@@ -1194,6 +1590,8 @@ template(`userdom_admin_user_template',`
# But presently necessary for installing the file_contexts file.
seutil_manage_bin_policy($1_t)
@@ -41337,7 +45082,7 @@ index 3c5dba7..2890de8 100644
userdom_manage_user_home_content_dirs($1_t)
userdom_manage_user_home_content_files($1_t)
userdom_manage_user_home_content_symlinks($1_t)
-@@ -1201,13 +1595,17 @@ template(`userdom_admin_user_template',`
+@@ -1201,13 +1599,17 @@ template(`userdom_admin_user_template',`
userdom_manage_user_home_content_sockets($1_t)
userdom_user_home_dir_filetrans_user_home_content($1_t, { dir file lnk_file fifo_file sock_file })
@@ -41356,7 +45101,7 @@ index 3c5dba7..2890de8 100644
optional_policy(`
postgresql_unconfined($1_t)
')
-@@ -1243,7 +1641,7 @@ template(`userdom_admin_user_template',`
+@@ -1243,7 +1645,7 @@ template(`userdom_admin_user_template',`
##
##
#
@@ -41365,7 +45110,7 @@ index 3c5dba7..2890de8 100644
allow $1 self:capability { dac_read_search dac_override };
corecmd_exec_shell($1)
-@@ -1253,6 +1651,8 @@ template(`userdom_security_admin_template',`
+@@ -1253,6 +1655,8 @@ template(`userdom_security_admin_template',`
dev_relabel_all_dev_nodes($1)
files_create_boot_flag($1)
@@ -41374,7 +45119,7 @@ index 3c5dba7..2890de8 100644
# Necessary for managing /boot/efi
fs_manage_dos_files($1)
-@@ -1265,8 +1665,10 @@ template(`userdom_security_admin_template',`
+@@ -1265,8 +1669,10 @@ template(`userdom_security_admin_template',`
selinux_set_enforce_mode($1)
selinux_set_all_booleans($1)
selinux_set_parameters($1)
@@ -41386,7 +45131,7 @@ index 3c5dba7..2890de8 100644
auth_relabel_shadow($1)
init_exec($1)
-@@ -1277,29 +1679,31 @@ template(`userdom_security_admin_template',`
+@@ -1277,29 +1683,31 @@ template(`userdom_security_admin_template',`
logging_read_audit_config($1)
seutil_manage_bin_policy($1)
@@ -41429,7 +45174,7 @@ index 3c5dba7..2890de8 100644
')
optional_policy(`
-@@ -1360,14 +1764,17 @@ interface(`userdom_user_home_content',`
+@@ -1360,14 +1768,17 @@ interface(`userdom_user_home_content',`
gen_require(`
attribute user_home_content_type;
type user_home_t;
@@ -41448,7 +45193,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -1408,6 +1815,51 @@ interface(`userdom_user_tmpfs_file',`
+@@ -1408,6 +1819,51 @@ interface(`userdom_user_tmpfs_file',`
##
## Allow domain to attach to TUN devices created by administrative users.
##
@@ -41500,7 +45245,7 @@ index 3c5dba7..2890de8 100644
##
##
## Domain allowed access.
-@@ -1512,11 +1964,31 @@ interface(`userdom_search_user_home_dirs',`
+@@ -1512,11 +1968,31 @@ interface(`userdom_search_user_home_dirs',`
')
allow $1 user_home_dir_t:dir search_dir_perms;
@@ -41532,7 +45277,7 @@ index 3c5dba7..2890de8 100644
## Do not audit attempts to search user home directories.
##
##
-@@ -1558,6 +2030,14 @@ interface(`userdom_list_user_home_dirs',`
+@@ -1558,6 +2034,14 @@ interface(`userdom_list_user_home_dirs',`
allow $1 user_home_dir_t:dir list_dir_perms;
files_search_home($1)
@@ -41547,7 +45292,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -1573,9 +2053,11 @@ interface(`userdom_list_user_home_dirs',`
+@@ -1573,9 +2057,11 @@ interface(`userdom_list_user_home_dirs',`
interface(`userdom_dontaudit_list_user_home_dirs',`
gen_require(`
type user_home_dir_t;
@@ -41559,7 +45304,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -1632,6 +2114,42 @@ interface(`userdom_relabelto_user_home_dirs',`
+@@ -1632,6 +2118,42 @@ interface(`userdom_relabelto_user_home_dirs',`
allow $1 user_home_dir_t:dir relabelto;
')
@@ -41602,7 +45347,7 @@ index 3c5dba7..2890de8 100644
########################################
##
## Create directories in the home dir root with
-@@ -1711,6 +2229,8 @@ interface(`userdom_dontaudit_search_user_home_content',`
+@@ -1711,6 +2233,8 @@ interface(`userdom_dontaudit_search_user_home_content',`
')
dontaudit $1 user_home_t:dir search_dir_perms;
@@ -41611,7 +45356,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -1744,10 +2264,12 @@ interface(`userdom_list_all_user_home_content',`
+@@ -1744,10 +2268,12 @@ interface(`userdom_list_all_user_home_content',`
#
interface(`userdom_list_user_home_content',`
gen_require(`
@@ -41626,7 +45371,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -1772,7 +2294,25 @@ interface(`userdom_manage_user_home_content_dirs',`
+@@ -1772,7 +2298,25 @@ interface(`userdom_manage_user_home_content_dirs',`
########################################
##
@@ -41653,7 +45398,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -1782,53 +2322,70 @@ interface(`userdom_manage_user_home_content_dirs',`
+@@ -1782,53 +2326,70 @@ interface(`userdom_manage_user_home_content_dirs',`
#
interface(`userdom_delete_all_user_home_content_dirs',`
gen_require(`
@@ -41736,7 +45481,7 @@ index 3c5dba7..2890de8 100644
## Do not audit attempts to set the
## attributes of user home files.
##
-@@ -1848,6 +2405,25 @@ interface(`userdom_dontaudit_setattr_user_home_content_files',`
+@@ -1848,6 +2409,25 @@ interface(`userdom_dontaudit_setattr_user_home_content_files',`
########################################
##
@@ -41762,7 +45507,7 @@ index 3c5dba7..2890de8 100644
## Mmap user home files.
##
##
-@@ -1878,14 +2454,36 @@ interface(`userdom_mmap_user_home_content_files',`
+@@ -1878,14 +2458,36 @@ interface(`userdom_mmap_user_home_content_files',`
interface(`userdom_read_user_home_content_files',`
gen_require(`
type user_home_dir_t, user_home_t;
@@ -41800,7 +45545,7 @@ index 3c5dba7..2890de8 100644
## Do not audit attempts to read user home files.
##
##
-@@ -1896,11 +2494,14 @@ interface(`userdom_read_user_home_content_files',`
+@@ -1896,11 +2498,14 @@ interface(`userdom_read_user_home_content_files',`
#
interface(`userdom_dontaudit_read_user_home_content_files',`
gen_require(`
@@ -41818,7 +45563,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -1941,7 +2542,7 @@ interface(`userdom_dontaudit_write_user_home_content_files',`
+@@ -1941,7 +2546,7 @@ interface(`userdom_dontaudit_write_user_home_content_files',`
########################################
##
@@ -41827,7 +45572,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -1949,19 +2550,17 @@ interface(`userdom_dontaudit_write_user_home_content_files',`
+@@ -1949,19 +2554,17 @@ interface(`userdom_dontaudit_write_user_home_content_files',`
##
##
#
@@ -41851,7 +45596,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -1969,35 +2568,35 @@ interface(`userdom_delete_all_user_home_content_files',`
+@@ -1969,21 +2572,75 @@ interface(`userdom_delete_all_user_home_content_files',`
##
##
#
@@ -41875,91 +45620,38 @@ index 3c5dba7..2890de8 100644
##
-## Domain to not audit.
+## Domain allowed access.
- ##
- ##
- #
--interface(`userdom_dontaudit_relabel_user_home_content_files',`
++##
++##
++#
+interface(`userdom_delete_user_home_content_sock_files',`
- gen_require(`
- type user_home_t;
- ')
-
-- dontaudit $1 user_home_t:file relabel_file_perms;
++ gen_require(`
++ type user_home_t;
++ ')
++
+ allow $1 user_home_t:sock_file delete_file_perms;
- ')
-
- ########################################
- ##
--## Read user home subdirectory symbolic links.
-+## Delete all sock files in a user home subdirectory.
- ##
- ##
- ##
-@@ -2005,45 +2604,92 @@ interface(`userdom_dontaudit_relabel_user_home_content_files',`
- ##
- ##
- #
--interface(`userdom_read_user_home_content_symlinks',`
-+interface(`userdom_delete_all_user_home_content_sock_files',`
- gen_require(`
-- type user_home_dir_t, user_home_t;
-+ attribute user_home_type;
- ')
-
-- read_lnk_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t)
-- files_search_home($1)
-+ allow $1 user_home_type:sock_file delete_file_perms;
- ')
-
- ########################################
- ##
--## Execute user home files.
-+## Delete all files in a user home subdirectory.
- ##
- ##
- ##
- ## Domain allowed access.
- ##
- ##
--##
- #
--interface(`userdom_exec_user_home_content_files',`
-+interface(`userdom_delete_all_user_home_content',`
- gen_require(`
-- type user_home_dir_t, user_home_t;
-+ attribute user_home_type;
- ')
-
-- files_search_home($1)
-- exec_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t)
-+ allow $1 user_home_type:dir_file_class_set delete_file_perms;
+')
-
-- tunable_policy(`use_nfs_home_dirs',`
-- fs_exec_nfs_files($1)
++
+########################################
+##
-+## Do not audit attempts to write user home files.
++## Delete all sock files in a user home subdirectory.
+##
+##
+##
-+## Domain to not audit.
++## Domain allowed access.
+##
+##
+#
-+interface(`userdom_dontaudit_relabel_user_home_content_files',`
++interface(`userdom_delete_all_user_home_content_sock_files',`
+ gen_require(`
-+ type user_home_t;
- ')
-
-- tunable_policy(`use_samba_home_dirs',`
-- fs_exec_cifs_files($1)
-+ dontaudit $1 user_home_t:file relabel_file_perms;
++ attribute user_home_type;
++ ')
++
++ allow $1 user_home_type:sock_file delete_file_perms;
+')
+
+########################################
+##
-+## Read user home subdirectory symbolic links.
++## Delete all files in a user home subdirectory.
+##
+##
+##
@@ -41967,42 +45659,60 @@ index 3c5dba7..2890de8 100644
+##
+##
+#
-+interface(`userdom_read_user_home_content_symlinks',`
++interface(`userdom_delete_all_user_home_content',`
+ gen_require(`
-+ type user_home_dir_t, user_home_t;
- ')
++ attribute user_home_type;
++ ')
++
++ allow $1 user_home_type:dir_file_class_set delete_file_perms;
++')
+
++########################################
++##
++## Do not audit attempts to write user home files.
++##
++##
++##
++## Domain to not audit.
+ ##
+ ##
+ #
+@@ -2010,8 +2667,7 @@ interface(`userdom_read_user_home_content_symlinks',`
+ type user_home_dir_t, user_home_t;
+ ')
+
+- read_lnk_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t)
+- files_search_home($1)
+ allow $1 { user_home_dir_t user_home_t }:lnk_file read_lnk_file_perms;
')
########################################
- ##
-+## Execute user home files.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+##
-+#
-+interface(`userdom_exec_user_home_content_files',`
-+ gen_require(`
+@@ -2027,20 +2683,14 @@ interface(`userdom_read_user_home_content_symlinks',`
+ #
+ interface(`userdom_exec_user_home_content_files',`
+ gen_require(`
+- type user_home_dir_t, user_home_t;
+ type user_home_dir_t;
+ attribute user_home_type;
-+ ')
-+
-+ files_search_home($1)
+ ')
+
+ files_search_home($1)
+- exec_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t)
+-
+- tunable_policy(`use_nfs_home_dirs',`
+- fs_exec_nfs_files($1)
+- ')
+-
+- tunable_policy(`use_samba_home_dirs',`
+- fs_exec_cifs_files($1)
+ exec_files_pattern($1, { user_home_dir_t user_home_type }, user_home_type)
+ dontaudit $1 user_home_type:sock_file execute;
-+ ')
-+
-+########################################
-+##
- ## Do not audit attempts to execute user home files.
- ##
- ##
-@@ -2123,7 +2769,7 @@ interface(`userdom_manage_user_home_content_symlinks',`
+ ')
+-')
+
+ ########################################
+ ##
+@@ -2123,7 +2773,7 @@ interface(`userdom_manage_user_home_content_symlinks',`
########################################
##
@@ -42011,7 +45721,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -2131,19 +2777,17 @@ interface(`userdom_manage_user_home_content_symlinks',`
+@@ -2131,19 +2781,17 @@ interface(`userdom_manage_user_home_content_symlinks',`
##
##
#
@@ -42035,7 +45745,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -2151,12 +2795,12 @@ interface(`userdom_delete_all_user_home_content_symlinks',`
+@@ -2151,12 +2799,12 @@ interface(`userdom_delete_all_user_home_content_symlinks',`
##
##
#
@@ -42051,7 +45761,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -2393,11 +3037,11 @@ interface(`userdom_dontaudit_manage_user_tmp_dirs',`
+@@ -2393,11 +3041,11 @@ interface(`userdom_dontaudit_manage_user_tmp_dirs',`
#
interface(`userdom_read_user_tmp_files',`
gen_require(`
@@ -42066,7 +45776,7 @@ index 3c5dba7..2890de8 100644
files_search_tmp($1)
')
-@@ -2417,7 +3061,7 @@ interface(`userdom_dontaudit_read_user_tmp_files',`
+@@ -2417,7 +3065,7 @@ interface(`userdom_dontaudit_read_user_tmp_files',`
type user_tmp_t;
')
@@ -42075,7 +45785,34 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -2664,6 +3308,25 @@ interface(`userdom_tmp_filetrans_user_tmp',`
+@@ -2541,6 +3189,26 @@ interface(`userdom_manage_user_tmp_files',`
+ ########################################
+ ##
+ ## Create, read, write, and delete user
++## temporary files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`userdom_filetrans_named_user_tmp_files',`
++ gen_require(`
++ type user_tmp_t;
++ ')
++
++ files_tmp_filetrans($1, user_tmp_t, dir, "hsperfdata_root")
++ files_search_tmp($1)
++')
++
++########################################
++##
++## Create, read, write, and delete user
+ ## temporary symbolic links.
+ ##
+ ##
+@@ -2664,6 +3332,25 @@ interface(`userdom_tmp_filetrans_user_tmp',`
files_tmp_filetrans($1, user_tmp_t, $2, $3)
')
@@ -42101,7 +45838,7 @@ index 3c5dba7..2890de8 100644
########################################
##
## Read user tmpfs files.
-@@ -2680,13 +3343,14 @@ interface(`userdom_read_user_tmpfs_files',`
+@@ -2680,13 +3367,14 @@ interface(`userdom_read_user_tmpfs_files',`
')
read_files_pattern($1, user_tmpfs_t, user_tmpfs_t)
@@ -42117,7 +45854,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -2707,7 +3371,7 @@ interface(`userdom_rw_user_tmpfs_files',`
+@@ -2707,7 +3395,7 @@ interface(`userdom_rw_user_tmpfs_files',`
########################################
##
@@ -42126,7 +45863,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -2715,14 +3379,30 @@ interface(`userdom_rw_user_tmpfs_files',`
+@@ -2715,14 +3403,30 @@ interface(`userdom_rw_user_tmpfs_files',`
##
##
#
@@ -42161,7 +45898,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -2817,6 +3497,24 @@ interface(`userdom_use_user_ttys',`
+@@ -2817,6 +3521,24 @@ interface(`userdom_use_user_ttys',`
########################################
##
@@ -42186,7 +45923,7 @@ index 3c5dba7..2890de8 100644
## Read and write a user domain pty.
##
##
-@@ -2835,22 +3533,34 @@ interface(`userdom_use_user_ptys',`
+@@ -2835,22 +3557,34 @@ interface(`userdom_use_user_ptys',`
########################################
##
@@ -42229,7 +45966,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -2859,14 +3569,33 @@ interface(`userdom_use_user_ptys',`
+@@ -2859,14 +3593,33 @@ interface(`userdom_use_user_ptys',`
##
##
#
@@ -42267,7 +46004,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -2885,8 +3614,27 @@ interface(`userdom_dontaudit_use_user_terminals',`
+@@ -2885,8 +3638,27 @@ interface(`userdom_dontaudit_use_user_terminals',`
type user_tty_device_t, user_devpts_t;
')
@@ -42297,7 +46034,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -2958,69 +3706,68 @@ interface(`userdom_spec_domtrans_unpriv_users',`
+@@ -2958,69 +3730,68 @@ interface(`userdom_spec_domtrans_unpriv_users',`
allow unpriv_userdomain $1:process sigchld;
')
@@ -42398,7 +46135,7 @@ index 3c5dba7..2890de8 100644
##
##
##
-@@ -3028,12 +3775,12 @@ interface(`userdom_manage_unpriv_user_semaphores',`
+@@ -3028,12 +3799,12 @@ interface(`userdom_manage_unpriv_user_semaphores',`
##
##
#
@@ -42413,7 +46150,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -3097,7 +3844,7 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',`
+@@ -3097,7 +3868,7 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',`
domain_entry_file_spec_domtrans($1, unpriv_userdomain)
allow unpriv_userdomain $1:fd use;
@@ -42422,7 +46159,7 @@ index 3c5dba7..2890de8 100644
allow unpriv_userdomain $1:process sigchld;
')
-@@ -3113,29 +3860,13 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',`
+@@ -3113,29 +3884,13 @@ interface(`userdom_entry_spec_domtrans_unpriv_users',`
#
interface(`userdom_search_user_home_content',`
gen_require(`
@@ -42456,7 +46193,7 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -3217,7 +3948,25 @@ interface(`userdom_dontaudit_use_user_ptys',`
+@@ -3217,7 +3972,25 @@ interface(`userdom_dontaudit_use_user_ptys',`
type user_devpts_t;
')
@@ -42483,107 +46220,37 @@ index 3c5dba7..2890de8 100644
')
########################################
-@@ -3272,12 +4021,13 @@ interface(`userdom_write_user_tmp_files',`
+@@ -3272,7 +4045,83 @@ interface(`userdom_write_user_tmp_files',`
type user_tmp_t;
')
- allow $1 user_tmp_t:file write_file_perms;
+ write_files_pattern($1, user_tmp_t, user_tmp_t)
- ')
-
- ########################################
- ##
--## Do not audit attempts to use user ttys.
-+## Do not audit attempts to write users
-+## temporary files.
- ##
- ##
- ##
-@@ -3285,46 +4035,122 @@ interface(`userdom_write_user_tmp_files',`
- ##
- ##
- #
--interface(`userdom_dontaudit_use_user_ttys',`
-+interface(`userdom_dontaudit_write_user_tmp_files',`
- gen_require(`
-- type user_tty_device_t;
-+ type user_tmp_t;
- ')
-
-- dontaudit $1 user_tty_device_t:chr_file rw_file_perms;
-+ dontaudit $1 user_tmp_t:file write;
- ')
-
- ########################################
- ##
--## Read the process state of all user domains.
-+## Do not audit attempts to delete users
-+## temporary files.
- ##
- ##
- ##
--## Domain allowed access.
-+## Domain to not audit.
- ##
- ##
- #
--interface(`userdom_read_all_users_state',`
-+interface(`userdom_dontaudit_delete_user_tmp_files',`
- gen_require(`
-- attribute userdomain;
-+ type user_tmp_t;
- ')
-
-- read_files_pattern($1, userdomain, userdomain)
-- kernel_search_proc($1)
-+ dontaudit $1 user_tmp_t:file delete_file_perms;
- ')
-
- ########################################
- ##
--## Get the attributes of all user domains.
-+## Do not audit attempts to read/write users
-+## temporary fifo files.
- ##
- ##
- ##
--## Domain allowed access.
-+## Domain to not audit.
- ##
- ##
- #
--interface(`userdom_getattr_all_users',`
-+interface(`userdom_dontaudit_rw_user_tmp_pipes',`
- gen_require(`
-- attribute userdomain;
-+ type user_tmp_t;
-+ ')
-+
-+ dontaudit $1 user_tmp_t:fifo_file rw_inherited_fifo_file_perms;
+')
+
+########################################
+##
-+## Allow domain to read/write inherited users
-+## fifo files.
++## Do not audit attempts to write users
++## temporary files.
+##
+##
+##
-+## Domain allowed access.
++## Domain to not audit.
+##
+##
+#
-+interface(`userdom_rw_inherited_user_pipes',`
++interface(`userdom_dontaudit_write_user_tmp_files',`
+ gen_require(`
-+ attribute userdomain;
++ type user_tmp_t;
+ ')
+
-+ allow $1 userdomain:fifo_file rw_inherited_fifo_file_perms;
++ dontaudit $1 user_tmp_t:file write;
+')
+
+########################################
+##
-+## Do not audit attempts to use user ttys.
++## Do not audit attempts to delete users
++## temporary files.
+##
+##
+##
@@ -42591,37 +46258,37 @@ index 3c5dba7..2890de8 100644
+##
+##
+#
-+interface(`userdom_dontaudit_use_user_ttys',`
++interface(`userdom_dontaudit_delete_user_tmp_files',`
+ gen_require(`
-+ type user_tty_device_t;
++ type user_tmp_t;
+ ')
+
-+ dontaudit $1 user_tty_device_t:chr_file rw_inherited_file_perms;
++ dontaudit $1 user_tmp_t:file delete_file_perms;
+')
+
+########################################
+##
-+## Read the process state of all user domains.
++## Do not audit attempts to read/write users
++## temporary fifo files.
+##
+##
+##
-+## Domain allowed access.
++## Domain to not audit.
+##
+##
+#
-+interface(`userdom_read_all_users_state',`
++interface(`userdom_dontaudit_rw_user_tmp_pipes',`
+ gen_require(`
-+ attribute userdomain;
++ type user_tmp_t;
+ ')
+
-+ read_files_pattern($1, userdomain, userdomain)
-+ read_lnk_files_pattern($1,userdomain,userdomain)
-+ kernel_search_proc($1)
++ dontaudit $1 user_tmp_t:fifo_file rw_inherited_fifo_file_perms;
+')
+
+########################################
+##
-+## Get the attributes of all user domains.
++## Allow domain to read/write inherited users
++## fifo files.
+##
+##
+##
@@ -42629,13 +46296,33 @@ index 3c5dba7..2890de8 100644
+##
+##
+#
-+interface(`userdom_getattr_all_users',`
++interface(`userdom_rw_inherited_user_pipes',`
+ gen_require(`
+ attribute userdomain;
++ ')
++
++ allow $1 userdomain:fifo_file rw_inherited_fifo_file_perms;
+ ')
+
+ ########################################
+@@ -3290,7 +4139,7 @@ interface(`userdom_dontaudit_use_user_ttys',`
+ type user_tty_device_t;
')
- allow $1 userdomain:process getattr;
-@@ -3385,6 +4211,42 @@ interface(`userdom_signal_all_users',`
+- dontaudit $1 user_tty_device_t:chr_file rw_file_perms;
++ dontaudit $1 user_tty_device_t:chr_file rw_inherited_file_perms;
+ ')
+
+ ########################################
+@@ -3309,6 +4158,7 @@ interface(`userdom_read_all_users_state',`
+ ')
+
+ read_files_pattern($1, userdomain, userdomain)
++ read_lnk_files_pattern($1,userdomain,userdomain)
+ kernel_search_proc($1)
+ ')
+
+@@ -3385,6 +4235,42 @@ interface(`userdom_signal_all_users',`
allow $1 userdomain:process signal;
')
@@ -42678,7 +46365,7 @@ index 3c5dba7..2890de8 100644
########################################
##
## Send a SIGCHLD signal to all user domains.
-@@ -3405,6 +4267,24 @@ interface(`userdom_sigchld_all_users',`
+@@ -3405,6 +4291,24 @@ interface(`userdom_sigchld_all_users',`
########################################
##
@@ -42703,7 +46390,32 @@ index 3c5dba7..2890de8 100644
## Create keys for all user domains.
##
##
-@@ -3438,4 +4318,1630 @@ interface(`userdom_dbus_send_all_users',`
+@@ -3423,6 +4327,24 @@ interface(`userdom_create_all_users_keys',`
+
+ ########################################
+ ##
++## Manage keys for all user domains.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`userdom_manage_all_users_keys',`
++ gen_require(`
++ attribute userdomain;
++ ')
++
++ allow $1 userdomain:key manage_key_perms;
++')
++
++########################################
++##
+ ## Send a dbus message to all user domains.
+ ##
+ ##
+@@ -3438,4 +4360,1661 @@ interface(`userdom_dbus_send_all_users',`
')
allow $1 userdomain:dbus send_msg;
@@ -42832,6 +46544,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ dontaudit $1 admin_home_t:lnk_file read_lnk_file_perms;
+ dontaudit $1 admin_home_t:dir search_dir_perms;
+')
+
@@ -42850,6 +46563,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ dontaudit $1 admin_home_t:lnk_file read_lnk_file_perms;
+ dontaudit $1 admin_home_t:dir list_dir_perms;
+')
+
@@ -42868,6 +46582,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ allow $1 admin_home_t:lnk_file read_lnk_file_perms;
+ allow $1 admin_home_t:dir list_dir_perms;
+')
+
@@ -42886,8 +46601,9 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ allow $1 admin_home_t:lnk_file read_lnk_file_perms;
+ allow $1 admin_home_t:dir search_dir_perms;
-+')
+ ')
+
+########################################
+##
@@ -42905,7 +46621,7 @@ index 3c5dba7..2890de8 100644
+ ')
+
+ allow $1 unpriv_userdomain:sem rw_sem_perms;
- ')
++')
+
+########################################
+##
@@ -42980,6 +46696,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ allow $1 admin_home_t:lnk_file read_lnk_file_perms;
+ read_files_pattern($1, admin_home_t, admin_home_t)
+')
+
@@ -42999,6 +46716,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ allow $1 admin_home_t:lnk_file read_lnk_file_perms;
+ allow $1 admin_home_t:file delete_file_perms;
+')
+
@@ -43018,6 +46736,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ allow $1 admin_home_t:lnk_file read_lnk_file_perms;
+ exec_files_pattern($1, admin_home_t, admin_home_t)
+')
+
@@ -43166,6 +46885,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ allow $1 admin_home_t:lnk_file read_lnk_file_perms;
+ filetrans_pattern($1, admin_home_t, $2, $3, $4)
+')
+
@@ -43207,25 +46927,6 @@ index 3c5dba7..2890de8 100644
+
+########################################
+##
-+## Manage keys for all user domains.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
-+interface(`userdom_manage_all_users_keys',`
-+ gen_require(`
-+ attribute userdomain;
-+ ')
-+
-+ allow $1 userdomain:key manage_key_perms;
-+')
-+
-+
-+########################################
-+##
+## Do not audit attempts to read and write
+## unserdomain stream.
+##
@@ -43417,6 +47118,31 @@ index 3c5dba7..2890de8 100644
+ read_lnk_files_pattern($1, audio_home_t, audio_home_t)
+')
+
++######################################
++##
++## Manage texlive content in the users homedir.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`userdom_manage_home_texlive',`
++ gen_require(`
++ type texlive_home_t;
++ ')
++
++ userdom_search_user_home_dirs($1)
++ userdom_user_home_dir_filetrans($1, texlive_home_t, dir, ".texlive2012")
++ userdom_user_home_dir_filetrans($1, texlive_home_t, dir, ".texlive2013")
++ userdom_user_home_dir_filetrans($1, texlive_home_t, dir, ".texlive2014")
++ manage_dirs_pattern($1, texlive_home_t, texlive_home_t)
++ manage_files_pattern($1, texlive_home_t, texlive_home_t)
++ manage_lnk_files_pattern($1, texlive_home_t, texlive_home_t)
++')
++
+########################################
+##
+## Do not audit attempts to write all user home content files.
@@ -43661,6 +47387,7 @@ index 3c5dba7..2890de8 100644
+ type admin_home_t;
+ ')
+
++ dontaudit $1 admin_home_t:lnk_file read_lnk_file_perms;
+ dontaudit $1 admin_home_t:file read_file_perms;
+')
+
@@ -44236,6 +47963,22 @@ index 3c5dba7..2890de8 100644
+ ubac_constrained($1_t)
+
+ auth_use_nsswitch($1_t)
++
++ ifelse(`$1',`unconfined',`',`
++ gen_tunable($1_exec_content, true)
++
++ tunable_policy(`$1_exec_content',`
++ userdom_exec_user_tmp_files($1_t)
++ userdom_exec_user_home_content_files($1_t)
++ ')
++ tunable_policy(`$1_exec_content && use_nfs_home_dirs',`
++ fs_exec_nfs_files($1_t)
++ ')
++
++ tunable_policy(`$1_exec_content && use_samba_home_dirs',`
++ fs_exec_cifs_files($1_t)
++ ')
++ ')
+')
+
+########################################
@@ -44335,7 +48078,7 @@ index 3c5dba7..2890de8 100644
+')
+
diff --git a/policy/modules/system/userdomain.te b/policy/modules/system/userdomain.te
-index e2b538b..e0c6eeb 100644
+index e2b538b..0730c10 100644
--- a/policy/modules/system/userdomain.te
+++ b/policy/modules/system/userdomain.te
@@ -7,48 +7,43 @@ policy_module(userdomain, 4.8.5)
@@ -44424,7 +48167,7 @@ index e2b538b..e0c6eeb 100644
type user_home_dir_t alias { staff_home_dir_t sysadm_home_dir_t secadm_home_dir_t auditadm_home_dir_t unconfined_home_dir_t };
fs_associate_tmpfs(user_home_dir_t)
files_type(user_home_dir_t)
-@@ -70,26 +83,359 @@ ubac_constrained(user_home_dir_t)
+@@ -70,26 +83,382 @@ ubac_constrained(user_home_dir_t)
type user_home_t alias { staff_home_t sysadm_home_t secadm_home_t auditadm_home_t unconfined_home_t };
typealias user_home_t alias { staff_untrusted_content_t sysadm_untrusted_content_t secadm_untrusted_content_t auditadm_untrusted_content_t unconfined_untrusted_content_t };
@@ -44465,6 +48208,10 @@ index e2b538b..e0c6eeb 100644
+userdom_user_home_content(audio_home_t)
+ubac_constrained(audio_home_t)
+
++type texlive_home_t;
++userdom_user_home_content(texlive_home_t)
++ubac_constrained(texlive_home_t)
++
+type home_bin_t;
+userdom_user_home_content(home_bin_t)
+ubac_constrained(home_bin_t)
@@ -44480,12 +48227,15 @@ index e2b538b..e0c6eeb 100644
+
+allow userdomain userdomain:process signull;
+allow userdomain userdomain:fifo_file rw_inherited_fifo_file_perms;
++dontaudit unpriv_userdomain self:rawip_socket create_socket_perms;
+
+# Nautilus causes this avc
+domain_dontaudit_access_check(unpriv_userdomain)
+dontaudit unpriv_userdomain self:dir setattr;
+allow unpriv_userdomain self:key manage_key_perms;
+
++mount_dontaudit_write_mount_pid(unpriv_userdomain)
++
+optional_policy(`
+ alsa_read_rw_config(unpriv_userdomain)
+ alsa_manage_home_files(unpriv_userdomain)
@@ -44578,6 +48328,9 @@ index e2b538b..e0c6eeb 100644
+userdom_user_home_dir_filetrans(userdom_filetrans_type, home_cert_t, dir, ".cert")
+userdom_user_home_dir_filetrans(userdom_filetrans_type, home_cert_t, dir, ".pki")
+userdom_user_home_dir_filetrans(userdom_filetrans_type, home_cert_t, dir, "certificates")
++userdom_user_home_dir_filetrans(userdom_filetrans_type, texlive_home_t, dir, ".texlive2012")
++userdom_user_home_dir_filetrans(userdom_filetrans_type, texlive_home_t, dir, ".texlive2013")
++userdom_user_home_dir_filetrans(userdom_filetrans_type, texlive_home_t, dir, ".texlive2014")
+
+optional_policy(`
+ gnome_config_filetrans(userdom_filetrans_type, home_cert_t, dir, "certificates")
@@ -44660,8 +48413,21 @@ index e2b538b..e0c6eeb 100644
+#
+gen_require(`
+ class context contains;
++ class passwd { passwd chfn chsh rootok };
+')
+
++allow confined_admindomain self:capability ~{ sys_module audit_control audit_write };
++allow confined_admindomain self:capability2 { block_suspend syslog };
++allow confined_admindomain self:process { setexec setfscreate };
++allow confined_admindomain self:netlink_audit_socket nlmsg_readpriv;
++allow confined_admindomain self:tun_socket create_socket_perms;
++allow confined_admindomain self:packet_socket create_socket_perms;
++
++# Set password information for other users.
++allow confined_admindomain self:passwd { passwd chfn chsh };
++# Skip authentication when pam_rootok is specified.
++allow confined_admindomain self:passwd rootok;
++
+corecmd_shell_entry_type(confined_admindomain)
+corecmd_bin_entry_type(confined_admindomain)
+
@@ -44818,7 +48584,7 @@ index e79d545..101086d 100644
')
diff --git a/policy/support/obj_perm_sets.spt b/policy/support/obj_perm_sets.spt
-index 6e91317..64e135a 100644
+index 6e91317..018d0a6 100644
--- a/policy/support/obj_perm_sets.spt
+++ b/policy/support/obj_perm_sets.spt
@@ -28,8 +28,7 @@ define(`devfile_class_set', `{ chr_file blk_file }')
@@ -44928,7 +48694,7 @@ index 6e91317..64e135a 100644
+#
+# Service
+#
-+define(`manage_service_perms', `{ start stop status reload } ')
++define(`manage_service_perms', `{ start stop status reload enable disable } ')
diff --git a/policy/users b/policy/users
index c4ebc7e..30d6d7a 100644
--- a/policy/users
diff --git a/SOURCES/policy-f20-contrib.patch b/SOURCES/policy-f20-contrib.patch
index f874adf..19dd80d 100644
--- a/SOURCES/policy-f20-contrib.patch
+++ b/SOURCES/policy-f20-contrib.patch
@@ -1,8 +1,8 @@
diff --git a/abrt.fc b/abrt.fc
-index e4f84de..2ed712d 100644
+index e4f84de..6098f52 100644
--- a/abrt.fc
+++ b/abrt.fc
-@@ -1,30 +1,42 @@
+@@ -1,30 +1,46 @@
-/etc/abrt(/.*)? gen_context(system_u:object_r:abrt_etc_t,s0)
-/etc/rc\.d/init\.d/abrt -- gen_context(system_u:object_r:abrt_initrc_exec_t,s0)
+/etc/abrt(/.*)? gen_context(system_u:object_r:abrt_etc_t,s0)
@@ -40,25 +40,29 @@ index e4f84de..2ed712d 100644
+/var/run/abrtd?\.lock -- gen_context(system_u:object_r:abrt_var_run_t,s0)
+/var/run/abrtd?\.socket -- gen_context(system_u:object_r:abrt_var_run_t,s0)
+/var/run/abrt(/.*)? gen_context(system_u:object_r:abrt_var_run_t,s0)
++
++/var/spool/abrt(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
++/var/spool/debug(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
++/var/spool/rhsm/debug(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
++/var/tmp/abrt(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
-/var/cache/abrt(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
-/var/cache/abrt-di(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
-/var/cache/abrt-retrace(/.*)? gen_context(system_u:object_r:abrt_retrace_cache_t,s0)
-/var/cache/retrace-server(/.*)? gen_context(system_u:object_r:abrt_retrace_cache_t,s0)
-+/var/spool/abrt(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
-+/var/tmp/abrt(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
-
--/var/log/abrt-logger.* -- gen_context(system_u:object_r:abrt_var_log_t,s0)
+# ABRT retrace server
+/usr/bin/abrt-retrace-worker -- gen_context(system_u:object_r:abrt_retrace_worker_exec_t,s0)
+/usr/bin/coredump2packages -- gen_context(system_u:object_r:abrt_retrace_coredump_exec_t,s0)
+-/var/log/abrt-logger.* -- gen_context(system_u:object_r:abrt_var_log_t,s0)
++/var/cache/abrt-retrace(/.*)? gen_context(system_u:object_r:abrt_retrace_cache_t,s0)
++/var/spool/abrt-retrace(/.*)? gen_context(system_u:object_r:abrt_retrace_spool_t,s0)
++/var/spool/faf(/.*)? gen_context(system_u:object_r:abrt_retrace_spool_t,s0)
+
-/var/run/abrt\.pid -- gen_context(system_u:object_r:abrt_var_run_t,s0)
-/var/run/abrtd?\.lock -- gen_context(system_u:object_r:abrt_var_run_t,s0)
-/var/run/abrtd?\.socket -s gen_context(system_u:object_r:abrt_var_run_t,s0)
-/var/run/abrt(/.*)? gen_context(system_u:object_r:abrt_var_run_t,s0)
-+/var/cache/abrt-retrace(/.*)? gen_context(system_u:object_r:abrt_retrace_cache_t,s0)
-+/var/spool/abrt-retrace(/.*)? gen_context(system_u:object_r:abrt_retrace_spool_t,s0)
-/var/spool/abrt(/.*)? gen_context(system_u:object_r:abrt_var_cache_t,s0)
-/var/spool/abrt-retrace(/.*)? gen_context(system_u:object_r:abrt_retrace_spool_t,s0)
@@ -68,7 +72,7 @@ index e4f84de..2ed712d 100644
+/var/cache/retrace-server(/.*)? gen_context(system_u:object_r:abrt_retrace_cache_t,s0)
+/var/spool/retrace-server(/.*)? gen_context(system_u:object_r:abrt_retrace_spool_t,s0)
diff --git a/abrt.if b/abrt.if
-index 058d908..702b716 100644
+index 058d908..cf17e67 100644
--- a/abrt.if
+++ b/abrt.if
@@ -1,4 +1,26 @@
@@ -99,16 +103,34 @@ index 058d908..702b716 100644
######################################
##
-@@ -40,7 +62,7 @@ interface(`abrt_exec',`
+@@ -40,7 +62,25 @@ interface(`abrt_exec',`
########################################
##
-## Send null signals to abrt.
++## Send a signal to abrt.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`abrt_signal',`
++ gen_require(`
++ type abrt_t;
++ ')
++
++ allow $1 abrt_t:process signal;
++')
++
++########################################
++##
+## Send a null signal to abrt.
##
##
##
-@@ -58,7 +80,7 @@ interface(`abrt_signull',`
+@@ -58,7 +98,7 @@ interface(`abrt_signull',`
########################################
##
@@ -117,7 +139,7 @@ index 058d908..702b716 100644
##
##
##
-@@ -71,12 +93,13 @@ interface(`abrt_read_state',`
+@@ -71,12 +111,13 @@ interface(`abrt_read_state',`
type abrt_t;
')
@@ -132,7 +154,7 @@ index 058d908..702b716 100644
##
##
##
-@@ -116,8 +139,7 @@ interface(`abrt_dbus_chat',`
+@@ -116,8 +157,7 @@ interface(`abrt_dbus_chat',`
#####################################
##
@@ -142,7 +164,7 @@ index 058d908..702b716 100644
##
##
##
-@@ -130,15 +152,13 @@ interface(`abrt_domtrans_helper',`
+@@ -130,15 +170,13 @@ interface(`abrt_domtrans_helper',`
type abrt_helper_t, abrt_helper_exec_t;
')
@@ -160,7 +182,7 @@ index 058d908..702b716 100644
##
##
##
-@@ -154,17 +174,35 @@ interface(`abrt_domtrans_helper',`
+@@ -154,17 +192,54 @@ interface(`abrt_domtrans_helper',`
#
interface(`abrt_run_helper',`
gen_require(`
@@ -190,60 +212,60 @@ index 058d908..702b716 100644
+
+ read_files_pattern($1, abrt_var_cache_t, abrt_var_cache_t)
+ read_lnk_files_pattern($1, abrt_var_cache_t, abrt_var_cache_t)
++')
++
++########################################
++##
++## Append abrt cache
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`abrt_append_cache',`
++ gen_require(`
++ type abrt_var_cache_t;
++ ')
++
++
++ allow $1 abrt_var_cache_t:file append_inherited_file_perms;
')
########################################
##
-## Create, read, write, and delete
-## abrt cache files.
-+## Append abrt cache
++## Read/Write inherited abrt cache
##
##
##
-@@ -172,15 +210,37 @@ interface(`abrt_run_helper',`
+@@ -172,15 +247,18 @@ interface(`abrt_run_helper',`
##
##
#
-interface(`abrt_cache_manage',`
- refpolicywarn(`$0($*) has been deprecated, use abrt_manage_cache() instead.')
- abrt_manage_cache($1)
-+interface(`abrt_append_cache',`
++interface(`abrt_rw_inherited_cache',`
+ gen_require(`
+ type abrt_var_cache_t;
+ ')
+
+
-+ allow $1 abrt_var_cache_t:file append_inherited_file_perms;
++ allow $1 abrt_var_cache_t:file rw_inherited_file_perms;
')
########################################
##
-## Create, read, write, and delete
-## abrt cache content.
-+## Read/Write inherited abrt cache
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
-+interface(`abrt_rw_inherited_cache',`
-+ gen_require(`
-+ type abrt_var_cache_t;
-+ ')
-+
-+
-+ allow $1 abrt_var_cache_t:file rw_inherited_file_perms;
-+')
-+
-+########################################
-+##
+## Manage abrt cache
##
##
##
-@@ -193,7 +253,6 @@ interface(`abrt_manage_cache',`
+@@ -193,7 +271,6 @@ interface(`abrt_manage_cache',`
type abrt_var_cache_t;
')
@@ -251,7 +273,7 @@ index 058d908..702b716 100644
manage_files_pattern($1, abrt_var_cache_t, abrt_var_cache_t)
manage_lnk_files_pattern($1, abrt_var_cache_t, abrt_var_cache_t)
manage_dirs_pattern($1, abrt_var_cache_t, abrt_var_cache_t)
-@@ -201,7 +260,7 @@ interface(`abrt_manage_cache',`
+@@ -201,7 +278,7 @@ interface(`abrt_manage_cache',`
####################################
##
@@ -260,8 +282,30 @@ index 058d908..702b716 100644
##
##
##
-@@ -220,7 +279,7 @@ interface(`abrt_read_config',`
+@@ -218,9 +295,29 @@ interface(`abrt_read_config',`
+ read_files_pattern($1, abrt_etc_t, abrt_etc_t)
+ ')
++####################################
++##
++## Dontaudit read abrt configuration file.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`abrt_dontaudit_read_config',`
++ gen_require(`
++ type abrt_etc_t;
++ ')
++
++ files_search_etc($1)
++ dontaudit $1 abrt_etc_t:dir list_dir_perms;
++ dontaudit $1 abrt_etc_t:file read_file_perms;
++')
++
######################################
##
-## Read abrt log files.
@@ -269,7 +313,7 @@ index 058d908..702b716 100644
##
##
##
-@@ -258,8 +317,7 @@ interface(`abrt_read_pid_files',`
+@@ -258,8 +355,7 @@ interface(`abrt_read_pid_files',`
######################################
##
@@ -279,7 +323,7 @@ index 058d908..702b716 100644
##
##
##
-@@ -276,10 +334,51 @@ interface(`abrt_manage_pid_files',`
+@@ -276,10 +372,51 @@ interface(`abrt_manage_pid_files',`
manage_files_pattern($1, abrt_var_run_t, abrt_var_run_t)
')
@@ -333,7 +377,7 @@ index 058d908..702b716 100644
##
##
##
-@@ -288,39 +387,172 @@ interface(`abrt_manage_pid_files',`
+@@ -288,39 +425,174 @@ interface(`abrt_manage_pid_files',`
##
##
##
@@ -433,6 +477,7 @@ index 058d908..702b716 100644
+ manage_dirs_pattern($1, abrt_retrace_spool_t, abrt_retrace_spool_t)
+ manage_files_pattern($1, abrt_retrace_spool_t, abrt_retrace_spool_t)
+ manage_lnk_files_pattern($1, abrt_retrace_spool_t, abrt_retrace_spool_t)
++ manage_sock_files_pattern($1, abrt_retrace_spool_t, abrt_retrace_spool_t)
+')
+
+#####################################
@@ -453,7 +498,7 @@ index 058d908..702b716 100644
+ list_dirs_pattern($1, abrt_retrace_spool_t, abrt_retrace_spool_t)
+ read_files_pattern($1, abrt_retrace_spool_t, abrt_retrace_spool_t)
+ read_lnk_files_pattern($1, abrt_retrace_spool_t, abrt_retrace_spool_t)
-+')
+ ')
+
+
+#####################################
@@ -474,7 +519,7 @@ index 058d908..702b716 100644
+ list_dirs_pattern($1, abrt_retrace_cache_t, abrt_retrace_cache_t)
+ read_files_pattern($1, abrt_retrace_cache_t, abrt_retrace_cache_t)
+ read_lnk_files_pattern($1, abrt_retrace_cache_t, abrt_retrace_cache_t)
- ')
++')
+
+########################################
+##
@@ -516,11 +561,12 @@ index 058d908..702b716 100644
+ files_etc_filetrans($1, abrt_etc_t, dir, "abrt")
+ files_var_filetrans($1, abrt_var_cache_t, dir, "abrt")
+ files_var_filetrans($1, abrt_var_cache_t, dir, "abrt-dix")
++ files_var_filetrans($1, abrt_var_cache_t, dir, "debug")
+ files_pid_filetrans($1, abrt_var_run_t, dir, "abrt")
+')
+
diff --git a/abrt.te b/abrt.te
-index cc43d25..1ec0046 100644
+index cc43d25..23aea8e 100644
--- a/abrt.te
+++ b/abrt.te
@@ -1,4 +1,4 @@
@@ -686,7 +732,7 @@ index cc43d25..1ec0046 100644
-allow abrt_t self:capability { chown dac_override fowner fsetid kill setgid setuid sys_nice };
-dontaudit abrt_t self:capability sys_rawio;
+allow abrt_t self:capability { chown dac_override fowner fsetid ipc_lock kill setgid setuid sys_nice sys_ptrace };
-+dontaudit abrt_t self:capability { sys_rawio sys_ptrace };
++dontaudit abrt_t self:capability { net_admin sys_rawio sys_ptrace };
allow abrt_t self:process { setpgid sigkill signal signull setsched getsched };
+
allow abrt_t self:fifo_file rw_fifo_file_perms;
@@ -756,7 +802,7 @@ index cc43d25..1ec0046 100644
dev_getattr_all_chr_files(abrt_t)
dev_getattr_all_blk_files(abrt_t)
-@@ -163,29 +193,37 @@ files_getattr_all_files(abrt_t)
+@@ -163,29 +193,40 @@ files_getattr_all_files(abrt_t)
files_read_config_files(abrt_t)
files_read_etc_runtime_files(abrt_t)
files_read_var_symlinks(abrt_t)
@@ -783,6 +829,8 @@ index cc43d25..1ec0046 100644
+logging_read_generic_logs(abrt_t)
+logging_send_syslog_msg(abrt_t)
++logging_stream_connect_syslog(abrt_t)
++logging_read_syslog_pid(abrt_t)
+
auth_use_nsswitch(abrt_t)
@@ -791,13 +839,14 @@ index cc43d25..1ec0046 100644
+miscfiles_read_generic_certs(abrt_t)
miscfiles_read_public_files(abrt_t)
++miscfiles_dontaudit_access_check_cert(abrt_t)
userdom_dontaudit_read_user_home_content_files(abrt_t)
+userdom_dontaudit_read_admin_home_files(abrt_t)
tunable_policy(`abrt_anon_write',`
miscfiles_manage_public_files(abrt_t)
-@@ -193,15 +231,11 @@ tunable_policy(`abrt_anon_write',`
+@@ -193,15 +234,11 @@ tunable_policy(`abrt_anon_write',`
optional_policy(`
apache_list_modules(abrt_t)
@@ -814,7 +863,7 @@ index cc43d25..1ec0046 100644
')
optional_policy(`
-@@ -209,6 +243,20 @@ optional_policy(`
+@@ -209,6 +246,20 @@ optional_policy(`
')
optional_policy(`
@@ -835,15 +884,19 @@ index cc43d25..1ec0046 100644
policykit_domtrans_auth(abrt_t)
policykit_read_lib(abrt_t)
policykit_read_reload(abrt_t)
-@@ -220,6 +268,7 @@ optional_policy(`
- corecmd_exec_all_executables(abrt_t)
+@@ -221,6 +272,11 @@ optional_policy(`
')
-+# to install debuginfo packages
optional_policy(`
++ puppet_read_lib(abrt_t)
++')
++
++# to install debuginfo packages
++optional_policy(`
rpm_exec(abrt_t)
rpm_dontaudit_manage_db(abrt_t)
-@@ -230,6 +279,7 @@ optional_policy(`
+ rpm_manage_cache(abrt_t)
+@@ -230,6 +286,7 @@ optional_policy(`
rpm_signull(abrt_t)
')
@@ -851,7 +904,7 @@ index cc43d25..1ec0046 100644
optional_policy(`
sendmail_domtrans(abrt_t)
')
-@@ -240,9 +290,17 @@ optional_policy(`
+@@ -240,9 +297,17 @@ optional_policy(`
sosreport_delete_tmp_files(abrt_t)
')
@@ -870,7 +923,7 @@ index cc43d25..1ec0046 100644
#
allow abrt_handle_event_t self:fifo_file rw_fifo_file_perms;
-@@ -253,9 +311,13 @@ tunable_policy(`abrt_handle_event',`
+@@ -253,9 +318,13 @@ tunable_policy(`abrt_handle_event',`
can_exec(abrt_t, abrt_handle_event_exec_t)
')
@@ -885,7 +938,7 @@ index cc43d25..1ec0046 100644
#
allow abrt_helper_t self:capability { chown setgid sys_nice };
-@@ -268,6 +330,7 @@ manage_dirs_pattern(abrt_helper_t, abrt_var_cache_t, abrt_var_cache_t)
+@@ -268,6 +337,7 @@ manage_dirs_pattern(abrt_helper_t, abrt_var_cache_t, abrt_var_cache_t)
manage_files_pattern(abrt_helper_t, abrt_var_cache_t, abrt_var_cache_t)
manage_lnk_files_pattern(abrt_helper_t, abrt_var_cache_t, abrt_var_cache_t)
files_var_filetrans(abrt_helper_t, abrt_var_cache_t, { file dir })
@@ -893,7 +946,7 @@ index cc43d25..1ec0046 100644
read_files_pattern(abrt_helper_t, abrt_var_run_t, abrt_var_run_t)
read_lnk_files_pattern(abrt_helper_t, abrt_var_run_t, abrt_var_run_t)
-@@ -276,15 +339,20 @@ corecmd_read_all_executables(abrt_helper_t)
+@@ -276,15 +346,20 @@ corecmd_read_all_executables(abrt_helper_t)
domain_read_all_domains_state(abrt_helper_t)
@@ -914,7 +967,7 @@ index cc43d25..1ec0046 100644
userdom_dontaudit_read_user_home_content_files(abrt_helper_t)
userdom_dontaudit_read_user_tmp_files(abrt_helper_t)
dev_dontaudit_read_all_blk_files(abrt_helper_t)
-@@ -292,11 +360,25 @@ ifdef(`hide_broken_symptoms',`
+@@ -292,11 +367,25 @@ ifdef(`hide_broken_symptoms',`
dev_dontaudit_write_all_chr_files(abrt_helper_t)
dev_dontaudit_write_all_blk_files(abrt_helper_t)
fs_dontaudit_rw_anon_inodefs_files(abrt_helper_t)
@@ -941,7 +994,7 @@ index cc43d25..1ec0046 100644
#
allow abrt_retrace_coredump_t self:fifo_file rw_fifo_file_perms;
-@@ -314,10 +396,12 @@ corecmd_exec_shell(abrt_retrace_coredump_t)
+@@ -314,10 +403,12 @@ corecmd_exec_shell(abrt_retrace_coredump_t)
dev_read_urand(abrt_retrace_coredump_t)
@@ -955,7 +1008,7 @@ index cc43d25..1ec0046 100644
optional_policy(`
rpm_exec(abrt_retrace_coredump_t)
rpm_dontaudit_manage_db(abrt_retrace_coredump_t)
-@@ -330,10 +414,11 @@ optional_policy(`
+@@ -330,10 +421,11 @@ optional_policy(`
#######################################
#
@@ -969,7 +1022,7 @@ index cc43d25..1ec0046 100644
allow abrt_retrace_worker_t self:fifo_file rw_fifo_file_perms;
domtrans_pattern(abrt_retrace_worker_t, abrt_retrace_coredump_exec_t, abrt_retrace_coredump_t)
-@@ -352,46 +437,56 @@ corecmd_exec_shell(abrt_retrace_worker_t)
+@@ -352,46 +444,56 @@ corecmd_exec_shell(abrt_retrace_worker_t)
dev_read_urand(abrt_retrace_worker_t)
@@ -1031,7 +1084,7 @@ index cc43d25..1ec0046 100644
read_files_pattern(abrt_watch_log_t, abrt_etc_t, abrt_etc_t)
-@@ -400,16 +495,50 @@ domtrans_pattern(abrt_watch_log_t, abrt_dump_oops_exec_t, abrt_dump_oops_t)
+@@ -400,16 +502,50 @@ domtrans_pattern(abrt_watch_log_t, abrt_dump_oops_exec_t, abrt_dump_oops_t)
corecmd_exec_bin(abrt_watch_log_t)
logging_read_all_logs(abrt_watch_log_t)
@@ -1048,7 +1101,7 @@ index cc43d25..1ec0046 100644
#
-kernel_read_system_state(abrt_domain)
-+allow abrt_upload_watch_t self:capability dac_override;
++allow abrt_upload_watch_t self:capability { dac_override chown };
-files_read_etc_files(abrt_domain)
+manage_files_pattern(abrt_upload_watch_t, abrt_upload_watch_tmp_t, abrt_upload_watch_tmp_t)
@@ -1057,9 +1110,11 @@ index cc43d25..1ec0046 100644
+files_tmp_filetrans(abrt_upload_watch_t, abrt_upload_watch_tmp_t, {file dir})
+
+read_files_pattern(abrt_upload_watch_t, abrt_etc_t, abrt_etc_t)
-+
+
+-logging_send_syslog_msg(abrt_domain)
+manage_dirs_pattern(abrt_upload_watch_t, abrt_var_cache_t, abrt_var_cache_t)
-+
+
+-miscfiles_read_localization(abrt_domain)
+corecmd_exec_bin(abrt_upload_watch_t)
+
+dev_read_urand(abrt_upload_watch_t)
@@ -1067,8 +1122,7 @@ index cc43d25..1ec0046 100644
+files_search_spool(abrt_upload_watch_t)
+
+auth_read_passwd(abrt_upload_watch_t)
-
--logging_send_syslog_msg(abrt_domain)
++
+tunable_policy(`abrt_upload_watch_anon_write',`
+ miscfiles_manage_public_files(abrt_upload_watch_t)
+')
@@ -1081,8 +1135,7 @@ index cc43d25..1ec0046 100644
+#
+# Local policy for all abrt domain
+#
-
--miscfiles_read_localization(abrt_domain)
++
+allow abrt_domain abrt_var_run_t:sock_file write_sock_file_perms;
+allow abrt_domain abrt_var_run_t:unix_stream_socket connectto;
+
@@ -1564,6 +1617,16 @@ index 72c33c2..6e4206c 100644
optional_policy(`
modutils_domtrans_insmod(aiccu_t)
+diff --git a/aide.fc b/aide.fc
+index df6e4d0..4b99c25 100644
+--- a/aide.fc
++++ b/aide.fc
+@@ -3,4 +3,4 @@
+ /var/lib/aide(/.*) gen_context(system_u:object_r:aide_db_t,mls_systemhigh)
+
+ /var/log/aide(/.*)? gen_context(system_u:object_r:aide_log_t,mls_systemhigh)
+-/var/log/aide\.log -- gen_context(system_u:object_r:aide_log_t,mls_systemhigh)
++/var/log/aide\.log.* -- gen_context(system_u:object_r:aide_log_t,mls_systemhigh)
diff --git a/aide.if b/aide.if
index 01cbb67..94a4a24 100644
--- a/aide.if
@@ -1985,7 +2048,7 @@ index 708b743..cc78465 100644
+ ps_process_pattern($1, alsa_t)
')
diff --git a/alsa.te b/alsa.te
-index cda6d20..443ce3c 100644
+index cda6d20..a80ddb9 100644
--- a/alsa.te
+++ b/alsa.te
@@ -21,16 +21,23 @@ files_tmp_file(alsa_tmp_t)
@@ -2014,7 +2077,7 @@ index cda6d20..443ce3c 100644
allow alsa_t self:sem create_sem_perms;
allow alsa_t self:shm create_shm_perms;
allow alsa_t self:unix_stream_socket { accept listen };
-@@ -51,6 +58,11 @@ userdom_user_tmp_filetrans(alsa_t, alsa_tmp_t, { dir file })
+@@ -51,7 +58,13 @@ userdom_user_tmp_filetrans(alsa_t, alsa_tmp_t, { dir file })
manage_dirs_pattern(alsa_t, alsa_var_lib_t, alsa_var_lib_t)
manage_files_pattern(alsa_t, alsa_var_lib_t, alsa_var_lib_t)
@@ -2024,9 +2087,11 @@ index cda6d20..443ce3c 100644
+files_pid_filetrans(alsa_t, alsa_var_run_t, { file dir })
+
kernel_read_system_state(alsa_t)
++kernel_signal(alsa_t)
corecmd_exec_bin(alsa_t)
-@@ -59,7 +71,6 @@ dev_read_sound(alsa_t)
+
+@@ -59,7 +72,6 @@ dev_read_sound(alsa_t)
dev_read_sysfs(alsa_t)
dev_write_sound(alsa_t)
@@ -2034,7 +2099,7 @@ index cda6d20..443ce3c 100644
files_search_var_lib(alsa_t)
term_dontaudit_use_console(alsa_t)
-@@ -72,8 +83,6 @@ init_use_fds(alsa_t)
+@@ -72,8 +84,6 @@ init_use_fds(alsa_t)
logging_send_syslog_msg(alsa_t)
@@ -2064,7 +2129,7 @@ index 7f4dfbc..e5c9f45 100644
/usr/sbin/amrecover -- gen_context(system_u:object_r:amanda_recover_exec_t,s0)
diff --git a/amanda.te b/amanda.te
-index ed45974..ec7bb41 100644
+index ed45974..f367ba0 100644
--- a/amanda.te
+++ b/amanda.te
@@ -9,11 +9,14 @@ attribute_role amanda_recover_roles;
@@ -2102,7 +2167,7 @@ index ed45974..ec7bb41 100644
filetrans_pattern(amanda_t, amanda_config_t, amanda_data_t, { file dir })
allow amanda_t amanda_dumpdates_t:file rw_file_perms;
-@@ -100,13 +104,14 @@ kernel_dontaudit_read_proc_symlinks(amanda_t)
+@@ -100,13 +104,15 @@ kernel_dontaudit_read_proc_symlinks(amanda_t)
corecmd_exec_shell(amanda_t)
corecmd_exec_bin(amanda_t)
@@ -2114,11 +2179,12 @@ index ed45974..ec7bb41 100644
corenet_tcp_bind_generic_node(amanda_t)
+corenet_tcp_bind_amanda_port(amanda_t)
++corenet_udp_bind_amanda_port(amanda_t)
+
corenet_sendrecv_all_server_packets(amanda_t)
corenet_tcp_bind_all_rpc_ports(amanda_t)
corenet_tcp_bind_generic_port(amanda_t)
-@@ -114,6 +119,7 @@ corenet_dontaudit_tcp_bind_all_ports(amanda_t)
+@@ -114,6 +120,7 @@ corenet_dontaudit_tcp_bind_all_ports(amanda_t)
dev_getattr_all_blk_files(amanda_t)
dev_getattr_all_chr_files(amanda_t)
@@ -2126,7 +2192,7 @@ index ed45974..ec7bb41 100644
files_read_etc_runtime_files(amanda_t)
files_list_all(amanda_t)
-@@ -170,7 +176,6 @@ kernel_read_system_state(amanda_recover_t)
+@@ -170,7 +177,6 @@ kernel_read_system_state(amanda_recover_t)
corecmd_exec_shell(amanda_recover_t)
corecmd_exec_bin(amanda_recover_t)
@@ -2134,7 +2200,7 @@ index ed45974..ec7bb41 100644
corenet_all_recvfrom_netlabel(amanda_recover_t)
corenet_tcp_sendrecv_generic_if(amanda_recover_t)
corenet_udp_sendrecv_generic_if(amanda_recover_t)
-@@ -195,12 +200,16 @@ files_search_tmp(amanda_recover_t)
+@@ -195,12 +201,16 @@ files_search_tmp(amanda_recover_t)
auth_use_nsswitch(amanda_recover_t)
@@ -2327,8 +2393,79 @@ index c960f92..486e9ed 100644
optional_policy(`
nscd_dontaudit_search_pid(amtu_t)
+diff --git a/anaconda.fc b/anaconda.fc
+index b098089..258407b 100644
+--- a/anaconda.fc
++++ b/anaconda.fc
+@@ -1 +1,7 @@
+ # No file context specifications.
++
++/usr/libexec/anaconda/anaconda-yum -- gen_context(system_u:object_r:install_exec_t,s0)
++/usr/sbin/anaconda -- gen_context(system_u:object_r:install_exec_t,s0)
++
++/usr/bin/ostree -- gen_context(system_u:object_r:install_exec_t,s0)
++/usr/bin/rpm-ostree -- gen_context(system_u:object_r:install_exec_t,s0)
+diff --git a/anaconda.if b/anaconda.if
+index 14a61b7..21bbf36 100644
+--- a/anaconda.if
++++ b/anaconda.if
+@@ -1 +1,54 @@
+ ## Anaconda installer.
++
++########################################
++##
++## Execute a domain transition to run install.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`anaconda_domtrans_install',`
++ gen_require(`
++ type install_t, install_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, install_exec_t, install_t)
++')
++
++########################################
++##
++## Execute install in the install
++## domain, and allow the specified
++## role the install domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++##
++##
++## Role allowed access.
++##
++##
++#
++interface(`anaconda_run_install',`
++ gen_require(`
++ type install_t;
++ type install_exec_t;
++ attribute_role install_roles;
++ ')
++
++ anaconda_domtrans_install($1)
++ roleattribute $2 install_roles;
++ role_transition $2 install_exec_t system_r;
++
++ optional_policy(`
++ rpm_transition_script(install_t, $2)
++ ')
++')
++
diff --git a/anaconda.te b/anaconda.te
-index 6f1384c..9f23456 100644
+index 6f1384c..f226596 100644
--- a/anaconda.te
+++ b/anaconda.te
@@ -4,6 +4,10 @@ gen_require(`
@@ -2342,7 +2479,22 @@ index 6f1384c..9f23456 100644
########################################
#
# Declarations
-@@ -34,8 +38,9 @@ modutils_domtrans_insmod(anaconda_t)
+@@ -16,6 +20,14 @@ domain_entry_file(anaconda_t, anaconda_exec_t)
+ domain_obj_id_change_exemption(anaconda_t)
+ role system_r types anaconda_t;
+
++attribute_role install_roles;
++roleattribute system_r install_roles;
++
++type install_t;
++type install_exec_t;
++application_domain(install_t, install_exec_t)
++role install_roles types install_t;
++
+ ########################################
+ #
+ # Local policy
+@@ -34,8 +46,9 @@ modutils_domtrans_insmod(anaconda_t)
modutils_domtrans_depmod(anaconda_t)
seutil_domtrans_semanage(anaconda_t)
@@ -2353,9 +2505,44 @@ index 6f1384c..9f23456 100644
optional_policy(`
rpm_domtrans(anaconda_t)
+@@ -53,3 +66,34 @@ optional_policy(`
+ optional_policy(`
+ unconfined_domain_noaudit(anaconda_t)
+ ')
++
++########################################
++#
++# Local policy
++#
++
++allow install_t self:capability2 mac_admin;
++
++systemd_dbus_chat_localed(install_t)
++
++tunable_policy(`deny_ptrace',`',`
++ domain_ptrace_all_domains(install_t)
++')
++
++optional_policy(`
++ mount_run(install_t, install_roles)
++')
++
++optional_policy(`
++ networkmanager_dbus_chat(install_t)
++')
++
++optional_policy(`
++ seutil_run_setfiles_mac(install_t, install_roles)
++')
++
++optional_policy(`
++ unconfined_domain_noaudit(install_t)
++')
++
++
diff --git a/antivirus.fc b/antivirus.fc
new file mode 100644
-index 0000000..e44bff0
+index 0000000..9d5214b
--- /dev/null
+++ b/antivirus.fc
@@ -0,0 +1,43 @@
@@ -2380,10 +2567,10 @@ index 0000000..e44bff0
+
+/var/clamav(/.*)? gen_context(system_u:object_r:antivirus_db_t,s0)
+
-+
+/var/amavis(/.*)? gen_context(system_u:object_r:antivirus_db_t,s0)
+/var/lib/amavis(/.*)? gen_context(system_u:object_r:antivirus_db_t,s0)
+/var/lib/clamav(/.*)? gen_context(system_u:object_r:antivirus_db_t,s0)
++/var/lib/clamav-unofficial-sigs(/.*)? gen_context(system_u:object_r:antivirus_db_t,s0)
+/var/lib/clamd.* gen_context(system_u:object_r:antivirus_db_t,s0)
+/var/opt/f-secure(/.*)? gen_context(system_u:object_r:antivirus_db_t,s0)
+/var/spool/amavisd(/.*)? gen_context(system_u:object_r:antivirus_db_t,s0)
@@ -3011,10 +3198,10 @@ index 0000000..8ba9c95
+ spamassassin_read_pid_files(antivirus_domain)
+')
diff --git a/apache.fc b/apache.fc
-index 550a69e..66ba451 100644
+index 550a69e..43bb1c9 100644
--- a/apache.fc
+++ b/apache.fc
-@@ -1,161 +1,200 @@
+@@ -1,161 +1,212 @@
-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)
@@ -3041,6 +3228,7 @@ index 550a69e..66ba451 100644
+/etc/apache-ssl(2)?(/.*)? gen_context(system_u:object_r:httpd_config_t,s0)
+/etc/cherokee(/.*)? gen_context(system_u:object_r:httpd_config_t,s0)
+/etc/drupal.* gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
++/etc/glpi(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
+/etc/owncloud(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
+/etc/horde(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
+/etc/htdig(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)
@@ -3058,6 +3246,7 @@ index 550a69e..66ba451 100644
-/etc/vhosts -- gen_context(system_u:object_r:httpd_config_t,s0)
-/etc/WebCalendar(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
-/etc/zabbix/web(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
++/etc/thttpd\.conf -- gen_context(system_u:object_r:httpd_config_t,s0)
+/etc/vhosts -- gen_context(system_u:object_r:httpd_config_t,s0)
+/etc/WebCalendar(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
+/etc/zabbix/web(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
@@ -3098,6 +3287,7 @@ index 550a69e..66ba451 100644
-/usr/lib/httpd(/.*)? gen_context(system_u:object_r:httpd_modules_t,s0)
-/usr/lib/lighttpd(/.*)? gen_context(system_u:object_r:httpd_modules_t,s0)
+/usr/share/jetty/bin/jetty.sh -- gen_context(system_u:object_r:httpd_exec_t,s0)
++/usr/share/joomla(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
-/usr/libexec/httpd-ssl-pass-dialog -- gen_context(system_u:object_r:httpd_passwd_exec_t,s0)
+/usr/lib/apache-ssl/.+ -- gen_context(system_u:object_r:httpd_exec_t,s0)
@@ -3124,11 +3314,13 @@ index 550a69e..66ba451 100644
-
-ifdef(`distro_suse',`
-/usr/sbin/httpd2-.* -- gen_context(system_u:object_r:httpd_exec_t,s0)
++/usr/sbin/htcacheclean -- gen_context(system_u:object_r:httpd_exec_t,s0)
+/usr/sbin/lighttpd -- gen_context(system_u:object_r:httpd_exec_t,s0)
+/usr/sbin/nginx -- gen_context(system_u:object_r:httpd_exec_t,s0)
+/usr/sbin/php-fpm -- gen_context(system_u:object_r:httpd_exec_t,s0)
+/usr/sbin/rotatelogs -- gen_context(system_u:object_r:httpd_rotatelogs_exec_t,s0)
+/usr/sbin/suexec -- gen_context(system_u:object_r:httpd_suexec_exec_t,s0)
++/usr/sbin/thttpd -- gen_context(system_u:object_r:httpd_exec_t,s0)
+
+ifdef(`distro_suse', `
+/usr/sbin/httpd2-.* -- gen_context(system_u:object_r:httpd_exec_t,s0)
@@ -3167,6 +3359,7 @@ index 550a69e..66ba451 100644
+/usr/share/drupal.* gen_context(system_u:object_r:httpd_sys_content_t,s0)
+/usr/share/doc/ghc/html(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)
+
++/usr/share/glpi(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)
+/usr/share/htdig(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)
+/usr/share/icecast(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)
+/usr/share/ntop/html(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)
@@ -3213,6 +3406,7 @@ index 550a69e..66ba451 100644
+/var/lib/cacti/rra(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)
+/var/lib/cherokee(/.*)? gen_context(system_u:object_r:httpd_var_lib_t,s0)
+/var/lib/dav(/.*)? gen_context(system_u:object_r:httpd_var_lib_t,s0)
++/var/lib/glpi(/.*)? gen_context(system_u:object_r:httpd_var_lib_t,s0)
+/var/lib/php(/.*)? gen_context(system_u:object_r:httpd_var_lib_t,s0)
+/var/lib/dokuwiki(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
+/var/lib/drupal.* gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
@@ -3250,6 +3444,7 @@ index 550a69e..66ba451 100644
+
+/var/log/apache(2)?(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
+/var/log/apache-ssl(2)?(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
++/var/log/glpi(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
+/var/log/cacti(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
+/var/log/cgiwrap\.log.* -- gen_context(system_u:object_r:httpd_log_t,s0)
+/var/log/cherokee(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
@@ -3260,6 +3455,8 @@ index 550a69e..66ba451 100644
/var/log/roundcubemail(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
/var/log/suphp\.log.* -- gen_context(system_u:object_r:httpd_log_t,s0)
-/var/log/z-push(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
++/var/log/thttpd\.log.* -- gen_context(system_u:object_r:httpd_log_t,s0)
++/var/log/php_errors\.log.* -- gen_context(system_u:object_r:httpd_log_t,s0)
+/var/log/z-push(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
+ifdef(`distro_debian', `
+/var/log/horde2(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
@@ -3276,6 +3473,7 @@ index 550a69e..66ba451 100644
+/var/run/mod_.* gen_context(system_u:object_r:httpd_var_run_t,s0)
+/var/run/nginx.* gen_context(system_u:object_r:httpd_var_run_t,s0)
+/var/run/php-fpm(/.*)? gen_context(system_u:object_r:httpd_var_run_t,s0)
++/var/run/thttpd\.pid -- gen_context(system_u:object_r:httpd_var_run_t,s0)
+/var/run/wsgi.* -s gen_context(system_u:object_r:httpd_var_run_t,s0)
+/var/run/user/apache(/.*)? gen_context(system_u:object_r:httpd_tmp_t,s0)
+
@@ -3328,7 +3526,8 @@ index 550a69e..66ba451 100644
+/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(/.*)?/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)
+
+/var/www/moodledata(/.*)? gen_context(system_u:object_r:httpd_sys_rw_content_t,s0)
@@ -3354,7 +3553,7 @@ index 550a69e..66ba451 100644
+/var/run/dirsrv/admin-serv.* gen_context(system_u:object_r:httpd_var_run_t,s0)
+/opt/dirsrv/var/run/dirsrv/dsgw/cookies(/.*)? gen_context(system_u:object_r:httpd_var_run_t,s0)
diff --git a/apache.if b/apache.if
-index 83e899c..fac6fe5 100644
+index 83e899c..64beed7 100644
--- a/apache.if
+++ b/apache.if
@@ -1,9 +1,9 @@
@@ -4001,131 +4200,166 @@ index 83e899c..fac6fe5 100644
-## Create, read, write, and delete
-## httpd log files.
+## Allow the specified domain to manage
-+## to apache log files.
++## to apache var lib files.
##
##
##
-@@ -698,47 +762,49 @@ interface(`apache_manage_log',`
- read_lnk_files_pattern($1, httpd_log_t, httpd_log_t)
+@@ -687,20 +751,21 @@ interface(`apache_dontaudit_append_log',`
+ ##
+ ##
+ #
+-interface(`apache_manage_log',`
++interface(`apache_manage_lib',`
+ gen_require(`
+- type httpd_log_t;
++ type httpd_var_lib_t;
+ ')
+
+- logging_search_logs($1)
+- manage_dirs_pattern($1, httpd_log_t, httpd_log_t)
+- manage_files_pattern($1, httpd_log_t, httpd_log_t)
+- read_lnk_files_pattern($1, httpd_log_t, httpd_log_t)
++ files_search_var_lib($1)
++ manage_dirs_pattern($1, httpd_var_lib_t, httpd_var_lib_t)
++ manage_files_pattern($1, httpd_var_lib_t, httpd_var_lib_t)
++ read_lnk_files_pattern($1, httpd_var_lib_t, httpd_var_lib_t)
')
-#######################################
+########################################
##
-## Write apache log files.
-+## Do not audit attempts to search Apache
-+## module directories.
++## Allow the specified domain to manage
++## to apache log files.
##
##
##
--## Domain allowed access.
-+## Domain to not audit.
+@@ -708,19 +773,21 @@ interface(`apache_manage_log',`
##
##
#
-interface(`apache_write_log',`
-+interface(`apache_dontaudit_search_modules',`
++interface(`apache_manage_log',`
gen_require(`
-- type httpd_log_t;
-+ type httpd_modules_t;
+ type httpd_log_t;
')
-- logging_search_logs($1)
+ logging_search_logs($1)
- write_files_pattern($1, httpd_log_t, httpd_log_t)
-+ dontaudit $1 httpd_modules_t:dir search_dir_perms;
++ manage_dirs_pattern($1, httpd_log_t, httpd_log_t)
++ manage_files_pattern($1, httpd_log_t, httpd_log_t)
++ read_lnk_files_pattern($1, httpd_log_t, httpd_log_t)
')
########################################
##
-## Do not audit attempts to search
-## httpd module directories.
++## Do not audit attempts to search Apache
++## module directories.
+ ##
+ ##
+ ##
+@@ -738,7 +805,8 @@ interface(`apache_dontaudit_search_modules',`
+
+ ########################################
+ ##
+-## List httpd module directories.
+## Allow the specified domain to read
+## the apache module directories.
##
##
##
--## Domain to not audit.
-+## Domain allowed access.
+@@ -746,17 +814,19 @@ interface(`apache_dontaudit_search_modules',`
##
##
#
--interface(`apache_dontaudit_search_modules',`
+-interface(`apache_list_modules',`
+interface(`apache_read_modules',`
gen_require(`
type httpd_modules_t;
')
-- dontaudit $1 httpd_modules_t:dir search_dir_perms;
+- allow $1 httpd_modules_t:dir list_dir_perms;
+ read_files_pattern($1, httpd_modules_t, httpd_modules_t)
')
########################################
##
--## List httpd module directories.
+-## Execute httpd module files.
+## Allow the specified domain to list
+## the contents of the apache modules
+## directory.
##
##
##
-@@ -752,11 +818,13 @@ interface(`apache_list_modules',`
+@@ -764,19 +834,19 @@ interface(`apache_list_modules',`
+ ##
+ ##
+ #
+-interface(`apache_exec_modules',`
++interface(`apache_list_modules',`
+ gen_require(`
+ type httpd_modules_t;
')
allow $1 httpd_modules_t:dir list_dir_perms;
+- allow $1 httpd_modules_t:lnk_file read_lnk_file_perms;
+- can_exec($1, httpd_modules_t)
+ read_lnk_files_pattern($1, httpd_modules_t, httpd_modules_t)
')
########################################
##
--## Execute httpd module files.
+-## Read httpd module files.
+## Allow the specified domain to execute
+## apache modules.
##
##
##
-@@ -776,46 +844,63 @@ interface(`apache_exec_modules',`
-
- ########################################
- ##
--## Read httpd module files.
-+## Execute a domain transition to run httpd_rotatelogs.
- ##
- ##
- ##
--## Domain allowed access.
-+## Domain allowed to transition.
+@@ -784,19 +854,19 @@ interface(`apache_exec_modules',`
##
##
#
-interface(`apache_read_module_files',`
-+interface(`apache_domtrans_rotatelogs',`
++interface(`apache_exec_modules',`
gen_require(`
-- type httpd_modules_t;
-+ type httpd_rotatelogs_t, httpd_rotatelogs_exec_t;
+ type httpd_modules_t;
')
- libs_search_lib($1)
- read_files_pattern($1, httpd_modules_t, httpd_modules_t)
-+ domtrans_pattern($1, httpd_rotatelogs_exec_t, httpd_rotatelogs_t)
++ allow $1 httpd_modules_t:dir list_dir_perms;
++ allow $1 httpd_modules_t:lnk_file read_lnk_file_perms;
++ can_exec($1, httpd_modules_t)
')
--########################################
-+#######################################
+ ########################################
##
-## Execute a domain transition to
-## run httpd_rotatelogs.
-+## Execute httpd_rotatelogs in the caller domain.
++## Execute a domain transition to run httpd_rotatelogs.
##
##
--##
--## Domain allowed to transition.
--##
+ ##
+@@ -809,13 +879,50 @@ interface(`apache_domtrans_rotatelogs',`
+ type httpd_rotatelogs_t, httpd_rotatelogs_exec_t;
+ ')
+
+- corecmd_search_bin($1)
+ domtrans_pattern($1, httpd_rotatelogs_exec_t, httpd_rotatelogs_t)
+ ')
+
++#######################################
++##
++## Execute httpd_rotatelogs in the caller domain.
++##
++##
+##
+## Domain allowed to transition.
+##
- ##
- #
--interface(`apache_domtrans_rotatelogs',`
++##
++#
+interface(`apache_exec_rotatelogs',`
+ gen_require(`
+ type httpd_rotatelogs_exec_t;
@@ -4145,17 +4379,14 @@ index 83e899c..fac6fe5 100644
+##
+#
+interface(`apache_exec_sys_script',`
- gen_require(`
-- type httpd_rotatelogs_t, httpd_rotatelogs_exec_t;
++ gen_require(`
+ type httpd_sys_script_exec_t;
- ')
-
-- corecmd_search_bin($1)
-- domtrans_pattern($1, httpd_rotatelogs_exec_t, httpd_rotatelogs_t)
++ ')
++
+ allow $1 httpd_sys_script_exec_t:dir search_dir_perms;
+ can_exec($1, httpd_sys_script_exec_t)
- ')
-
++')
++
########################################
##
-## List httpd system content directories.
@@ -4164,7 +4395,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -829,13 +914,14 @@ interface(`apache_list_sys_content',`
+@@ -829,13 +936,14 @@ interface(`apache_list_sys_content',`
')
list_dirs_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
@@ -4181,7 +4412,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -844,6 +930,7 @@ interface(`apache_list_sys_content',`
+@@ -844,6 +952,7 @@ interface(`apache_list_sys_content',`
##
##
#
@@ -4189,23 +4420,21 @@ index 83e899c..fac6fe5 100644
interface(`apache_manage_sys_content',`
gen_require(`
type httpd_sys_content_t;
-@@ -855,32 +942,98 @@ interface(`apache_manage_sys_content',`
+@@ -855,32 +964,98 @@ interface(`apache_manage_sys_content',`
manage_lnk_files_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
')
-########################################
+######################################
- ##
--## Create, read, write, and delete
--## httpd system rw content.
++##
+## Allow the specified domain to read
+## apache system content rw files.
- ##
- ##
- ##
- ## Domain allowed access.
- ##
- ##
++##
++##
++##
++## Domain allowed access.
++##
++##
+##
+#
+interface(`apache_read_sys_content_rw_files',`
@@ -4217,22 +4446,26 @@ index 83e899c..fac6fe5 100644
+')
+
+######################################
-+##
+ ##
+-## Create, read, write, and delete
+-## httpd system rw content.
+## Allow the specified domain to read
+## apache system content rw dirs.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
+ ##
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
+##
-+#
+ #
+-interface(`apache_manage_sys_rw_content',`
+interface(`apache_read_sys_content_rw_dirs',`
-+ gen_require(`
-+ type httpd_sys_rw_content_t;
-+ ')
-+
+ gen_require(`
+ type httpd_sys_rw_content_t;
+ ')
+
+- apache_search_sys_content($1)
+ list_dirs_pattern($1, httpd_sys_rw_content_t, httpd_sys_rw_content_t)
+')
+
@@ -4247,14 +4480,12 @@ index 83e899c..fac6fe5 100644
+##
+##
+##
- #
--interface(`apache_manage_sys_rw_content',`
++#
+interface(`apache_manage_sys_content_rw',`
- gen_require(`
- type httpd_sys_rw_content_t;
- ')
-
-- apache_search_sys_content($1)
++ gen_require(`
++ type httpd_sys_rw_content_t;
++ ')
++
+ files_search_var($1)
manage_dirs_pattern($1, httpd_sys_rw_content_t, httpd_sys_rw_content_t)
- manage_files_pattern($1,httpd_sys_rw_content_t, httpd_sys_rw_content_t)
@@ -4296,7 +4527,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -888,10 +1041,17 @@ interface(`apache_manage_sys_rw_content',`
+@@ -888,10 +1063,17 @@ interface(`apache_manage_sys_rw_content',`
##
##
#
@@ -4315,7 +4546,7 @@ index 83e899c..fac6fe5 100644
')
tunable_policy(`httpd_enable_cgi && httpd_unified',`
-@@ -901,9 +1061,8 @@ interface(`apache_domtrans_sys_script',`
+@@ -901,9 +1083,8 @@ interface(`apache_domtrans_sys_script',`
########################################
##
@@ -4327,7 +4558,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -941,7 +1100,7 @@ interface(`apache_domtrans_all_scripts',`
+@@ -941,7 +1122,7 @@ interface(`apache_domtrans_all_scripts',`
########################################
##
## Execute all user scripts in the user
@@ -4336,7 +4567,7 @@ index 83e899c..fac6fe5 100644
## to the specified role.
##
##
-@@ -954,6 +1113,7 @@ interface(`apache_domtrans_all_scripts',`
+@@ -954,6 +1135,7 @@ interface(`apache_domtrans_all_scripts',`
## Role allowed access.
##
##
@@ -4344,7 +4575,7 @@ index 83e899c..fac6fe5 100644
#
interface(`apache_run_all_scripts',`
gen_require(`
-@@ -966,7 +1126,8 @@ interface(`apache_run_all_scripts',`
+@@ -966,7 +1148,8 @@ interface(`apache_run_all_scripts',`
########################################
##
@@ -4354,7 +4585,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -979,12 +1140,13 @@ interface(`apache_read_squirrelmail_data',`
+@@ -979,12 +1162,13 @@ interface(`apache_read_squirrelmail_data',`
type httpd_squirrelmail_t;
')
@@ -4370,7 +4601,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1002,7 +1164,7 @@ interface(`apache_append_squirrelmail_data',`
+@@ -1002,7 +1186,7 @@ interface(`apache_append_squirrelmail_data',`
########################################
##
@@ -4379,7 +4610,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1015,13 +1177,12 @@ interface(`apache_search_sys_content',`
+@@ -1015,13 +1199,12 @@ interface(`apache_search_sys_content',`
type httpd_sys_content_t;
')
@@ -4394,7 +4625,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1041,7 +1202,7 @@ interface(`apache_read_sys_content',`
+@@ -1041,7 +1224,7 @@ interface(`apache_read_sys_content',`
########################################
##
@@ -4403,7 +4634,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1059,8 +1220,7 @@ interface(`apache_search_sys_scripts',`
+@@ -1059,8 +1242,7 @@ interface(`apache_search_sys_scripts',`
########################################
##
@@ -4413,7 +4644,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1070,13 +1230,22 @@ interface(`apache_search_sys_scripts',`
+@@ -1070,13 +1252,22 @@ interface(`apache_search_sys_scripts',`
##
#
interface(`apache_manage_all_user_content',`
@@ -4439,7 +4670,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1094,7 +1263,8 @@ interface(`apache_search_sys_script_state',`
+@@ -1094,7 +1285,8 @@ interface(`apache_search_sys_script_state',`
########################################
##
@@ -4449,7 +4680,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1111,10 +1281,29 @@ interface(`apache_read_tmp_files',`
+@@ -1111,10 +1303,29 @@ interface(`apache_read_tmp_files',`
read_files_pattern($1, httpd_tmp_t, httpd_tmp_t)
')
@@ -4481,7 +4712,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1127,7 +1316,7 @@ interface(`apache_dontaudit_write_tmp_files',`
+@@ -1127,7 +1338,7 @@ interface(`apache_dontaudit_write_tmp_files',`
type httpd_tmp_t;
')
@@ -4490,7 +4721,7 @@ index 83e899c..fac6fe5 100644
')
########################################
-@@ -1136,6 +1325,9 @@ interface(`apache_dontaudit_write_tmp_files',`
+@@ -1136,6 +1347,9 @@ interface(`apache_dontaudit_write_tmp_files',`
##
##
##
@@ -4500,7 +4731,7 @@ index 83e899c..fac6fe5 100644
## This is an interface to support third party modules
## and its use is not allowed in upstream reference
## policy.
-@@ -1165,8 +1357,30 @@ interface(`apache_cgi_domain',`
+@@ -1165,8 +1379,30 @@ interface(`apache_cgi_domain',`
########################################
##
@@ -4533,7 +4764,7 @@ index 83e899c..fac6fe5 100644
##
##
##
-@@ -1183,18 +1397,19 @@ interface(`apache_cgi_domain',`
+@@ -1183,18 +1419,19 @@ interface(`apache_cgi_domain',`
interface(`apache_admin',`
gen_require(`
attribute httpdcontent, httpd_script_exec_type;
@@ -4562,7 +4793,7 @@ index 83e899c..fac6fe5 100644
init_labeled_script_domtrans($1, httpd_initrc_exec_t)
domain_system_change_exemption($1)
-@@ -1204,10 +1419,10 @@ interface(`apache_admin',`
+@@ -1204,10 +1441,10 @@ interface(`apache_admin',`
apache_manage_all_content($1)
miscfiles_manage_public_files($1)
@@ -4576,7 +4807,7 @@ index 83e899c..fac6fe5 100644
admin_pattern($1, httpd_log_t)
admin_pattern($1, httpd_modules_t)
-@@ -1218,9 +1433,129 @@ interface(`apache_admin',`
+@@ -1218,9 +1455,141 @@ interface(`apache_admin',`
admin_pattern($1, httpd_var_run_t)
files_pid_filetrans($1, httpd_var_run_t, file)
@@ -4640,7 +4871,19 @@ index 83e899c..fac6fe5 100644
+
+
+ apache_filetrans_home_content($1)
++ files_usr_filetrans($1, httpd_sys_content_t, dir, "gallery2")
++ files_usr_filetrans($1, httpd_sys_content_t, dir, "z-push")
++ files_etc_filetrans($1, httpd_sys_content_t, dir, "z-push")
++ files_etc_filetrans($1, httpd_sys_content_t, dir, "web")
++ files_etc_filetrans($1, httpd_sys_content_t, dir, "WebCalendar")
++ files_etc_filetrans($1, httpd_sys_content_t, dir, "htdig")
++ files_etc_filetrans($1, httpd_sys_rw_content_t, dir, "horde")
++ files_etc_filetrans($1, httpd_sys_rw_content_t, dir, "owncloud")
+ filetrans_pattern($1, httpd_sys_content_t, httpd_sys_rw_content_t, file, "settings.php")
++ filetrans_pattern($1, httpd_sys_content_t, httpd_sys_rw_content_t, dir, "smarty")
++ filetrans_pattern($1, httpd_sys_content_t, httpd_sys_rw_content_t, dir, "uploads")
++ filetrans_pattern($1, httpd_sys_content_t, httpd_sys_rw_content_t, dir, "wp-content")
++ filetrans_pattern($1, httpd_sys_content_t, httpd_sys_rw_content_t, dir, "upgrade")
+ userdom_user_tmp_filetrans($1, httpd_tmp_t, dir, "apache")
+')
+
@@ -4711,10 +4954,10 @@ index 83e899c..fac6fe5 100644
+ filetrans_pattern($1, { httpd_user_content_t httpd_user_script_exec_t }, httpd_user_htaccess_t, file, ".htaccess")
')
diff --git a/apache.te b/apache.te
-index 1a82e29..bfe87eb 100644
+index 1a82e29..21d7195 100644
--- a/apache.te
+++ b/apache.te
-@@ -1,297 +1,367 @@
+@@ -1,297 +1,381 @@
-policy_module(apache, 2.6.10)
+policy_module(apache, 2.4.0)
+
@@ -4759,33 +5002,33 @@ index 1a82e29..bfe87eb 100644
-## Determine whether httpd can use mod_auth_pam.
-##
+##
-+## Allow Apache to use mod_auth_pam
++## Dontaudit Apache to search dirs.
+##
##
-gen_tunable(allow_httpd_mod_auth_pam, false)
-+gen_tunable(httpd_mod_auth_pam, false)
++gen_tunable(httpd_dontaudit_search_dirs, false)
##
-##
-## Determine whether httpd can use built in scripting.
-##
+##
-+## Allow Apache to use mod_auth_ntlm_winbind
++## Allow Apache to use mod_auth_pam
+##
##
-gen_tunable(httpd_builtin_scripting, false)
-+gen_tunable(httpd_mod_auth_ntlm_winbind, false)
++gen_tunable(httpd_mod_auth_pam, false)
##
-##
-## Determine whether httpd can check spam.
-##
+##
-+## Allow httpd scripts and modules execmem/execstack
++## Allow Apache to use mod_auth_ntlm_winbind
+##
##
-gen_tunable(httpd_can_check_spam, false)
-+gen_tunable(httpd_execmem, false)
++gen_tunable(httpd_mod_auth_ntlm_winbind, false)
##
-##
@@ -4793,6 +5036,13 @@ index 1a82e29..bfe87eb 100644
-## can connect to the network using TCP.
-##
+##
++## Allow httpd scripts and modules execmem/execstack
++##
++##
++gen_tunable(httpd_execmem, false)
++
++##
++##
+## Allow httpd processes to manage IPA content
+##
+##
@@ -4866,61 +5116,55 @@ index 1a82e29..bfe87eb 100644
+##
+## Allow httpd to connect to memcache server
+##
-+##
-+gen_tunable(httpd_can_network_memcache, false)
-+
-+##
-+##
-+## Allow httpd to act as a relay
-+##
##
- gen_tunable(httpd_can_network_relay, false)
+-gen_tunable(httpd_can_network_relay, false)
++gen_tunable(httpd_can_network_memcache, false)
##
-##
-## Determine whether httpd daemon can
-## connect to zabbix over the network.
-##
-+##
-+## Allow http daemon to connect to zabbix
-+##
++##
++## Allow httpd to act as a relay
++##
##
-gen_tunable(httpd_can_network_connect_zabbix, false)
-+gen_tunable(httpd_can_connect_zabbix, false)
++gen_tunable(httpd_can_network_relay, false)
##
-##
-## Determine whether httpd can send mail.
-##
+##
-+## Allow http daemon to connect to mythtv
++## Allow http daemon to connect to zabbix
+##
##
-gen_tunable(httpd_can_sendmail, false)
-+gen_tunable(httpd_can_connect_mythtv, false)
++gen_tunable(httpd_can_connect_zabbix, false)
##
-##
-## Determine whether httpd can communicate
-## with avahi service via dbus.
-##
-+##
-+## Allow http daemon to check spam
-+##
++##
++## Allow http daemon to connect to mythtv
++##
##
-gen_tunable(httpd_dbus_avahi, false)
-+gen_tunable(httpd_can_check_spam, false)
++gen_tunable(httpd_can_connect_mythtv, false)
##
-##
-## Determine wether httpd can use support.
-##
+##
-+## Allow http daemon to send mail
++## Allow http daemon to check spam
+##
##
-gen_tunable(httpd_enable_cgi, false)
-+gen_tunable(httpd_can_sendmail, false)
++gen_tunable(httpd_can_check_spam, false)
##
-##
@@ -4928,11 +5172,11 @@ index 1a82e29..bfe87eb 100644
-## FTP server by listening on the ftp port.
-##
+##
-+## Allow Apache to communicate with avahi service via dbus
++## Allow http daemon to send mail
+##
##
-gen_tunable(httpd_enable_ftp_server, false)
-+gen_tunable(httpd_dbus_avahi, false)
++gen_tunable(httpd_can_sendmail, false)
##
-##
@@ -4940,11 +5184,11 @@ index 1a82e29..bfe87eb 100644
-## user home directories.
-##
+##
-+## Allow httpd cgi support
++## Allow Apache to communicate with avahi service via dbus
+##
##
-gen_tunable(httpd_enable_homedirs, false)
-+gen_tunable(httpd_enable_cgi, false)
++gen_tunable(httpd_dbus_avahi, false)
##
-##
@@ -4954,12 +5198,11 @@ index 1a82e29..bfe87eb 100644
-## be labeled public_content_rw_t.
-##
+##
-+## Allow httpd to act as a FTP server by
-+## listening on the ftp port.
++## Allow Apache to communicate with sssd service via dbus
+##
##
-gen_tunable(httpd_gpg_anon_write, false)
-+gen_tunable(httpd_enable_ftp_server, false)
++gen_tunable(httpd_dbus_sssd, false)
##
-##
@@ -4967,24 +5210,24 @@ index 1a82e29..bfe87eb 100644
-## its temporary content.
-##
+##
-+## Allow httpd to act as a FTP client
-+## connecting to the ftp port and ephemeral ports
++## Allow httpd cgi support
+##
##
-gen_tunable(httpd_tmp_exec, false)
-+gen_tunable(httpd_can_connect_ftp, false)
++gen_tunable(httpd_enable_cgi, false)
##
-##
-## Determine whether httpd scripts and
-## modules can use execmem and execstack.
-##
-+##
-+## Allow httpd to connect to the ldap port
-+##
++##
++## Allow httpd to act as a FTP server by
++## listening on the ftp port.
++##
##
-gen_tunable(httpd_execmem, false)
-+gen_tunable(httpd_can_connect_ldap, false)
++gen_tunable(httpd_enable_ftp_server, false)
##
-##
@@ -4992,34 +5235,35 @@ index 1a82e29..bfe87eb 100644
-## to port 80 for graceful shutdown.
-##
+##
-+## Allow httpd to read home directories
++## Allow httpd to act as a FTP client
++## connecting to the ftp port and ephemeral ports
+##
##
-gen_tunable(httpd_graceful_shutdown, false)
-+gen_tunable(httpd_enable_homedirs, false)
++gen_tunable(httpd_can_connect_ftp, false)
##
-##
-## Determine whether httpd can
-## manage IPA content files.
-##
-+##
-+## Allow httpd to read user content
-+##
++##
++## Allow httpd to connect to the ldap port
++##
##
-gen_tunable(httpd_manage_ipa, false)
-+gen_tunable(httpd_read_user_content, false)
++gen_tunable(httpd_can_connect_ldap, false)
##
-##
-## Determine whether httpd can use mod_auth_ntlm_winbind.
-##
+##
-+## Allow Apache to run in stickshift mode, not transition to passenger
++## Allow httpd to read home directories
+##
##
-gen_tunable(httpd_mod_auth_ntlm_winbind, false)
-+gen_tunable(httpd_run_stickshift, false)
++gen_tunable(httpd_enable_homedirs, false)
##
-##
@@ -5027,11 +5271,10 @@ index 1a82e29..bfe87eb 100644
-## generic user home content files.
-##
+##
-+## Allow Apache to query NS records
++## Allow httpd to read user content
+##
##
--gen_tunable(httpd_read_user_content, false)
-+gen_tunable(httpd_verify_dns, false)
+ gen_tunable(httpd_read_user_content, false)
##
-##
@@ -5039,6 +5282,20 @@ index 1a82e29..bfe87eb 100644
-## its resource limits.
-##
+##
++## Allow Apache to run in stickshift mode, not transition to passenger
++##
++##
++gen_tunable(httpd_run_stickshift, false)
++
++##
++##
++## Allow Apache to query NS records
++##
++##
++gen_tunable(httpd_verify_dns, false)
++
++##
++##
+## Allow httpd daemon to change its resource limits
+##
##
@@ -5231,7 +5488,7 @@ index 1a82e29..bfe87eb 100644
type httpd_rotatelogs_t;
type httpd_rotatelogs_exec_t;
init_daemon_domain(httpd_rotatelogs_t, httpd_rotatelogs_exec_t)
-@@ -299,10 +369,8 @@ init_daemon_domain(httpd_rotatelogs_t, httpd_rotatelogs_exec_t)
+@@ -299,10 +383,8 @@ init_daemon_domain(httpd_rotatelogs_t, httpd_rotatelogs_exec_t)
type httpd_squirrelmail_t;
files_type(httpd_squirrelmail_t)
@@ -5244,7 +5501,7 @@ index 1a82e29..bfe87eb 100644
type httpd_suexec_exec_t;
domain_type(httpd_suexec_t)
domain_entry_file(httpd_suexec_t, httpd_suexec_exec_t)
-@@ -311,9 +379,19 @@ role system_r types httpd_suexec_t;
+@@ -311,9 +393,19 @@ role system_r types httpd_suexec_t;
type httpd_suexec_tmp_t;
files_tmp_file(httpd_suexec_tmp_t)
@@ -5266,7 +5523,7 @@ index 1a82e29..bfe87eb 100644
type httpd_tmp_t;
files_tmp_file(httpd_tmp_t)
-@@ -323,12 +401,19 @@ files_tmpfs_file(httpd_tmpfs_t)
+@@ -323,12 +415,19 @@ files_tmpfs_file(httpd_tmpfs_t)
apache_content_template(user)
ubac_constrained(httpd_user_script_t)
@@ -5286,7 +5543,7 @@ index 1a82e29..bfe87eb 100644
typealias httpd_user_content_t alias { httpd_auditadm_content_t httpd_secadm_content_t };
typealias httpd_user_content_t alias { httpd_staff_script_ro_t httpd_sysadm_script_ro_t };
typealias httpd_user_content_t alias { httpd_auditadm_script_ro_t httpd_secadm_script_ro_t };
-@@ -343,33 +428,40 @@ typealias httpd_user_rw_content_t alias { httpd_auditadm_script_rw_t httpd_secad
+@@ -343,33 +442,40 @@ typealias httpd_user_rw_content_t alias { httpd_auditadm_script_rw_t httpd_secad
typealias httpd_user_ra_content_t alias { httpd_staff_script_ra_t httpd_sysadm_script_ra_t };
typealias httpd_user_ra_content_t alias { httpd_auditadm_script_ra_t httpd_secadm_script_ra_t };
@@ -5337,7 +5594,7 @@ index 1a82e29..bfe87eb 100644
allow httpd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
allow httpd_t self:fd use;
allow httpd_t self:sock_file read_sock_file_perms;
-@@ -378,28 +470,36 @@ allow httpd_t self:shm create_shm_perms;
+@@ -378,28 +484,36 @@ allow httpd_t self:shm create_shm_perms;
allow httpd_t self:sem create_sem_perms;
allow httpd_t self:msgq create_msgq_perms;
allow httpd_t self:msg { send receive };
@@ -5379,7 +5636,7 @@ index 1a82e29..bfe87eb 100644
logging_log_filetrans(httpd_t, httpd_log_t, file)
allow httpd_t httpd_modules_t:dir list_dir_perms;
-@@ -407,6 +507,8 @@ mmap_files_pattern(httpd_t, httpd_modules_t, httpd_modules_t)
+@@ -407,14 +521,21 @@ mmap_files_pattern(httpd_t, httpd_modules_t, httpd_modules_t)
read_files_pattern(httpd_t, httpd_modules_t, httpd_modules_t)
read_lnk_files_pattern(httpd_t, httpd_modules_t, httpd_modules_t)
@@ -5388,8 +5645,10 @@ index 1a82e29..bfe87eb 100644
allow httpd_t httpd_rotatelogs_t:process signal_perms;
manage_dirs_pattern(httpd_t, httpd_squirrelmail_t, httpd_squirrelmail_t)
-@@ -415,6 +517,10 @@ manage_lnk_files_pattern(httpd_t, httpd_squirrelmail_t, httpd_squirrelmail_t)
+ manage_files_pattern(httpd_t, httpd_squirrelmail_t, httpd_squirrelmail_t)
+ manage_lnk_files_pattern(httpd_t, httpd_squirrelmail_t, httpd_squirrelmail_t)
++allow httpd_t httpd_suexec_exec_t:process { signal signull };
allow httpd_t httpd_suexec_exec_t:file read_file_perms;
+allow httpd_t httpd_sys_content_t:dir list_dir_perms;
@@ -5399,7 +5658,7 @@ index 1a82e29..bfe87eb 100644
allow httpd_t httpd_sys_script_t:unix_stream_socket connectto;
manage_dirs_pattern(httpd_t, httpd_tmp_t, httpd_tmp_t)
-@@ -445,140 +551,167 @@ manage_dirs_pattern(httpd_t, squirrelmail_spool_t, squirrelmail_spool_t)
+@@ -445,140 +566,172 @@ manage_dirs_pattern(httpd_t, squirrelmail_spool_t, squirrelmail_spool_t)
manage_files_pattern(httpd_t, squirrelmail_spool_t, squirrelmail_spool_t)
manage_lnk_files_pattern(httpd_t, squirrelmail_spool_t, squirrelmail_spool_t)
@@ -5473,10 +5732,11 @@ index 1a82e29..bfe87eb 100644
+# execute perl
+corecmd_exec_bin(httpd_t)
+corecmd_exec_shell(httpd_t)
-+
+
+domain_use_interactive_fds(httpd_t)
+domain_dontaudit_read_all_domains_state(httpd_t)
-
++
++files_dontaudit_search_all_pids(httpd_t)
files_dontaudit_getattr_all_pids(httpd_t)
-files_read_usr_files(httpd_t)
+files_exec_usr_files(httpd_t)
@@ -5540,16 +5800,20 @@ index 1a82e29..bfe87eb 100644
-ifdef(`hide_broken_symptoms',`
- libs_exec_lib_files(httpd_t)
++tunable_policy(`httpd_dontaudit_search_dirs',`
++ files_dontaudit_search_non_security_dirs(httpd_t)
+ ')
+
+-tunable_policy(`allow_httpd_anon_write',`
+- miscfiles_manage_public_files(httpd_t)
+#
+# We need optionals to be able to be within booleans to make this work
+#
+tunable_policy(`httpd_mod_auth_pam',`
+ auth_domtrans_chkpwd(httpd_t)
+ logging_send_audit_msgs(httpd_t)
- ')
-
--tunable_policy(`allow_httpd_anon_write',`
-- miscfiles_manage_public_files(httpd_t)
++')
++
+optional_policy(`
+ tunable_policy(`httpd_mod_auth_ntlm_winbind',`
+ samba_domtrans_winbind_helper(httpd_t)
@@ -5632,7 +5896,7 @@ index 1a82e29..bfe87eb 100644
')
tunable_policy(`httpd_enable_cgi && httpd_use_nfs',`
-@@ -589,28 +722,50 @@ tunable_policy(`httpd_enable_cgi && httpd_use_cifs',`
+@@ -589,28 +742,50 @@ tunable_policy(`httpd_enable_cgi && httpd_use_cifs',`
fs_cifs_domtrans(httpd_t, httpd_sys_script_t)
')
@@ -5692,7 +5956,7 @@ index 1a82e29..bfe87eb 100644
')
tunable_policy(`httpd_enable_homedirs && use_nfs_home_dirs',`
-@@ -619,68 +774,44 @@ tunable_policy(`httpd_enable_homedirs && use_nfs_home_dirs',`
+@@ -619,68 +794,44 @@ tunable_policy(`httpd_enable_homedirs && use_nfs_home_dirs',`
fs_read_nfs_symlinks(httpd_t)
')
@@ -5783,7 +6047,7 @@ index 1a82e29..bfe87eb 100644
')
tunable_policy(`httpd_setrlimit',`
-@@ -690,49 +821,48 @@ tunable_policy(`httpd_setrlimit',`
+@@ -690,49 +841,48 @@ tunable_policy(`httpd_setrlimit',`
tunable_policy(`httpd_ssi_exec',`
corecmd_shell_domtrans(httpd_t, httpd_sys_script_t)
@@ -5864,30 +6128,33 @@ index 1a82e29..bfe87eb 100644
')
optional_policy(`
-@@ -743,14 +873,6 @@ optional_policy(`
- ccs_read_config(httpd_t)
+@@ -744,24 +894,32 @@ optional_policy(`
')
--optional_policy(`
+ optional_policy(`
- clamav_domtrans_clamscan(httpd_t)
--')
--
--optional_policy(`
++ cron_system_entry(httpd_t, httpd_exec_t)
+ ')
+
+ optional_policy(`
- cobbler_read_config(httpd_t)
- cobbler_read_lib_files(httpd_t)
--')
++ cvs_read_data(httpd_t)
+ ')
optional_policy(`
- cron_system_entry(httpd_t, httpd_exec_t)
-@@ -765,6 +887,23 @@ optional_policy(`
+- cron_system_entry(httpd_t, httpd_exec_t)
++ daemontools_service_domain(httpd_t, httpd_exec_t)
')
optional_policy(`
+- cvs_read_data(httpd_t)
+ #needed by FreeIPA
+ dirsrv_stream_connect(httpd_t)
-+')
-+
-+optional_policy(`
+ ')
+
+ optional_policy(`
+- daemontools_service_domain(httpd_t, httpd_exec_t)
+ dirsrv_manage_config(httpd_t)
+ dirsrv_manage_log(httpd_t)
+ dirsrv_manage_var_run(httpd_t)
@@ -5897,13 +6164,21 @@ index 1a82e29..bfe87eb 100644
+ dirsrvadmin_manage_config(httpd_t)
+ dirsrvadmin_manage_tmp(httpd_t)
+ dirsrvadmin_domtrans_unconfined_script_t(httpd_t)
-+')
-+
-+ optional_policy(`
- dbus_system_bus_client(httpd_t)
+ ')
+ optional_policy(`
+@@ -770,6 +928,10 @@ optional_policy(`
tunable_policy(`httpd_dbus_avahi',`
-@@ -781,34 +920,46 @@ optional_policy(`
+ avahi_dbus_chat(httpd_t)
+ ')
++
++ tunable_policy(`httpd_dbus_sssd',
++ sssd_dbus_chat(httpd_t)
++ ')
+ ')
+
+ optional_policy(`
+@@ -781,34 +943,53 @@ optional_policy(`
')
optional_policy(`
@@ -5917,6 +6192,12 @@ index 1a82e29..bfe87eb 100644
+')
+
+optional_policy(`
++ mirrormanager_manage_pid_files(httpd_t)
++ mirrormanager_read_lib_files(httpd_t)
++ mirrormanager_read_log(httpd_t)
++')
++
++optional_policy(`
+ jetty_admin(httpd_t)
+')
+
@@ -5936,6 +6217,7 @@ index 1a82e29..bfe87eb 100644
- tunable_policy(`httpd_can_network_connect_ldap',`
- ldap_tcp_connect(httpd_t)
- ')
++ ldap_read_certs(httpd_t)
')
optional_policy(`
@@ -5961,7 +6243,7 @@ index 1a82e29..bfe87eb 100644
tunable_policy(`httpd_manage_ipa',`
memcached_manage_pid_files(httpd_t)
-@@ -816,8 +967,18 @@ optional_policy(`
+@@ -816,8 +997,18 @@ optional_policy(`
')
optional_policy(`
@@ -5980,7 +6262,7 @@ index 1a82e29..bfe87eb 100644
tunable_policy(`httpd_can_network_connect_db',`
mysql_tcp_connect(httpd_t)
-@@ -826,6 +987,7 @@ optional_policy(`
+@@ -826,6 +1017,7 @@ optional_policy(`
optional_policy(`
nagios_read_config(httpd_t)
@@ -5988,7 +6270,7 @@ index 1a82e29..bfe87eb 100644
')
optional_policy(`
-@@ -836,20 +998,39 @@ optional_policy(`
+@@ -836,20 +1028,39 @@ optional_policy(`
')
optional_policy(`
@@ -6014,7 +6296,7 @@ index 1a82e29..bfe87eb 100644
+ pki_manage_apache_lib(httpd_t)
+ pki_manage_apache_log_files(httpd_t)
+ pki_manage_apache_run(httpd_t)
-+ pki_read_tomcat_cert(httpd_t)
++ pki_read_tomcat_cert(httpd_t)
+')
- tunable_policy(`httpd_can_network_connect_db',`
@@ -6022,19 +6304,19 @@ index 1a82e29..bfe87eb 100644
- ')
+optional_policy(`
+ puppet_read_lib(httpd_t)
++')
++
++optional_policy(`
++ pwauth_domtrans(httpd_t)
')
optional_policy(`
- puppet_read_lib_files(httpd_t)
-+ pwauth_domtrans(httpd_t)
-+')
-+
-+optional_policy(`
+ rpm_dontaudit_read_db(httpd_t)
')
optional_policy(`
-@@ -857,19 +1038,35 @@ optional_policy(`
+@@ -857,19 +1068,35 @@ optional_policy(`
')
optional_policy(`
@@ -6070,7 +6352,7 @@ index 1a82e29..bfe87eb 100644
udev_read_db(httpd_t)
')
-@@ -877,65 +1074,173 @@ optional_policy(`
+@@ -877,65 +1104,173 @@ optional_policy(`
yam_read_content(httpd_t)
')
@@ -6266,7 +6548,7 @@ index 1a82e29..bfe87eb 100644
files_dontaudit_search_pids(httpd_suexec_t)
files_search_home(httpd_suexec_t)
-@@ -944,123 +1249,74 @@ auth_use_nsswitch(httpd_suexec_t)
+@@ -944,123 +1279,74 @@ auth_use_nsswitch(httpd_suexec_t)
logging_search_logs(httpd_suexec_t)
logging_send_syslog_msg(httpd_suexec_t)
@@ -6421,7 +6703,7 @@ index 1a82e29..bfe87eb 100644
mysql_read_config(httpd_suexec_t)
tunable_policy(`httpd_can_network_connect_db',`
-@@ -1077,172 +1333,106 @@ optional_policy(`
+@@ -1077,172 +1363,106 @@ optional_policy(`
')
')
@@ -6593,7 +6875,8 @@ index 1a82e29..bfe87eb 100644
-allow httpd_sys_script_t httpd_t:tcp_socket { read write };
-
-dontaudit httpd_sys_script_t httpd_config_t:dir search;
--
++corenet_all_recvfrom_netlabel(httpd_sys_script_t)
+
-allow httpd_sys_script_t httpd_squirrelmail_t:file { append_file_perms read_file_perms };
-
-allow httpd_sys_script_t squirrelmail_spool_t:dir list_dir_perms;
@@ -6619,8 +6902,7 @@ index 1a82e29..bfe87eb 100644
- corenet_sendrecv_pop_client_packets(httpd_sys_script_t)
- corenet_tcp_connect_pop_port(httpd_sys_script_t)
- corenet_tcp_sendrecv_pop_port(httpd_sys_script_t)
-+corenet_all_recvfrom_netlabel(httpd_sys_script_t)
-
+-
- mta_send_mail(httpd_sys_script_t)
- mta_signal_system_mail(httpd_sys_script_t)
+tunable_policy(`httpd_enable_cgi && httpd_can_network_connect',`
@@ -6658,7 +6940,7 @@ index 1a82e29..bfe87eb 100644
')
tunable_policy(`httpd_read_user_content',`
-@@ -1250,64 +1440,74 @@ tunable_policy(`httpd_read_user_content',`
+@@ -1250,64 +1470,74 @@ tunable_policy(`httpd_read_user_content',`
')
tunable_policy(`httpd_use_cifs',`
@@ -6755,7 +7037,7 @@ index 1a82e29..bfe87eb 100644
########################################
#
-@@ -1315,8 +1515,15 @@ miscfiles_read_localization(httpd_rotatelogs_t)
+@@ -1315,8 +1545,15 @@ miscfiles_read_localization(httpd_rotatelogs_t)
#
optional_policy(`
@@ -6772,7 +7054,7 @@ index 1a82e29..bfe87eb 100644
')
########################################
-@@ -1324,49 +1531,38 @@ optional_policy(`
+@@ -1324,49 +1561,38 @@ optional_policy(`
# User content local policy
#
@@ -6837,7 +7119,7 @@ index 1a82e29..bfe87eb 100644
kernel_read_system_state(httpd_passwd_t)
corecmd_exec_bin(httpd_passwd_t)
-@@ -1376,38 +1572,99 @@ dev_read_urand(httpd_passwd_t)
+@@ -1376,38 +1602,99 @@ dev_read_urand(httpd_passwd_t)
domain_use_interactive_fds(httpd_passwd_t)
@@ -6958,10 +7240,12 @@ index 1a82e29..bfe87eb 100644
+ corenet_tcp_connect_osapi_compute_port(httpd_t)
')
diff --git a/apcupsd.fc b/apcupsd.fc
-index 5ec0e13..1c37fe1 100644
+index 5ec0e13..462acb8 100644
--- a/apcupsd.fc
+++ b/apcupsd.fc
-@@ -1,10 +1,13 @@
+@@ -1,10 +1,15 @@
++/etc/apcupsd/powerfail -- gen_context(system_u:object_r:apcupsd_power_t,s0)
++
/etc/rc\.d/init\.d/apcupsd -- gen_context(system_u:object_r:apcupsd_initrc_exec_t,s0)
+/usr/lib/systemd/system/apcupsd.* -- gen_context(system_u:object_r:apcupsd_unit_file_t,s0)
@@ -6976,7 +7260,7 @@ index 5ec0e13..1c37fe1 100644
/var/log/apcupsd\.events.* -- gen_context(system_u:object_r:apcupsd_log_t,s0)
/var/log/apcupsd\.status.* -- gen_context(system_u:object_r:apcupsd_log_t,s0)
diff --git a/apcupsd.if b/apcupsd.if
-index f3c0aba..b6afc90 100644
+index f3c0aba..cbe3d4a 100644
--- a/apcupsd.if
+++ b/apcupsd.if
@@ -125,6 +125,49 @@ interface(`apcupsd_cgi_script_domtrans',`
@@ -7029,11 +7313,12 @@ index f3c0aba..b6afc90 100644
## All of the rules required to
## administrate an apcupsd environment.
##
-@@ -144,11 +187,16 @@ interface(`apcupsd_admin',`
+@@ -144,11 +187,17 @@ interface(`apcupsd_admin',`
gen_require(`
type apcupsd_t, apcupsd_tmp_t, apcupsd_log_t;
type apcupsd_var_run_t, apcupsd_initrc_exec_t, apcupsd_lock_t;
+ type apcupsd_unit_file_t;
++ type apcupsd_power_t;
')
- allow $1 apcupsd_t:process { ptrace signal_perms };
@@ -7047,7 +7332,7 @@ index f3c0aba..b6afc90 100644
apcupsd_initrc_domtrans($1, apcupsd_initrc_exec_t)
domain_system_change_exemption($1)
role_transition $2 apcupsd_initrc_exec_t system_r;
-@@ -165,4 +213,8 @@ interface(`apcupsd_admin',`
+@@ -165,4 +214,11 @@ interface(`apcupsd_admin',`
files_list_pids($1)
admin_pattern($1, apcupsd_var_run_t)
@@ -7055,33 +7340,42 @@ index f3c0aba..b6afc90 100644
+ apcupsd_systemctl($1)
+ admin_pattern($1, apcupsd_unit_file_t)
+ allow $1 apcupsd_unit_file_t:service all_service_perms;
++
++ manage_files_pattern($1, apcupsd_power_t, apcupsd_power_t)
++ files_etc_filetrans(apcupsd_t, apcupsd_power_t, file, "powerfail")
')
diff --git a/apcupsd.te b/apcupsd.te
-index b236327..7b2142b 100644
+index b236327..a370cb8 100644
--- a/apcupsd.te
+++ b/apcupsd.te
-@@ -24,6 +24,9 @@ files_tmp_file(apcupsd_tmp_t)
+@@ -24,6 +24,12 @@ files_tmp_file(apcupsd_tmp_t)
type apcupsd_var_run_t;
files_pid_file(apcupsd_var_run_t)
++type apcupsd_power_t;
++files_type(apcupsd_power_t)
++
+type apcupsd_unit_file_t;
+systemd_unit_file(apcupsd_unit_file_t)
+
########################################
#
# Local policy
-@@ -38,9 +41,7 @@ allow apcupsd_t self:tcp_socket create_stream_socket_perms;
+@@ -38,9 +44,10 @@ allow apcupsd_t self:tcp_socket create_stream_socket_perms;
allow apcupsd_t apcupsd_lock_t:file manage_file_perms;
files_lock_filetrans(apcupsd_t, apcupsd_lock_t, file)
-append_files_pattern(apcupsd_t, apcupsd_log_t, apcupsd_log_t)
-create_files_pattern(apcupsd_t, apcupsd_log_t, apcupsd_log_t)
-setattr_files_pattern(apcupsd_t, apcupsd_log_t, apcupsd_log_t)
++manage_files_pattern(apcupsd_t, apcupsd_power_t, apcupsd_power_t)
++files_etc_filetrans(apcupsd_t, apcupsd_power_t, file, "powerfail")
++
+manage_files_pattern(apcupsd_t, apcupsd_log_t, apcupsd_log_t)
logging_log_filetrans(apcupsd_t, apcupsd_log_t, file)
manage_files_pattern(apcupsd_t, apcupsd_tmp_t, apcupsd_tmp_t)
-@@ -54,7 +55,6 @@ kernel_read_system_state(apcupsd_t)
+@@ -54,7 +61,6 @@ kernel_read_system_state(apcupsd_t)
corecmd_exec_bin(apcupsd_t)
corecmd_exec_shell(apcupsd_t)
@@ -7089,7 +7383,7 @@ index b236327..7b2142b 100644
corenet_all_recvfrom_netlabel(apcupsd_t)
corenet_tcp_sendrecv_generic_if(apcupsd_t)
corenet_tcp_sendrecv_generic_node(apcupsd_t)
-@@ -67,6 +67,8 @@ corenet_tcp_bind_apcupsd_port(apcupsd_t)
+@@ -67,6 +73,8 @@ corenet_tcp_bind_apcupsd_port(apcupsd_t)
corenet_sendrecv_apcupsd_server_packets(apcupsd_t)
corenet_tcp_sendrecv_apcupsd_port(apcupsd_t)
corenet_tcp_connect_apcupsd_port(apcupsd_t)
@@ -7098,7 +7392,7 @@ index b236327..7b2142b 100644
corenet_udp_bind_snmp_port(apcupsd_t)
corenet_sendrecv_snmp_server_packets(apcupsd_t)
-@@ -74,19 +76,25 @@ corenet_udp_sendrecv_snmp_port(apcupsd_t)
+@@ -74,19 +82,23 @@ corenet_udp_sendrecv_snmp_port(apcupsd_t)
dev_rw_generic_usb_dev(apcupsd_t)
@@ -7122,13 +7416,23 @@ index b236327..7b2142b 100644
sysnet_dns_name_resolve(apcupsd_t)
-userdom_use_user_ttys(apcupsd_t)
-+systemd_start_power_services(apcupsd_t)
-+
+userdom_use_inherited_user_ttys(apcupsd_t)
optional_policy(`
hostname_exec(apcupsd_t)
-@@ -112,7 +120,6 @@ optional_policy(`
+@@ -101,6 +113,11 @@ optional_policy(`
+ shutdown_domtrans(apcupsd_t)
+ ')
+
++optional_policy(`
++ systemd_start_power_services(apcupsd_t)
++ systemd_status_power_services(apcupsd_t)
++')
++
+ ########################################
+ #
+ # CGI local policy
+@@ -112,7 +129,6 @@ optional_policy(`
allow httpd_apcupsd_cgi_script_t self:tcp_socket create_stream_socket_perms;
allow httpd_apcupsd_cgi_script_t self:udp_socket create_socket_perms;
@@ -7195,7 +7499,7 @@ index 1a7a97e..1d29dce 100644
domain_system_change_exemption($1)
role_transition $2 apmd_initrc_exec_t system_r;
diff --git a/apm.te b/apm.te
-index 3590e2f..e1494bd 100644
+index 3590e2f..1d8a844 100644
--- a/apm.te
+++ b/apm.te
@@ -35,6 +35,9 @@ files_type(apmd_var_lib_t)
@@ -7226,7 +7530,15 @@ index 3590e2f..e1494bd 100644
allow apmd_t self:process { signal_perms getsession };
allow apmd_t self:fifo_file rw_fifo_file_perms;
allow apmd_t self:netlink_socket create_socket_perms;
-@@ -114,8 +117,7 @@ fs_dontaudit_getattr_all_files(apmd_t)
+@@ -90,6 +93,7 @@ kernel_read_kernel_sysctls(apmd_t)
+ kernel_rw_all_sysctls(apmd_t)
+ kernel_read_system_state(apmd_t)
+ kernel_write_proc_files(apmd_t)
++kernel_request_load_module(apmd_t)
+
+ dev_read_input(apmd_t)
+ dev_read_mouse(apmd_t)
+@@ -114,8 +118,7 @@ fs_dontaudit_getattr_all_files(apmd_t)
fs_dontaudit_getattr_all_symlinks(apmd_t)
fs_dontaudit_getattr_all_pipes(apmd_t)
fs_dontaudit_getattr_all_sockets(apmd_t)
@@ -7236,7 +7548,7 @@ index 3590e2f..e1494bd 100644
corecmd_exec_all_executables(apmd_t)
-@@ -129,6 +131,8 @@ domain_dontaudit_list_all_domains_state(apmd_t)
+@@ -129,6 +132,8 @@ domain_dontaudit_list_all_domains_state(apmd_t)
auth_use_nsswitch(apmd_t)
init_domtrans_script(apmd_t)
@@ -7245,7 +7557,7 @@ index 3590e2f..e1494bd 100644
libs_exec_ld_so(apmd_t)
libs_exec_lib_files(apmd_t)
-@@ -136,17 +140,16 @@ libs_exec_lib_files(apmd_t)
+@@ -136,17 +141,16 @@ libs_exec_lib_files(apmd_t)
logging_send_audit_msgs(apmd_t)
logging_send_syslog_msg(apmd_t)
@@ -7265,7 +7577,7 @@ index 3590e2f..e1494bd 100644
optional_policy(`
automount_domtrans(apmd_t)
-@@ -206,11 +209,15 @@ optional_policy(`
+@@ -206,11 +210,15 @@ optional_policy(`
')
optional_policy(`
@@ -7733,10 +8045,10 @@ index 0000000..316c324
+')
diff --git a/authconfig.te b/authconfig.te
new file mode 100644
-index 0000000..f2aa4e6
+index 0000000..362a049
--- /dev/null
+++ b/authconfig.te
-@@ -0,0 +1,32 @@
+@@ -0,0 +1,33 @@
+policy_module(authconfig, 1.0.0)
+
+########################################
@@ -7765,6 +8077,7 @@ index 0000000..f2aa4e6
+files_var_lib_filetrans(authconfig_t, authconfig_var_lib_t, { dir file lnk_file })
+
+domain_use_interactive_fds(authconfig_t)
++domain_named_filetrans(authconfig_t)
+
+init_domtrans_script(authconfig_t)
+
@@ -7878,7 +8191,7 @@ index 089430a..b0bed70 100644
+ allow $1 automount_unit_file_t:service all_service_perms;
')
diff --git a/automount.te b/automount.te
-index a579c3b..294b5f4 100644
+index a579c3b..f27656d 100644
--- a/automount.te
+++ b/automount.te
@@ -22,12 +22,16 @@ type automount_tmp_t;
@@ -7915,7 +8228,15 @@ index a579c3b..294b5f4 100644
files_search_boot(automount_t)
files_search_all(automount_t)
files_unmount_all_file_type_fs(automount_t)
-@@ -130,15 +132,18 @@ auth_use_nsswitch(automount_t)
+@@ -108,6 +110,7 @@ fs_manage_autofs_symlinks(automount_t)
+ fs_mount_all_fs(automount_t)
+ fs_mount_autofs(automount_t)
+ fs_read_nfs_files(automount_t)
++fs_read_nfs_symlinks(automount_t)
+ fs_search_all(automount_t)
+ fs_search_auto_mountpoints(automount_t)
+ fs_unmount_all_fs(automount_t)
+@@ -130,15 +133,18 @@ auth_use_nsswitch(automount_t)
logging_send_syslog_msg(automount_t)
logging_search_logs(automount_t)
@@ -7938,7 +8259,7 @@ index a579c3b..294b5f4 100644
fstools_domtrans(automount_t)
')
-@@ -160,3 +165,8 @@ optional_policy(`
+@@ -160,3 +166,8 @@ optional_policy(`
optional_policy(`
udev_read_db(automount_t)
')
@@ -8139,11 +8460,51 @@ index d6ceef4..c10d39c 100644
optional_policy(`
cron_system_entry(backup_t, backup_exec_t)
+diff --git a/bacula.if b/bacula.if
+index dcd774e..c240ffa 100644
+--- a/bacula.if
++++ b/bacula.if
+@@ -69,6 +69,7 @@ interface(`bacula_admin',`
+ type bacula_t, bacula_etc_t, bacula_log_t;
+ type bacula_spool_t, bacula_var_lib_t;
+ type bacula_var_run_t, bacula_initrc_exec_t;
++ attribute_role bacula_admin_roles;
+ ')
+
+ allow $1 bacula_t:process { ptrace signal_perms };
diff --git a/bacula.te b/bacula.te
-index 3beba2f..7ca4480 100644
+index 3beba2f..12cd4f6 100644
--- a/bacula.te
+++ b/bacula.te
-@@ -148,9 +148,7 @@ corenet_tcp_connect_hplip_port(bacula_admin_t)
+@@ -43,7 +43,7 @@ role bacula_admin_roles types bacula_admin_t;
+ # Local policy
+ #
+
+-allow bacula_t self:capability { dac_read_search dac_override chown fowner fsetid};
++allow bacula_t self:capability { dac_read_search dac_override chown fowner fsetid setgid setuid};
+ allow bacula_t self:process signal;
+ allow bacula_t self:fifo_file rw_fifo_file_perms;
+ allow bacula_t self:tcp_socket { accept listen };
+@@ -88,6 +88,10 @@ corenet_udp_bind_generic_node(bacula_t)
+ corenet_sendrecv_generic_server_packets(bacula_t)
+ corenet_udp_bind_generic_port(bacula_t)
+
++
++#TODO: check port labels for hplip a bacula
++corenet_tcp_bind_bacula_port(bacula_t)
++
+ corenet_sendrecv_hplip_server_packets(bacula_t)
+ corenet_tcp_bind_hplip_port(bacula_t)
+ corenet_udp_bind_hplip_port(bacula_t)
+@@ -105,6 +109,7 @@ files_read_all_symlinks(bacula_t)
+ fs_getattr_xattr_fs(bacula_t)
+ fs_list_all(bacula_t)
+
++auth_use_nsswitch(bacula_t)
+ auth_read_shadow(bacula_t)
+
+ logging_send_syslog_msg(bacula_t)
+@@ -148,9 +153,7 @@ corenet_tcp_connect_hplip_port(bacula_admin_t)
domain_use_interactive_fds(bacula_admin_t)
@@ -8259,13 +8620,14 @@ index 536ec3c..271b976 100644
-
-miscfiles_read_localization(bcfg2_t)
diff --git a/bind.fc b/bind.fc
-index 2b9a3a1..1742ebf 100644
+index 2b9a3a1..f755e6b 100644
--- a/bind.fc
+++ b/bind.fc
-@@ -1,54 +1,71 @@
+@@ -1,54 +1,75 @@
-/etc/rc\.d/init\.d/named -- gen_context(system_u:object_r:named_initrc_exec_t,s0)
-/etc/rc\.d/init\.d/unbound -- gen_context(system_u:object_r:named_initrc_exec_t,s0)
+/etc/rc\.d/init\.d/named -- gen_context(system_u:object_r:named_initrc_exec_t,s0)
++/etc/rc\.d/init\.d/named-sdb -- gen_context(system_u:object_r:named_initrc_exec_t,s0)
+/etc/rc\.d/init\.d/unbound -- gen_context(system_u:object_r:named_initrc_exec_t,s0)
-/etc/bind(/.*)? gen_context(system_u:object_r:named_zone_t,s0)
@@ -8288,12 +8650,14 @@ index 2b9a3a1..1742ebf 100644
+
+/usr/lib/systemd/system/unbound.* -- gen_context(system_u:object_r:named_unit_file_t,s0)
+/usr/lib/systemd/system/named.* -- gen_context(system_u:object_r:named_unit_file_t,s0)
++/usr/lib/systemd/system/named-sdb.* -- gen_context(system_u:object_r:named_unit_file_t,s0)
/usr/sbin/lwresd -- gen_context(system_u:object_r:named_exec_t,s0)
-/usr/sbin/named -- gen_context(system_u:object_r:named_exec_t,s0)
-/usr/sbin/named-checkconf -- gen_context(system_u:object_r:named_checkconf_exec_t,s0)
-/usr/sbin/r?ndc -- gen_context(system_u:object_r:ndc_exec_t,s0)
+/usr/sbin/named -- gen_context(system_u:object_r:named_exec_t,s0)
++/usr/sbin/named-sdb -- gen_context(system_u:object_r:named_exec_t,s0)
+/usr/sbin/named-checkconf -- gen_context(system_u:object_r:named_checkconf_exec_t,s0)
+/usr/sbin/r?ndc -- gen_context(system_u:object_r:ndc_exec_t,s0)
/usr/sbin/unbound -- gen_context(system_u:object_r:named_exec_t,s0)
@@ -8360,6 +8724,7 @@ index 2b9a3a1..1742ebf 100644
-/var/named/chroot/var/named/slaves(/.*)? gen_context(system_u:object_r:named_cache_t,s0)
-/var/named/chroot/var/named/data(/.*)? gen_context(system_u:object_r:named_cache_t,s0)
+/var/named/chroot/var/run/named.* gen_context(system_u:object_r:named_var_run_t,s0)
++/var/named/chroot/run/named.* gen_context(system_u:object_r:named_var_run_t,s0)
+/var/named/chroot/var/tmp(/.*)? gen_context(system_u:object_r:named_cache_t,s0)
+/var/named/chroot/var/named(/.*)? gen_context(system_u:object_r:named_zone_t,s0)
+/var/named/chroot/var/named/slaves(/.*)? gen_context(system_u:object_r:named_cache_t,s0)
@@ -9283,7 +9648,7 @@ index 02fefaa..fbcef10 100644
+ ')
')
diff --git a/boinc.te b/boinc.te
-index 7c92aa1..47619ff 100644
+index 7c92aa1..44edba7 100644
--- a/boinc.te
+++ b/boinc.te
@@ -1,11 +1,20 @@
@@ -9485,22 +9850,24 @@ index 7c92aa1..47619ff 100644
term_getattr_all_ptys(boinc_t)
term_getattr_unallocated_ttys(boinc_t)
-@@ -130,55 +151,67 @@ init_read_utmp(boinc_t)
+@@ -130,55 +151,69 @@ init_read_utmp(boinc_t)
logging_send_syslog_msg(boinc_t)
-miscfiles_read_fonts(boinc_t)
-miscfiles_read_localization(boinc_t)
++modutils_dontaudit_exec_insmod(boinc_t)
+
+-optional_policy(`
+- mta_send_mail(boinc_t)
+-')
+xserver_stream_connect(boinc_t)
optional_policy(`
- mta_send_mail(boinc_t)
+- sysnet_dns_name_resolve(boinc_t)
++ mta_send_mail(boinc_t)
')
--optional_policy(`
-- sysnet_dns_name_resolve(boinc_t)
--')
--
########################################
#
-# Project local policy
@@ -9694,6 +10061,217 @@ index 41f8251..57f094e 100644
optional_policy(`
mta_send_mail(httpd_bugzilla_script_t)
')
+diff --git a/bumblebee.fc b/bumblebee.fc
+new file mode 100644
+index 0000000..b5ee23b
+--- /dev/null
++++ b/bumblebee.fc
+@@ -0,0 +1,7 @@
++/etc/systemd/system/bumblebeed.* -- gen_context(system_u:object_r:bumblebee_unit_file_t,s0)
++
++/usr/lib/systemd/system/bumblebeed.* -- gen_context(system_u:object_r:bumblebee_unit_file_t,s0)
++
++/usr/sbin/bumblebeed -- gen_context(system_u:object_r:bumblebee_exec_t,s0)
++
++/var/run/bumblebee.* gen_context(system_u:object_r:bumblebee_var_run_t,s0)
+diff --git a/bumblebee.if b/bumblebee.if
+new file mode 100644
+index 0000000..de66654
+--- /dev/null
++++ b/bumblebee.if
+@@ -0,0 +1,121 @@
++## policy for bumblebee
++
++########################################
++##
++## Execute bumblebee in the bumblebee domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`bumblebee_domtrans',`
++ gen_require(`
++ type bumblebee_t, bumblebee_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, bumblebee_exec_t, bumblebee_t)
++')
++
++########################################
++##
++## Read bumblebee PID files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`bumblebee_read_pid_files',`
++ gen_require(`
++ type bumblebee_var_run_t;
++ ')
++
++ files_search_pids($1)
++ read_files_pattern($1, bumblebee_var_run_t, bumblebee_var_run_t)
++')
++
++########################################
++##
++## Execute bumblebee server in the bumblebee domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`bumblebee_systemctl',`
++ gen_require(`
++ type bumblebee_t;
++ type bumblebee_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 bumblebee_unit_file_t:file read_file_perms;
++ allow $1 bumblebee_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, bumblebee_t)
++')
++
++########################################
++##
++## Connect to bumblebee over a unix stream socket.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`bumblebee_stream_connect',`
++ gen_require(`
++ type bumblebee_t, bumblebee_var_run_t;
++ ')
++
++ files_search_pids($1)
++ stream_connect_pattern($1, bumblebee_var_run_t, bumblebee_var_run_t, bumblebee_t)
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an bumblebee environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`bumblebee_admin',`
++ gen_require(`
++ type bumblebee_t;
++ type bumblebee_var_run_t;
++ type bumblebee_unit_file_t;
++ ')
++
++ allow $1 bumblebee_t:process { signal_perms };
++ ps_process_pattern($1, bumblebee_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 bumblebee_t:process ptrace;
++ ')
++
++ files_search_pids($1)
++ admin_pattern($1, bumblebee_var_run_t)
++
++ bumblebee_systemctl($1)
++ admin_pattern($1, bumblebee_unit_file_t)
++ allow $1 bumblebee_unit_file_t:service all_service_perms;
++
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/bumblebee.te b/bumblebee.te
+new file mode 100644
+index 0000000..6e058fc
+--- /dev/null
++++ b/bumblebee.te
+@@ -0,0 +1,65 @@
++policy_module(bumblebee, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type bumblebee_t;
++type bumblebee_exec_t;
++init_daemon_domain(bumblebee_t, bumblebee_exec_t)
++
++type bumblebee_var_run_t;
++files_pid_file(bumblebee_var_run_t)
++
++type bumblebee_unit_file_t;
++systemd_unit_file(bumblebee_unit_file_t)
++
++########################################
++#
++# bumblebee local policy
++#
++
++allow bumblebee_t self:capability { setgid };
++allow bumblebee_t self:process { fork signal_perms };
++allow bumblebee_t self:fifo_file rw_fifo_file_perms;
++allow bumblebee_t self:unix_stream_socket create_stream_socket_perms;
++
++manage_dirs_pattern(bumblebee_t, bumblebee_var_run_t, bumblebee_var_run_t)
++manage_files_pattern(bumblebee_t, bumblebee_var_run_t, bumblebee_var_run_t)
++manage_sock_files_pattern(bumblebee_t, bumblebee_var_run_t, bumblebee_var_run_t)
++manage_lnk_files_pattern(bumblebee_t, bumblebee_var_run_t, bumblebee_var_run_t)
++files_pid_filetrans(bumblebee_t, bumblebee_var_run_t, { dir file lnk_file sock_file })
++
++kernel_read_system_state(bumblebee_t)
++kernel_dontaudit_access_check_proc(bumblebee_t)
++kernel_manage_debugfs(bumblebee_t)
++
++corecmd_exec_shell(bumblebee_t)
++corecmd_exec_bin(bumblebee_t)
++
++dev_read_sysfs(bumblebee_t)
++
++auth_read_passwd(bumblebee_t)
++
++logging_send_syslog_msg(bumblebee_t)
++
++modutils_domtrans_insmod(bumblebee_t)
++modutils_signal_insmod(bumblebee_t)
++
++sysnet_dns_name_resolve(bumblebee_t)
++
++xserver_domtrans(bumblebee_t)
++xserver_kill(bumblebee_t)
++xserver_signal(bumblebee_t)
++xserver_stream_connect(bumblebee_t)
++xserver_manage_xkb_libs(bumblebee_t)
++corenet_tcp_connect_xserver_port(bumblebee_t)
++
++optional_policy(`
++ apm_stream_connect(bumblebee_t)
++')
++
++optional_policy(`
++ unconfined_domain(bumblebee_t)
++')
diff --git a/cachefilesd.fc b/cachefilesd.fc
index 648c790..aa03fc8 100644
--- a/cachefilesd.fc
@@ -9972,6 +10550,19 @@ index 581c8ef..2c71b1d 100644
+dev_search_sysfs(cachefiles_kernel_t)
+
+init_sigchld_script(cachefiles_kernel_t)
+diff --git a/calamaris.if b/calamaris.if
+index cd9c528..ba793b7 100644
+--- a/calamaris.if
++++ b/calamaris.if
+@@ -42,7 +42,7 @@ interface(`calamaris_run',`
+ attribute_role calamaris_roles;
+ ')
+
+- lightsquid_domtrans($1)
++ calamaris_domtrans($1)
+ roleattribute $2 calamaris_roles;
+ ')
+
diff --git a/calamaris.te b/calamaris.te
index f4f21d3..de28437 100644
--- a/calamaris.te
@@ -10279,7 +10870,7 @@ index 008f8ef..144c074 100644
admin_pattern($1, certmonger_var_run_t)
')
diff --git a/certmonger.te b/certmonger.te
-index 2354e21..fb8c9ed 100644
+index 2354e21..b2b0a2f 100644
--- a/certmonger.te
+++ b/certmonger.te
@@ -18,6 +18,9 @@ files_type(certmonger_var_lib_t)
@@ -10316,7 +10907,7 @@ index 2354e21..fb8c9ed 100644
corenet_all_recvfrom_unlabeled(certmonger_t)
corenet_all_recvfrom_netlabel(certmonger_t)
-@@ -49,16 +55,21 @@ corenet_tcp_sendrecv_generic_node(certmonger_t)
+@@ -49,17 +55,25 @@ corenet_tcp_sendrecv_generic_node(certmonger_t)
corenet_sendrecv_certmaster_client_packets(certmonger_t)
corenet_tcp_connect_certmaster_port(certmonger_t)
@@ -10324,6 +10915,8 @@ index 2354e21..fb8c9ed 100644
+corenet_tcp_connect_http_port(certmonger_t)
+corenet_tcp_connect_http_cache_port(certmonger_t)
+
++corenet_tcp_connect_ldap_port(certmonger_t)
++
+corenet_tcp_connect_pki_ca_port(certmonger_t)
corenet_tcp_sendrecv_certmaster_port(certmonger_t)
@@ -10337,9 +10930,11 @@ index 2354e21..fb8c9ed 100644
-files_read_usr_files(certmonger_t)
files_list_tmp(certmonger_t)
++files_list_home(certmonger_t)
fs_search_cgroup_dirs(certmonger_t)
-@@ -70,16 +81,17 @@ init_getattr_all_script_files(certmonger_t)
+
+@@ -70,16 +84,18 @@ init_getattr_all_script_files(certmonger_t)
logging_send_syslog_msg(certmonger_t)
@@ -10349,6 +10944,7 @@ index 2354e21..fb8c9ed 100644
+systemd_exec_systemctl(certmonger_t)
+
userdom_search_user_home_content(certmonger_t)
++userdom_manage_home_certs(certmonger_t)
optional_policy(`
- apache_initrc_domtrans(certmonger_t)
@@ -10359,7 +10955,7 @@ index 2354e21..fb8c9ed 100644
')
optional_policy(`
-@@ -92,11 +104,47 @@ optional_policy(`
+@@ -92,11 +108,51 @@ optional_policy(`
')
optional_policy(`
@@ -10370,6 +10966,10 @@ index 2354e21..fb8c9ed 100644
+')
+
+optional_policy(`
++ ipa_manage_lib(certmonger_t)
++')
++
++optional_policy(`
kerberos_use(certmonger_t)
+ kerberos_read_keytab(certmonger_t)
')
@@ -10381,7 +10981,7 @@ index 2354e21..fb8c9ed 100644
+
+optional_policy(`
+ pki_rw_tomcat_cert(certmonger_t)
-+ pki_read_tomcat_lib_files(certmonger_t)
++ pki_read_tomcat_lib_files(certmonger_t)
+')
+
+########################################
@@ -10621,7 +11221,7 @@ index 85ca63f..1d1c99c 100644
admin_pattern($1, { cgconfig_etc_t cgrules_etc_t })
files_list_etc($1)
diff --git a/cgroup.te b/cgroup.te
-index fdee107..7a38b63 100644
+index fdee107..a4c2efb 100644
--- a/cgroup.te
+++ b/cgroup.te
@@ -25,8 +25,8 @@ files_pid_file(cgred_var_run_t)
@@ -10649,7 +11249,7 @@ index fdee107..7a38b63 100644
domain_setpriority_all_domains(cgclear_t)
fs_manage_cgroup_dirs(cgclear_t)
-@@ -64,20 +66,21 @@ allow cgconfig_t cgconfig_etc_t:file read_file_perms;
+@@ -64,23 +66,25 @@ allow cgconfig_t cgconfig_etc_t:file read_file_perms;
kernel_list_unlabeled(cgconfig_t)
kernel_read_system_state(cgconfig_t)
@@ -10674,13 +11274,19 @@ index fdee107..7a38b63 100644
allow cgred_t self:netlink_socket { write bind create read };
allow cgred_t self:unix_dgram_socket { write create connect };
-@@ -99,10 +102,10 @@ domain_setpriority_all_domains(cgred_t)
++allow cgred_t cgconfig_etc_t:file read_file_perms;
+ allow cgred_t cgrules_etc_t:file read_file_perms;
+
+ allow cgred_t cgred_log_t:file { append_file_perms create_file_perms setattr_file_perms };
+@@ -99,10 +103,11 @@ domain_setpriority_all_domains(cgred_t)
files_getattr_all_files(cgred_t)
files_getattr_all_sockets(cgred_t)
files_read_all_symlinks(cgred_t)
-files_read_etc_files(cgred_t)
- fs_write_cgroup_files(cgred_t)
+-fs_write_cgroup_files(cgred_t)
++fs_manage_cgroup_dirs(cgred_t)
++fs_manage_cgroup_files(cgred_t)
+fs_list_inotifyfs(cgred_t)
-logging_send_syslog_msg(cgred_t)
@@ -10705,10 +11311,10 @@ index 0000000..57866f6
+HOME_DIR/\.cache/chromium(/.*)? gen_context(system_u:object_r:chrome_sandbox_home_t,s0)
diff --git a/chrome.if b/chrome.if
new file mode 100644
-index 0000000..5977d96
+index 0000000..23407b8
--- /dev/null
+++ b/chrome.if
-@@ -0,0 +1,134 @@
+@@ -0,0 +1,137 @@
+
+## policy for chrome
+
@@ -10732,6 +11338,9 @@ index 0000000..5977d96
+
+ allow $1 chrome_sandbox_t:fd use;
+
++ dontaudit chrome_sandbox_t $1:socket_class_set getattr;
++ allow chrome_sandbox_t $1:unix_stream_socket rw_socket_perms;
++
+ ifdef(`hide_broken_symptoms',`
+ fs_dontaudit_rw_anon_inodefs_files(chrome_sandbox_t)
+ ')
@@ -10845,10 +11454,10 @@ index 0000000..5977d96
+')
diff --git a/chrome.te b/chrome.te
new file mode 100644
-index 0000000..406f3a0
+index 0000000..fb60ffc
--- /dev/null
+++ b/chrome.te
-@@ -0,0 +1,242 @@
+@@ -0,0 +1,248 @@
+policy_module(chrome,1.0.0)
+
+########################################
@@ -10977,6 +11586,8 @@ index 0000000..406f3a0
+userdom_manage_home_certs(chrome_sandbox_t)
+
+optional_policy(`
++ gnome_exec_config_home_files(chrome_sandbox_t)
++ gnome_read_generic_cache_files(chrome_sandbox_t)
+ gnome_rw_inherited_config(chrome_sandbox_t)
+ gnome_read_home_config(chrome_sandbox_t)
+ gnome_cache_filetrans(chrome_sandbox_t, chrome_sandbox_home_t, dir, "chromium")
@@ -11025,6 +11636,10 @@ index 0000000..406f3a0
+')
+
+optional_policy(`
++ bumblebee_stream_connect(chrome_sandbox_t)
++')
++
++optional_policy(`
+ cups_stream_connect(chrome_sandbox_t)
+')
+
@@ -11824,14 +12439,15 @@ index 29782b8..685edff 100644
')
diff --git a/cloudform.fc b/cloudform.fc
new file mode 100644
-index 0000000..3a0de96
+index 0000000..6cc6774
--- /dev/null
+++ b/cloudform.fc
-@@ -0,0 +1,27 @@
+@@ -0,0 +1,28 @@
+/etc/rc\.d/init\.d/iwhd -- gen_context(system_u:object_r:iwhd_initrc_exec_t,s0)
+/etc/rc\.d/init\.d/mongod -- gen_context(system_u:object_r:mongod_initrc_exec_t,s0)
+
+/usr/bin/cloud-init -- gen_context(system_u:object_r:cloud_init_exec_t,s0)
++/usr/libexec/min-metadata-service -- gen_context(system_u:object_r:cloud_init_exec_t,s0)
+/usr/bin/deltacloudd -- gen_context(system_u:object_r:deltacloudd_exec_t,s0)
+/usr/bin/iwhd -- gen_context(system_u:object_r:iwhd_exec_t,s0)
+/usr/bin/mongod -- gen_context(system_u:object_r:mongod_exec_t,s0)
@@ -11843,7 +12459,7 @@ index 0000000..3a0de96
+/usr/lib/systemd/system/cloud-init.* -- gen_context(system_u:object_r:cloud_init_unit_file_t,s0)
+
+/var/lib/cloud(/.*)? gen_context(system_u:object_r:cloud_var_lib_t,s0)
-+/var/log/cloud-init\.log -- gen_context(system_u:object_r:cloud_log_t,s0)
++/var/log/cloud-init\.log.* -- gen_context(system_u:object_r:cloud_log_t,s0)
+/var/lib/iwhd(/.*)? gen_context(system_u:object_r:iwhd_var_lib_t,s0)
+/var/lib/mongo.* gen_context(system_u:object_r:mongod_var_lib_t,s0)
+
@@ -11905,10 +12521,10 @@ index 0000000..8ac848b
+')
diff --git a/cloudform.te b/cloudform.te
new file mode 100644
-index 0000000..4e41e84
+index 0000000..786d623
--- /dev/null
+++ b/cloudform.te
-@@ -0,0 +1,298 @@
+@@ -0,0 +1,299 @@
+policy_module(cloudform, 1.0)
+########################################
+#
@@ -12072,6 +12688,7 @@ index 0000000..4e41e84
+
+optional_policy(`
+ rpm_domtrans(cloud_init_t)
++ rpm_transition_script(cloud_init_t)
+ unconfined_domain(cloud_init_t)
+')
+
@@ -12240,7 +12857,7 @@ index cc4e7cb..f348d27 100644
domain_system_change_exemption($1)
role_transition $2 cmirrord_initrc_exec_t system_r;
diff --git a/cmirrord.te b/cmirrord.te
-index d8e9958..d2303a4 100644
+index d8e9958..e4c023c 100644
--- a/cmirrord.te
+++ b/cmirrord.te
@@ -23,7 +23,7 @@ files_pid_file(cmirrord_var_run_t)
@@ -12252,13 +12869,14 @@ index d8e9958..d2303a4 100644
dontaudit cmirrord_t self:capability sys_tty_config;
allow cmirrord_t self:process { setfscreate signal };
allow cmirrord_t self:fifo_file rw_fifo_file_perms;
-@@ -42,16 +42,17 @@ files_pid_filetrans(cmirrord_t, cmirrord_var_run_t, file)
+@@ -42,16 +42,18 @@ files_pid_filetrans(cmirrord_t, cmirrord_var_run_t, file)
domain_use_interactive_fds(cmirrord_t)
domain_obj_id_change_exemption(cmirrord_t)
-files_read_etc_files(cmirrord_t)
-
storage_create_fixed_disk_dev(cmirrord_t)
++storage_raw_read_fixed_disk(cmirrord_t)
+storage_rw_inherited_fixed_disk_dev(cmirrord_t)
seutil_read_file_contexts(cmirrord_t)
@@ -12356,7 +12974,7 @@ index c223f81..8b567c1 100644
- admin_pattern($1, { httpd_cobbler_content_t httpd_cobbler_content_ra_t httpd_cobbler_content_rw_t })
')
diff --git a/cobbler.te b/cobbler.te
-index 2a71346..8c4ac39 100644
+index 2a71346..3a38b11 100644
--- a/cobbler.te
+++ b/cobbler.te
@@ -81,6 +81,7 @@ manage_dirs_pattern(cobblerd_t, cobbler_var_lib_t, cobbler_var_lib_t)
@@ -12405,23 +13023,42 @@ index 2a71346..8c4ac39 100644
')
optional_policy(`
-+ apache_domtrans(cobblerd_t)
++ apache_domtrans(cobblerd_t)
apache_search_sys_content(cobblerd_t)
')
-@@ -188,17 +191,25 @@ optional_policy(`
+@@ -170,6 +173,7 @@ optional_policy(`
+ bind_domtrans(cobblerd_t)
+ bind_initrc_domtrans(cobblerd_t)
+ bind_manage_zone(cobblerd_t)
++ bind_systemctl(cobblerd_t)
')
optional_policy(`
-+ libs_exec_ldconfig(cobblerd_t)
+@@ -179,12 +183,22 @@ optional_policy(`
+ optional_policy(`
+ dhcpd_domtrans(cobblerd_t)
+ dhcpd_initrc_domtrans(cobblerd_t)
++ dhcpd_systemctl(cobblerd_t)
+ ')
+
+ optional_policy(`
+ dnsmasq_domtrans(cobblerd_t)
+ dnsmasq_initrc_domtrans(cobblerd_t)
+ dnsmasq_write_config(cobblerd_t)
++ dnsmasq_systemctl(cobblerd_t)
+')
+
+optional_policy(`
-+ mysql_stream_connect(cobblerd_t)
++ libs_exec_ldconfig(cobblerd_t)
+')
+
+optional_policy(`
- rpm_exec(cobblerd_t)
++ mysql_stream_connect(cobblerd_t)
+ ')
+
+ optional_policy(`
+@@ -192,13 +206,13 @@ optional_policy(`
')
optional_policy(`
@@ -12633,10 +13270,10 @@ index 954309e..f4db2ca 100644
')
+
diff --git a/collectd.te b/collectd.te
-index 6471fa8..dc0423c 100644
+index 6471fa8..6ade0ea 100644
--- a/collectd.te
+++ b/collectd.te
-@@ -26,8 +26,14 @@ files_type(collectd_var_lib_t)
+@@ -26,18 +26,27 @@ files_type(collectd_var_lib_t)
type collectd_var_run_t;
files_pid_file(collectd_var_run_t)
@@ -12651,7 +13288,11 @@ index 6471fa8..dc0423c 100644
########################################
#
# Local policy
-@@ -38,6 +44,9 @@ allow collectd_t self:process { getsched setsched signal };
+ #
+
+-allow collectd_t self:capability { ipc_lock sys_nice };
++allow collectd_t self:capability { ipc_lock net_admin sys_nice };
+ allow collectd_t self:process { getsched setsched signal };
allow collectd_t self:fifo_file rw_fifo_file_perms;
allow collectd_t self:packet_socket create_socket_perms;
allow collectd_t self:unix_stream_socket { accept listen };
@@ -12669,13 +13310,13 @@ index 6471fa8..dc0423c 100644
+kernel_read_all_sysctls(collectd_t)
+kernel_read_all_proc(collectd_t)
+kernel_list_all_proc(collectd_t)
-+
-+auth_getattr_passwd(collectd_t)
-+auth_read_passwd(collectd_t)
-kernel_read_network_state(collectd_t)
-kernel_read_net_sysctls(collectd_t)
-kernel_read_system_state(collectd_t)
++auth_getattr_passwd(collectd_t)
++auth_read_passwd(collectd_t)
++
+corenet_udp_bind_generic_node(collectd_t)
+corenet_udp_bind_collectd_port(collectd_t)
@@ -12697,15 +13338,20 @@ index 6471fa8..dc0423c 100644
logging_send_syslog_msg(collectd_t)
-@@ -75,16 +89,26 @@ tunable_policy(`collectd_tcp_network_connect',`
+@@ -75,16 +89,31 @@ tunable_policy(`collectd_tcp_network_connect',`
')
optional_policy(`
++ mysql_stream_connect(collectd_t)
++')
++
++optional_policy(`
+ netutils_domtrans_ping(collectd_t)
+')
+
+optional_policy(`
virt_read_config(collectd_t)
++ virt_stream_connect(collectd_t)
')
########################################
@@ -12963,10 +13609,10 @@ index 23dc348..c4450f7 100644
/var/lib/condor/execute(/.*)? gen_context(system_u:object_r:condor_var_lib_t,s0)
diff --git a/condor.if b/condor.if
-index 3fe3cb8..5fe84a6 100644
+index 3fe3cb8..e979b3d 100644
--- a/condor.if
+++ b/condor.if
-@@ -1,81 +1,397 @@
+@@ -1,81 +1,396 @@
-## High-Throughput Computing System.
+
+## policy for condor
@@ -13021,13 +13667,13 @@ index 3fe3cb8..5fe84a6 100644
+##
+##
+#
-+interface(`condor_domtrans',`
++interface(`condor_domtrans_master',`
+ gen_require(`
-+ type condor_t, condor_exec_t;
++ type condor_master_t, condor_master_exec_t;
+ ')
+
+ corecmd_search_bin($1)
-+ domtrans_pattern($1, condor_exec_t, condor_t)
++ domtrans_pattern($1, condor_master_exec_t, condor_master_t)
+')
+
+#######################################
@@ -13308,7 +13954,7 @@ index 3fe3cb8..5fe84a6 100644
+#
+interface(`condor_systemctl',`
+ gen_require(`
-+ type condor_t;
++ type condor_domain;
+ type condor_unit_file_t;
+ ')
+
@@ -13317,10 +13963,9 @@ index 3fe3cb8..5fe84a6 100644
+ allow $1 condor_unit_file_t:file read_file_perms;
+ allow $1 condor_unit_file_t:service manage_service_perms;
+
-+ ps_process_pattern($1, condor_t)
+ ps_process_pattern($1, condor_domain)
+')
+
-+
+#######################################
+##
+## Read and write condor_startd server TCP sockets.
@@ -13335,7 +13980,11 @@ index 3fe3cb8..5fe84a6 100644
+ gen_require(`
+ type condor_startd_t;
+ ')
-+
+
+- init_labeled_script_domtrans($1, condor_initrc_exec_t)
+- domain_system_change_exemption($1)
+- role_transition $2 condor_initrc_exec_t system_r;
+- allow $2 system_r;
+ allow $1 condor_startd_t:tcp_socket rw_socket_perms;
+')
+
@@ -13383,12 +14032,8 @@ index 3fe3cb8..5fe84a6 100644
+ ')
+
+ allow $1 condor_domain:process { signal_perms };
- ps_process_pattern($1, condor_domain)
-
-- init_labeled_script_domtrans($1, condor_initrc_exec_t)
-- domain_system_change_exemption($1)
-- role_transition $2 condor_initrc_exec_t system_r;
-- allow $2 system_r;
++ ps_process_pattern($1, condor_domain)
++
+ init_labeled_script_domtrans($1, condor_initrc_exec_t)
+ domain_system_change_exemption($1)
+ role_transition $2 condor_initrc_exec_t system_r;
@@ -13404,7 +14049,7 @@ index 3fe3cb8..5fe84a6 100644
files_search_var_lib($1)
admin_pattern($1, condor_var_lib_t)
-@@ -85,4 +401,13 @@ interface(`condor_admin',`
+@@ -85,4 +400,13 @@ interface(`condor_admin',`
files_search_tmp($1)
admin_pattern($1, { condor_schedd_tmp_t condor_startd_tmp_t })
@@ -13419,7 +14064,7 @@ index 3fe3cb8..5fe84a6 100644
+ ')
')
diff --git a/condor.te b/condor.te
-index 3f2b672..ff94f23 100644
+index 3f2b672..8fb887d 100644
--- a/condor.te
+++ b/condor.te
@@ -34,6 +34,9 @@ files_tmp_file(condor_startd_tmp_t)
@@ -13469,7 +14114,11 @@ index 3f2b672..ff94f23 100644
logging_log_filetrans(condor_domain, condor_log_t, { dir file })
manage_dirs_pattern(condor_domain, condor_var_lib_t, condor_var_lib_t)
-@@ -86,13 +98,10 @@ allow condor_domain condor_master_t:tcp_socket getattr;
+@@ -83,16 +95,14 @@ files_pid_filetrans(condor_domain, condor_var_run_t, { dir file fifo_file })
+
+ allow condor_domain condor_master_t:process signull;
+ allow condor_domain condor_master_t:tcp_socket getattr;
++allow condor_domain condor_master_t:udp_socket { read write };
kernel_read_kernel_sysctls(condor_domain)
kernel_read_network_state(condor_domain)
@@ -13483,7 +14132,7 @@ index 3f2b672..ff94f23 100644
corenet_tcp_sendrecv_generic_if(condor_domain)
corenet_tcp_sendrecv_generic_node(condor_domain)
-@@ -106,9 +115,9 @@ dev_read_rand(condor_domain)
+@@ -106,9 +116,9 @@ dev_read_rand(condor_domain)
dev_read_sysfs(condor_domain)
dev_read_urand(condor_domain)
@@ -13495,7 +14144,7 @@ index 3f2b672..ff94f23 100644
tunable_policy(`condor_tcp_network_connect',`
corenet_sendrecv_all_client_packets(condor_domain)
-@@ -125,7 +134,7 @@ optional_policy(`
+@@ -125,7 +135,7 @@ optional_policy(`
# Master local policy
#
@@ -13504,7 +14153,7 @@ index 3f2b672..ff94f23 100644
allow condor_master_t condor_domain:process { sigkill signal };
-@@ -133,6 +142,10 @@ manage_dirs_pattern(condor_master_t, condor_master_tmp_t, condor_master_tmp_t)
+@@ -133,6 +143,10 @@ manage_dirs_pattern(condor_master_t, condor_master_tmp_t, condor_master_tmp_t)
manage_files_pattern(condor_master_t, condor_master_tmp_t, condor_master_tmp_t)
files_tmp_filetrans(condor_master_t, condor_master_tmp_t, { file dir })
@@ -13515,7 +14164,7 @@ index 3f2b672..ff94f23 100644
corenet_udp_sendrecv_generic_if(condor_master_t)
corenet_udp_sendrecv_generic_node(condor_master_t)
corenet_tcp_bind_generic_node(condor_master_t)
-@@ -152,6 +165,8 @@ domain_read_all_domains_state(condor_master_t)
+@@ -152,6 +166,8 @@ domain_read_all_domains_state(condor_master_t)
auth_use_nsswitch(condor_master_t)
@@ -13524,7 +14173,7 @@ index 3f2b672..ff94f23 100644
optional_policy(`
mta_send_mail(condor_master_t)
mta_read_config(condor_master_t)
-@@ -169,6 +184,8 @@ allow condor_collector_t condor_master_t:udp_socket rw_socket_perms;
+@@ -169,6 +185,8 @@ allow condor_collector_t condor_master_t:udp_socket rw_socket_perms;
kernel_read_network_state(condor_collector_t)
@@ -13533,7 +14182,7 @@ index 3f2b672..ff94f23 100644
#####################################
#
# Negotiator local policy
-@@ -178,6 +195,8 @@ allow condor_negotiator_t self:capability { setuid setgid };
+@@ -178,6 +196,8 @@ allow condor_negotiator_t self:capability { setuid setgid };
allow condor_negotiator_t condor_master_t:tcp_socket rw_stream_socket_perms;
allow condor_negotiator_t condor_master_t:udp_socket getattr;
@@ -13542,7 +14191,7 @@ index 3f2b672..ff94f23 100644
######################################
#
# Procd local policy
-@@ -185,7 +204,8 @@ allow condor_negotiator_t condor_master_t:udp_socket getattr;
+@@ -185,7 +205,8 @@ allow condor_negotiator_t condor_master_t:udp_socket getattr;
allow condor_procd_t self:capability { fowner chown kill dac_override sys_ptrace };
@@ -13552,7 +14201,7 @@ index 3f2b672..ff94f23 100644
domain_read_all_domains_state(condor_procd_t)
-@@ -201,6 +221,8 @@ allow condor_schedd_t condor_master_t:udp_socket getattr;
+@@ -201,6 +222,8 @@ allow condor_schedd_t condor_master_t:udp_socket getattr;
allow condor_schedd_t condor_var_lock_t:dir manage_file_perms;
@@ -13561,7 +14210,7 @@ index 3f2b672..ff94f23 100644
domtrans_pattern(condor_schedd_t, condor_procd_exec_t, condor_procd_t)
domtrans_pattern(condor_schedd_t, condor_startd_exec_t, condor_startd_t)
-@@ -209,6 +231,8 @@ manage_files_pattern(condor_schedd_t, condor_schedd_tmp_t, condor_schedd_tmp_t)
+@@ -209,6 +232,8 @@ manage_files_pattern(condor_schedd_t, condor_schedd_tmp_t, condor_schedd_tmp_t)
relabel_files_pattern(condor_schedd_t, condor_schedd_tmp_t, condor_schedd_tmp_t)
files_tmp_filetrans(condor_schedd_t, condor_schedd_tmp_t, { file dir })
@@ -13570,7 +14219,7 @@ index 3f2b672..ff94f23 100644
#####################################
#
# Startd local policy
-@@ -233,11 +257,10 @@ domain_read_all_domains_state(condor_startd_t)
+@@ -233,11 +258,10 @@ domain_read_all_domains_state(condor_startd_t)
mcs_process_set_categories(condor_startd_t)
init_domtrans_script(condor_startd_t)
@@ -13583,7 +14232,7 @@ index 3f2b672..ff94f23 100644
optional_policy(`
ssh_basic_client_template(condor_startd, condor_startd_t, system_r)
ssh_domtrans(condor_startd_t)
-@@ -249,3 +272,7 @@ optional_policy(`
+@@ -249,3 +273,7 @@ optional_policy(`
kerberos_use(condor_startd_ssh_t)
')
')
@@ -13591,6 +14240,218 @@ index 3f2b672..ff94f23 100644
+optional_policy(`
+ unconfined_domain(condor_startd_t)
+')
+diff --git a/conman.fc b/conman.fc
+new file mode 100644
+index 0000000..5f97ba9
+--- /dev/null
++++ b/conman.fc
+@@ -0,0 +1,7 @@
++/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)
++
++/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)
++
+diff --git a/conman.if b/conman.if
+new file mode 100644
+index 0000000..54b4b04
+--- /dev/null
++++ b/conman.if
+@@ -0,0 +1,142 @@
++## Conman is a program for connecting to remote consoles being managed by conmand
++
++########################################
++##
++## Execute conman in the conman domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`conman_domtrans',`
++ gen_require(`
++ type conman_t, conman_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, conman_exec_t, conman_t)
++')
++
++########################################
++##
++## Read conman's log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`conman_read_log',`
++ gen_require(`
++ type conman_log_t;
++ ')
++
++ logging_search_logs($1)
++ read_files_pattern($1, conman_log_t, conman_log_t)
++')
++
++########################################
++##
++## Append to conman log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`conman_append_log',`
++ gen_require(`
++ type conman_log_t;
++ ')
++
++ logging_search_logs($1)
++ append_files_pattern($1, conman_log_t, conman_log_t)
++')
++
++########################################
++##
++## Manage conman log files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`conman_manage_log',`
++ gen_require(`
++ type conman_log_t;
++ ')
++
++ logging_search_logs($1)
++ manage_dirs_pattern($1, conman_log_t, conman_log_t)
++ manage_files_pattern($1, conman_log_t, conman_log_t)
++')
++
++########################################
++##
++## Execute conman server in the conman domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`conman_systemctl',`
++ gen_require(`
++ type conman_t;
++ type conman_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 conman_unit_file_t:file read_file_perms;
++ allow $1 conman_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, conman_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an conman environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`conman_admin',`
++ gen_require(`
++ type conman_t;
++ type conman_log_t;
++ type conman_unit_file_t;
++ ')
++
++ allow $1 conman_t:process { signal_perms };
++ ps_process_pattern($1, conman_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 conman_t:process ptrace;
++ ')
++
++ logging_search_logs($1)
++ admin_pattern($1, conman_log_t)
++
++ conman_systemctl($1)
++ admin_pattern($1, conman_unit_file_t)
++ allow $1 conman_unit_file_t:service all_service_perms;
++
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/conman.te b/conman.te
+new file mode 100644
+index 0000000..0de2d4d
+--- /dev/null
++++ b/conman.te
+@@ -0,0 +1,45 @@
++policy_module(conman, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type conman_t;
++type conman_exec_t;
++init_daemon_domain(conman_t, conman_exec_t)
++
++type conman_log_t;
++logging_log_file(conman_log_t)
++
++type conman_unit_file_t;
++systemd_unit_file(conman_unit_file_t)
++
++########################################
++#
++# conman local policy
++#
++
++allow conman_t self:capability { sys_tty_config };
++allow conman_t self:process { setrlimit signal_perms };
++
++allow conman_t self:fifo_file rw_fifo_file_perms;
++allow conman_t self:unix_stream_socket create_stream_socket_perms;
++allow conman_t self:tcp_socket { listen create_socket_perms };
++
++manage_dirs_pattern(conman_t, conman_log_t, conman_log_t)
++manage_files_pattern(conman_t, conman_log_t, conman_log_t)
++logging_log_filetrans(conman_t, conman_log_t, { dir })
++
++corenet_tcp_bind_generic_node(conman_t)
++corenet_tcp_bind_conman_port(conman_t)
++
++corecmd_exec_bin(conman_t)
++
++auth_read_passwd(conman_t)
++
++logging_send_syslog_msg(conman_t)
++
++optional_policy(`
++ freeipmi_stream_connect(conman_t)
++')
diff --git a/consolekit.fc b/consolekit.fc
index 23c9558..29e5fd3 100644
--- a/consolekit.fc
@@ -13724,10 +14585,10 @@ index 5b830ec..0647a3b 100644
+ ps_process_pattern($1, consolekit_t)
+')
diff --git a/consolekit.te b/consolekit.te
-index 5f0c793..d11e25b 100644
+index 5f0c793..580dff0 100644
--- a/consolekit.te
+++ b/consolekit.te
-@@ -19,12 +19,16 @@ type consolekit_var_run_t;
+@@ -19,21 +19,23 @@ type consolekit_var_run_t;
files_pid_file(consolekit_var_run_t)
init_daemon_run_dir(consolekit_var_run_t, "ConsoleKit")
@@ -13744,7 +14605,19 @@ index 5f0c793..d11e25b 100644
allow consolekit_t self:process { getsched signal };
allow consolekit_t self:fifo_file rw_fifo_file_perms;
allow consolekit_t self:unix_stream_socket { accept listen };
-@@ -54,37 +58,36 @@ dev_read_sysfs(consolekit_t)
+
+-create_files_pattern(consolekit_t, consolekit_log_t, consolekit_log_t)
+-append_files_pattern(consolekit_t, consolekit_log_t, consolekit_log_t)
+-read_files_pattern(consolekit_t, consolekit_log_t, consolekit_log_t)
+-setattr_files_pattern(consolekit_t, consolekit_log_t, consolekit_log_t)
+-logging_log_filetrans(consolekit_t, consolekit_log_t, file)
++manage_dirs_pattern(consolekit_t, consolekit_log_t, consolekit_log_t)
++manage_files_pattern(consolekit_t, consolekit_log_t, consolekit_log_t)
++logging_log_filetrans(consolekit_t, consolekit_log_t, { dir file })
+
+ manage_dirs_pattern(consolekit_t, consolekit_var_run_t, consolekit_var_run_t)
+ manage_files_pattern(consolekit_t, consolekit_var_run_t, consolekit_var_run_t)
+@@ -54,37 +56,36 @@ dev_read_sysfs(consolekit_t)
domain_read_all_domains_state(consolekit_t)
domain_use_interactive_fds(consolekit_t)
@@ -13791,7 +14664,7 @@ index 5f0c793..d11e25b 100644
')
ifdef(`distro_debian',`
-@@ -112,13 +115,6 @@ optional_policy(`
+@@ -112,13 +113,6 @@ optional_policy(`
')
')
@@ -14021,7 +14894,7 @@ index c086302..4f33119 100644
/etc/rc\.d/init\.d/couchdb -- gen_context(system_u:object_r:couchdb_initrc_exec_t,s0)
diff --git a/couchdb.if b/couchdb.if
-index 83d6744..afa2f78 100644
+index 83d6744..3f0c0dc 100644
--- a/couchdb.if
+++ b/couchdb.if
@@ -2,6 +2,44 @@
@@ -14069,7 +14942,7 @@ index 83d6744..afa2f78 100644
## All of the rules required to
## administrate an couchdb environment.
##
-@@ -10,6 +48,127 @@
+@@ -10,6 +48,151 @@
## Domain allowed access.
##
##
@@ -14159,6 +15032,30 @@ index 83d6744..afa2f78 100644
+ allow $1 couchdb_var_run_t:dir search_dir_perms;
+')
+
++#######################################
++##
++## Allow domain to manage couchdb content.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`couchdb_manage_files',`
++ gen_require(`
++ type couchdb_var_run_t;
++ type couchdb_log_t;
++ type couchdb_var_lib_t;
++ type couchdb_conf_t;
++ ')
++
++ manage_files_pattern($1, couchdb_log_t, couchdb_log_t)
++ manage_files_pattern($1, couchdb_var_lib_t, couchdb_var_lib_t)
++ manage_files_pattern($1, couchdb_var_run_t, couchdb_var_run_t)
++ manage_files_pattern($1, couchdb_conf_t, couchdb_conf_t)
++')
++
+########################################
+##
+## Execute couchdb server in the couchdb domain.
@@ -14197,7 +15094,7 @@ index 83d6744..afa2f78 100644
##
##
## Role allowed access.
-@@ -19,14 +178,19 @@
+@@ -19,14 +202,19 @@
#
interface(`couchdb_admin',`
gen_require(`
@@ -14218,7 +15115,7 @@ index 83d6744..afa2f78 100644
init_labeled_script_domtrans($1, couchdb_initrc_exec_t)
domain_system_change_exemption($1)
role_transition $2 couchdb_initrc_exec_t system_r;
-@@ -46,4 +210,13 @@ interface(`couchdb_admin',`
+@@ -46,4 +234,13 @@ interface(`couchdb_admin',`
files_search_pids($1)
admin_pattern($1, couchdb_var_run_t)
@@ -14620,7 +15517,7 @@ index a3bbc21..7fd7d8f 100644
+ xserver_dbus_chat_xdm(cpufreqselector_t)
+')
diff --git a/cron.fc b/cron.fc
-index 6e76215..224142a 100644
+index 6e76215..4819e90 100644
--- a/cron.fc
+++ b/cron.fc
@@ -3,6 +3,9 @@
@@ -14633,17 +15530,18 @@ index 6e76215..224142a 100644
/usr/bin/at -- gen_context(system_u:object_r:crontab_exec_t,s0)
/usr/bin/(f)?crontab -- gen_context(system_u:object_r:crontab_exec_t,s0)
-@@ -12,9 +15,6 @@
+@@ -12,9 +15,7 @@
/usr/sbin/fcron -- gen_context(system_u:object_r:crond_exec_t,s0)
/usr/sbin/fcronsighup -- gen_context(system_u:object_r:crontab_exec_t,s0)
-/var/lib/glpi/files(/.*)? gen_context(system_u:object_r:cron_var_lib_t,s0)
-
-/var/log/cron.* gen_context(system_u:object_r:cron_log_t,s0)
++/var/log/cron.* gen_context(system_u:object_r:cron_log_t,s0)
/var/log/rpmpkgs.* -- gen_context(system_u:object_r:cron_log_t,s0)
/var/run/anacron\.pid -- gen_context(system_u:object_r:crond_var_run_t,s0)
-@@ -27,13 +27,23 @@
+@@ -27,13 +28,23 @@
/var/spool/anacron(/.*)? gen_context(system_u:object_r:system_cron_spool_t,s0)
/var/spool/at(/.*)? gen_context(system_u:object_r:user_cron_spool_t,s0)
@@ -14670,7 +15568,7 @@ index 6e76215..224142a 100644
/var/spool/cron/crontabs/.* -- <>
#/var/spool/cron/crontabs/root -- gen_context(system_u:object_r:sysadm_cron_spool_t,s0)
-@@ -43,19 +53,23 @@
+@@ -43,19 +54,23 @@
/var/spool/fcron/systab -- gen_context(system_u:object_r:system_cron_spool_t,s0)
/var/spool/fcron/new\.systab -- gen_context(system_u:object_r:system_cron_spool_t,s0)
@@ -15665,7 +16563,7 @@ index 1303b30..058864e 100644
+ logging_log_filetrans($1, cron_log_t, $2, $3)
')
diff --git a/cron.te b/cron.te
-index 28e1b86..f871609 100644
+index 28e1b86..439a761 100644
--- a/cron.te
+++ b/cron.te
@@ -1,4 +1,4 @@
@@ -15869,7 +16767,7 @@ index 28e1b86..f871609 100644
selinux_get_fs_mount(admin_crontab_t)
selinux_validate_context(admin_crontab_t)
selinux_compute_access_vector(admin_crontab_t)
-@@ -204,12 +143,14 @@ selinux_compute_relabel_context(admin_crontab_t)
+@@ -204,22 +143,26 @@ selinux_compute_relabel_context(admin_crontab_t)
selinux_compute_user_contexts(admin_crontab_t)
tunable_policy(`fcron_crond',`
@@ -15885,7 +16783,9 @@ index 28e1b86..f871609 100644
#
allow crond_t self:capability { dac_override chown fowner setgid setuid sys_nice dac_read_search };
-@@ -218,8 +159,10 @@ allow crond_t self:process ~{ ptrace setcurrent setexec setfscreate execmem exec
+-dontaudit crond_t self:capability { sys_resource sys_tty_config };
++dontaudit crond_t self:capability { net_admin sys_resource sys_tty_config };
+ allow crond_t self:process ~{ ptrace setcurrent setexec setfscreate execmem execstack execheap };
allow crond_t self:process { setexec setfscreate };
allow crond_t self:fd use;
allow crond_t self:fifo_file rw_fifo_file_perms;
@@ -16315,7 +17215,7 @@ index 28e1b86..f871609 100644
selinux_validate_context(system_cronjob_t)
selinux_compute_access_vector(system_cronjob_t)
selinux_compute_create_context(system_cronjob_t)
-@@ -534,10 +523,17 @@ tunable_policy(`cron_can_relabel',`
+@@ -534,10 +523,18 @@ tunable_policy(`cron_can_relabel',`
')
optional_policy(`
@@ -16324,6 +17224,7 @@ index 28e1b86..f871609 100644
apache_read_config(system_cronjob_t)
apache_read_log(system_cronjob_t)
apache_read_sys_content(system_cronjob_t)
++ apache_manage_lib(system_cronjob_t)
+ apache_delete_cache_dirs(system_cronjob_t)
+ apache_delete_cache_files(system_cronjob_t)
+')
@@ -16333,7 +17234,7 @@ index 28e1b86..f871609 100644
')
optional_policy(`
-@@ -546,10 +542,6 @@ optional_policy(`
+@@ -546,10 +543,6 @@ optional_policy(`
optional_policy(`
dbus_system_bus_client(system_cronjob_t)
@@ -16344,7 +17245,7 @@ index 28e1b86..f871609 100644
')
optional_policy(`
-@@ -581,6 +573,7 @@ optional_policy(`
+@@ -581,6 +574,7 @@ optional_policy(`
optional_policy(`
mta_read_config(system_cronjob_t)
mta_send_mail(system_cronjob_t)
@@ -16352,7 +17253,7 @@ index 28e1b86..f871609 100644
')
optional_policy(`
-@@ -588,15 +581,19 @@ optional_policy(`
+@@ -588,15 +582,23 @@ optional_policy(`
')
optional_policy(`
@@ -16371,10 +17272,14 @@ index 28e1b86..f871609 100644
prelink_read_cache(system_cronjob_t)
- prelink_relabelfrom_lib(system_cronjob_t)
+ prelink_relabel_lib(system_cronjob_t)
++')
++
++optional_policy(`
++ rkhunter_manage_lib_files(system_cronjob_t)
')
optional_policy(`
-@@ -606,6 +603,7 @@ optional_policy(`
+@@ -606,6 +608,7 @@ optional_policy(`
optional_policy(`
spamassassin_manage_lib_files(system_cronjob_t)
@@ -16382,7 +17287,7 @@ index 28e1b86..f871609 100644
')
optional_policy(`
-@@ -613,12 +611,24 @@ optional_policy(`
+@@ -613,12 +616,24 @@ optional_policy(`
')
optional_policy(`
@@ -16409,7 +17314,7 @@ index 28e1b86..f871609 100644
#
allow cronjob_t self:process { signal_perms setsched };
-@@ -626,12 +636,32 @@ allow cronjob_t self:fifo_file rw_fifo_file_perms;
+@@ -626,12 +641,32 @@ allow cronjob_t self:fifo_file rw_fifo_file_perms;
allow cronjob_t self:unix_stream_socket create_stream_socket_perms;
allow cronjob_t self:unix_dgram_socket create_socket_perms;
@@ -16443,7 +17348,7 @@ index 28e1b86..f871609 100644
corenet_all_recvfrom_netlabel(cronjob_t)
corenet_tcp_sendrecv_generic_if(cronjob_t)
corenet_udp_sendrecv_generic_if(cronjob_t)
-@@ -639,84 +669,148 @@ corenet_tcp_sendrecv_generic_node(cronjob_t)
+@@ -639,84 +674,148 @@ corenet_tcp_sendrecv_generic_node(cronjob_t)
corenet_udp_sendrecv_generic_node(cronjob_t)
corenet_tcp_sendrecv_all_ports(cronjob_t)
corenet_udp_sendrecv_all_ports(cronjob_t)
@@ -16627,18 +17532,26 @@ index 28e1b86..f871609 100644
+ openshift_transition(system_cronjob_t)
')
diff --git a/ctdb.fc b/ctdb.fc
-index 8401fe6..507804b 100644
+index 8401fe6..9131995 100644
--- a/ctdb.fc
+++ b/ctdb.fc
-@@ -2,6 +2,8 @@
+@@ -2,11 +2,16 @@
/usr/sbin/ctdbd -- gen_context(system_u:object_r:ctdbd_exec_t,s0)
+/var/ctdb(/.*)? gen_context(system_u:object_r:ctdbd_var_t,s0)
+
++/var/lib/ctdb(/.*)? gen_context(system_u:object_r:ctdbd_var_lib_t,s0)
/var/lib/ctdbd(/.*)? gen_context(system_u:object_r:ctdbd_var_lib_t,s0)
/var/log/ctdb\.log.* -- gen_context(system_u:object_r:ctdbd_log_t,s0)
+ /var/log/log\.ctdb.* -- gen_context(system_u:object_r:ctdbd_log_t,s0)
+
++
++/var/run/ctdb(/.*)? gen_context(system_u:object_r:ctdbd_var_run_t,s0)
+ /var/run/ctdbd(/.*)? gen_context(system_u:object_r:ctdbd_var_run_t,s0)
+
+ /var/spool/ctdb(/.*)? gen_context(system_u:object_r:ctdbd_spool_t,s0)
diff --git a/ctdb.if b/ctdb.if
index b25b01d..e99c5c6 100644
--- a/ctdb.if
@@ -16930,7 +17843,7 @@ index b25b01d..e99c5c6 100644
')
+
diff --git a/ctdb.te b/ctdb.te
-index 6ce66e7..03bc338 100644
+index 6ce66e7..7725178 100644
--- a/ctdb.te
+++ b/ctdb.te
@@ -24,6 +24,9 @@ files_tmp_file(ctdbd_tmp_t)
@@ -16958,19 +17871,26 @@ index 6ce66e7..03bc338 100644
append_files_pattern(ctdbd_t, ctdbd_log_t, ctdbd_log_t)
create_files_pattern(ctdbd_t, ctdbd_log_t, ctdbd_log_t)
-@@ -59,6 +64,11 @@ manage_dirs_pattern(ctdbd_t, ctdbd_var_lib_t, ctdbd_var_lib_t)
+@@ -57,10 +62,17 @@ files_spool_filetrans(ctdbd_t, ctdbd_spool_t, dir)
+ exec_files_pattern(ctdbd_t, ctdbd_var_lib_t, ctdbd_var_lib_t)
+ manage_dirs_pattern(ctdbd_t, ctdbd_var_lib_t, ctdbd_var_lib_t)
manage_files_pattern(ctdbd_t, ctdbd_var_lib_t, ctdbd_var_lib_t)
- files_var_lib_filetrans(ctdbd_t, ctdbd_var_lib_t, dir)
-
+-files_var_lib_filetrans(ctdbd_t, ctdbd_var_lib_t, dir)
++files_var_lib_filetrans(ctdbd_t, ctdbd_var_lib_t, dir, "ctdb")
++
+manage_dirs_pattern(ctdbd_t, ctdbd_var_t, ctdbd_var_t)
+manage_files_pattern(ctdbd_t, ctdbd_var_t, ctdbd_var_t)
+manage_lnk_files_pattern(ctdbd_t, ctdbd_var_t, ctdbd_var_t)
++files_var_filetrans(ctdbd_t, ctdbd_var_t, dir, "ctdbd")
+files_var_filetrans(ctdbd_t, ctdbd_var_t, dir, "ctdb")
-+
+
manage_dirs_pattern(ctdbd_t, ctdbd_var_run_t, ctdbd_var_run_t)
manage_files_pattern(ctdbd_t, ctdbd_var_run_t, ctdbd_var_run_t)
++manage_sock_files_pattern(ctdbd_t, ctdbd_var_run_t, ctdbd_var_run_t)
files_pid_filetrans(ctdbd_t, ctdbd_var_run_t, dir)
-@@ -72,9 +82,11 @@ corenet_all_recvfrom_netlabel(ctdbd_t)
+
+ kernel_read_network_state(ctdbd_t)
+@@ -72,9 +84,12 @@ corenet_all_recvfrom_netlabel(ctdbd_t)
corenet_tcp_sendrecv_generic_if(ctdbd_t)
corenet_tcp_sendrecv_generic_node(ctdbd_t)
corenet_tcp_bind_generic_node(ctdbd_t)
@@ -16979,16 +17899,19 @@ index 6ce66e7..03bc338 100644
corenet_sendrecv_ctdb_server_packets(ctdbd_t)
corenet_tcp_bind_ctdb_port(ctdbd_t)
+corenet_udp_bind_ctdb_port(ctdbd_t)
++corenet_tcp_connect_ctdb_port(ctdbd_t)
corenet_tcp_sendrecv_ctdb_port(ctdbd_t)
corecmd_exec_bin(ctdbd_t)
-@@ -85,12 +97,12 @@ dev_read_urand(ctdbd_t)
+@@ -85,12 +100,14 @@ dev_read_urand(ctdbd_t)
domain_dontaudit_read_all_domains_state(ctdbd_t)
-files_read_etc_files(ctdbd_t)
files_search_all_mountpoints(ctdbd_t)
++fs_getattr_all_fs(ctdbd_t)
++
+auth_read_passwd(ctdbd_t)
+
logging_send_syslog_msg(ctdbd_t)
@@ -16997,7 +17920,7 @@ index 6ce66e7..03bc338 100644
miscfiles_read_public_files(ctdbd_t)
optional_policy(`
-@@ -109,6 +121,7 @@ optional_policy(`
+@@ -109,6 +126,7 @@ optional_policy(`
samba_initrc_domtrans(ctdbd_t)
samba_domtrans_net(ctdbd_t)
samba_rw_var_files(ctdbd_t)
@@ -17147,7 +18070,7 @@ index 949011e..afe482b 100644
+/etc/opt/brother/Printers/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
+/opt/brother/Printers(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0)
diff --git a/cups.if b/cups.if
-index 06da9a0..c7834c8 100644
+index 06da9a0..c18145d 100644
--- a/cups.if
+++ b/cups.if
@@ -200,10 +200,13 @@ interface(`cups_dbus_chat_config',`
@@ -17224,7 +18147,7 @@ index 06da9a0..c7834c8 100644
init_labeled_script_domtrans($1, cupsd_initrc_exec_t)
domain_system_change_exemption($1)
-@@ -348,13 +379,63 @@ interface(`cups_admin',`
+@@ -348,13 +379,64 @@ interface(`cups_admin',`
logging_list_logs($1)
admin_pattern($1, cupsd_log_t)
@@ -17273,6 +18196,7 @@ index 06da9a0..c7834c8 100644
+ files_etc_filetrans($1, cupsd_rw_etc_t, dir, "inf")
+ files_usr_filetrans($1, cupsd_rw_etc_t, dir, "inf")
+ corecmd_bin_filetrans($1, cupsd_rw_etc_t, dir, "inf")
++ files_var_filetrans($1, cupsd_rw_etc_t, dir, "cups")
+')
+
+########################################
@@ -17294,7 +18218,7 @@ index 06da9a0..c7834c8 100644
+ ps_process_pattern($1, cupsd_t)
')
diff --git a/cups.te b/cups.te
-index 9f34c2e..d084359 100644
+index 9f34c2e..f3aaaed 100644
--- a/cups.te
+++ b/cups.te
@@ -5,19 +5,24 @@ policy_module(cups, 1.15.9)
@@ -17427,7 +18351,7 @@ index 9f34c2e..d084359 100644
#
-allow cupsd_t self:capability { ipc_lock sys_admin dac_override dac_read_search kill setgid setuid fsetid fowner chown dac_override sys_rawio sys_resource sys_tty_config };
-+allow cupsd_t self:capability { ipc_lock sys_admin dac_override dac_read_search kill fsetid fowner chown dac_override sys_rawio sys_resource sys_tty_config };
++allow cupsd_t self:capability { ipc_lock sys_admin dac_override dac_read_search kill fsetid fowner chown dac_override sys_resource sys_tty_config };
dontaudit cupsd_t self:capability { sys_tty_config net_admin };
allow cupsd_t self:capability2 block_suspend;
-allow cupsd_t self:process { getpgid setpgid setsched signal_perms };
@@ -17535,7 +18459,7 @@ index 9f34c2e..d084359 100644
files_exec_usr_files(cupsd_t)
# for /var/lib/defoma
files_read_var_lib_files(cupsd_t)
-@@ -215,16 +243,17 @@ files_read_world_readable_files(cupsd_t)
+@@ -215,17 +243,19 @@ files_read_world_readable_files(cupsd_t)
files_read_world_readable_symlinks(cupsd_t)
files_read_var_files(cupsd_t)
files_read_var_symlinks(cupsd_t)
@@ -17553,9 +18477,11 @@ index 9f34c2e..d084359 100644
+fs_rw_anon_inodefs_files(cupsd_t)
+fs_rw_inherited_tmpfs_files(cupsd_t)
++mls_dbus_send_all_levels(cupsd_t)
mls_fd_use_all_levels(cupsd_t)
mls_file_downgrade(cupsd_t)
-@@ -235,6 +264,8 @@ mls_socket_write_all_levels(cupsd_t)
+ mls_file_write_all_levels(cupsd_t)
+@@ -235,6 +265,8 @@ mls_socket_write_all_levels(cupsd_t)
term_search_ptys(cupsd_t)
term_use_unallocated_ttys(cupsd_t)
@@ -17564,12 +18490,13 @@ index 9f34c2e..d084359 100644
selinux_compute_access_vector(cupsd_t)
selinux_validate_context(cupsd_t)
-@@ -247,21 +278,20 @@ auth_dontaudit_read_pam_pid(cupsd_t)
+@@ -247,21 +279,21 @@ auth_dontaudit_read_pam_pid(cupsd_t)
auth_rw_faillog(cupsd_t)
auth_use_nsswitch(cupsd_t)
-libs_read_lib_files(cupsd_t)
libs_exec_lib_files(cupsd_t)
++libs_exec_ldconfig(cupsd_t)
logging_send_audit_msgs(cupsd_t)
logging_send_syslog_msg(cupsd_t)
@@ -17590,7 +18517,7 @@ index 9f34c2e..d084359 100644
userdom_dontaudit_search_user_home_content(cupsd_t)
optional_policy(`
-@@ -275,6 +305,8 @@ optional_policy(`
+@@ -275,6 +307,8 @@ optional_policy(`
optional_policy(`
dbus_system_bus_client(cupsd_t)
@@ -17599,7 +18526,7 @@ index 9f34c2e..d084359 100644
userdom_dbus_send_all_users(cupsd_t)
optional_policy(`
-@@ -285,8 +317,10 @@ optional_policy(`
+@@ -285,8 +319,10 @@ optional_policy(`
hal_dbus_chat(cupsd_t)
')
@@ -17610,7 +18537,7 @@ index 9f34c2e..d084359 100644
')
')
-@@ -299,8 +333,8 @@ optional_policy(`
+@@ -299,8 +335,8 @@ optional_policy(`
')
optional_policy(`
@@ -17620,7 +18547,7 @@ index 9f34c2e..d084359 100644
')
optional_policy(`
-@@ -309,7 +343,6 @@ optional_policy(`
+@@ -309,7 +345,6 @@ optional_policy(`
optional_policy(`
lpd_exec_lpr(cupsd_t)
@@ -17628,7 +18555,7 @@ index 9f34c2e..d084359 100644
lpd_read_config(cupsd_t)
lpd_relabel_spool(cupsd_t)
')
-@@ -337,7 +370,11 @@ optional_policy(`
+@@ -337,7 +372,11 @@ optional_policy(`
')
optional_policy(`
@@ -17641,7 +18568,7 @@ index 9f34c2e..d084359 100644
')
########################################
-@@ -345,12 +382,11 @@ optional_policy(`
+@@ -345,12 +384,11 @@ optional_policy(`
# Configuration daemon local policy
#
@@ -17657,7 +18584,7 @@ index 9f34c2e..d084359 100644
allow cupsd_config_t cupsd_t:process signal;
ps_process_pattern(cupsd_config_t, cupsd_t)
-@@ -375,18 +411,16 @@ manage_dirs_pattern(cupsd_config_t, cupsd_config_var_run_t, cupsd_config_var_run
+@@ -375,18 +413,16 @@ manage_dirs_pattern(cupsd_config_t, cupsd_config_var_run_t, cupsd_config_var_run
manage_files_pattern(cupsd_config_t, cupsd_config_var_run_t, cupsd_config_var_run_t)
files_pid_filetrans(cupsd_config_t, cupsd_config_var_run_t, { dir file })
@@ -17678,7 +18605,7 @@ index 9f34c2e..d084359 100644
corenet_all_recvfrom_netlabel(cupsd_config_t)
corenet_tcp_sendrecv_generic_if(cupsd_config_t)
corenet_tcp_sendrecv_generic_node(cupsd_config_t)
-@@ -395,20 +429,12 @@ corenet_tcp_sendrecv_all_ports(cupsd_config_t)
+@@ -395,20 +431,12 @@ corenet_tcp_sendrecv_all_ports(cupsd_config_t)
corenet_sendrecv_all_client_packets(cupsd_config_t)
corenet_tcp_connect_all_ports(cupsd_config_t)
@@ -17699,7 +18626,7 @@ index 9f34c2e..d084359 100644
fs_search_auto_mountpoints(cupsd_config_t)
domain_use_interactive_fds(cupsd_config_t)
-@@ -420,11 +446,6 @@ auth_use_nsswitch(cupsd_config_t)
+@@ -420,11 +448,6 @@ auth_use_nsswitch(cupsd_config_t)
logging_send_syslog_msg(cupsd_config_t)
@@ -17711,11 +18638,11 @@ index 9f34c2e..d084359 100644
userdom_dontaudit_use_unpriv_user_fds(cupsd_config_t)
userdom_dontaudit_search_user_home_dirs(cupsd_config_t)
userdom_read_all_users_state(cupsd_config_t)
-@@ -452,9 +473,12 @@ optional_policy(`
+@@ -452,9 +475,12 @@ optional_policy(`
')
optional_policy(`
-+ gnome_dontaudit_search_config(cupsd_config_t)
++ gnome_dontaudit_read_config(cupsd_config_t)
+')
+
+optional_policy(`
@@ -17725,7 +18652,7 @@ index 9f34c2e..d084359 100644
')
optional_policy(`
-@@ -490,10 +514,6 @@ optional_policy(`
+@@ -490,10 +516,6 @@ optional_policy(`
# Lpd local policy
#
@@ -17736,7 +18663,7 @@ index 9f34c2e..d084359 100644
allow cupsd_lpd_t self:netlink_tcpdiag_socket r_netlink_socket_perms;
allow cupsd_lpd_t { cupsd_etc_t cupsd_rw_etc_t }:dir list_dir_perms;
-@@ -511,31 +531,23 @@ stream_connect_pattern(cupsd_lpd_t, cupsd_var_run_t, cupsd_var_run_t, cupsd_t)
+@@ -511,31 +533,23 @@ stream_connect_pattern(cupsd_lpd_t, cupsd_var_run_t, cupsd_var_run_t, cupsd_t)
kernel_read_kernel_sysctls(cupsd_lpd_t)
kernel_read_system_state(cupsd_lpd_t)
@@ -17770,7 +18697,7 @@ index 9f34c2e..d084359 100644
optional_policy(`
inetd_service_domain(cupsd_lpd_t, cupsd_lpd_exec_t)
')
-@@ -546,7 +558,6 @@ optional_policy(`
+@@ -546,7 +560,6 @@ optional_policy(`
#
allow cups_pdf_t self:capability { chown fowner fsetid setuid setgid dac_override };
@@ -17778,7 +18705,7 @@ index 9f34c2e..d084359 100644
allow cups_pdf_t self:unix_stream_socket create_stream_socket_perms;
append_files_pattern(cups_pdf_t, cupsd_log_t, cupsd_log_t)
-@@ -562,148 +573,23 @@ fs_search_auto_mountpoints(cups_pdf_t)
+@@ -562,148 +575,23 @@ fs_search_auto_mountpoints(cups_pdf_t)
kernel_read_system_state(cups_pdf_t)
@@ -17930,7 +18857,7 @@ index 9f34c2e..d084359 100644
########################################
#
-@@ -731,7 +617,6 @@ kernel_read_kernel_sysctls(ptal_t)
+@@ -731,7 +619,6 @@ kernel_read_kernel_sysctls(ptal_t)
kernel_list_proc(ptal_t)
kernel_read_proc_symlinks(ptal_t)
@@ -17938,7 +18865,7 @@ index 9f34c2e..d084359 100644
corenet_all_recvfrom_netlabel(ptal_t)
corenet_tcp_sendrecv_generic_if(ptal_t)
corenet_tcp_sendrecv_generic_node(ptal_t)
-@@ -741,13 +626,11 @@ corenet_sendrecv_ptal_server_packets(ptal_t)
+@@ -741,13 +628,11 @@ corenet_sendrecv_ptal_server_packets(ptal_t)
corenet_tcp_bind_ptal_port(ptal_t)
corenet_tcp_sendrecv_ptal_port(ptal_t)
@@ -17952,7 +18879,7 @@ index 9f34c2e..d084359 100644
files_read_etc_runtime_files(ptal_t)
fs_getattr_all_fs(ptal_t)
-@@ -755,8 +638,6 @@ fs_search_auto_mountpoints(ptal_t)
+@@ -755,8 +640,6 @@ fs_search_auto_mountpoints(ptal_t)
logging_send_syslog_msg(ptal_t)
@@ -17961,13 +18888,24 @@ index 9f34c2e..d084359 100644
sysnet_read_config(ptal_t)
userdom_dontaudit_use_unpriv_user_fds(ptal_t)
-@@ -769,3 +650,4 @@ optional_policy(`
+@@ -769,3 +652,4 @@ optional_policy(`
optional_policy(`
udev_read_db(ptal_t)
')
+
+diff --git a/cvs.fc b/cvs.fc
+index 75c8be9..9dcffb2 100644
+--- a/cvs.fc
++++ b/cvs.fc
+@@ -1,3 +1,6 @@
++HOME_DIR/\.cvsignore -- gen_context(system_u:object_r:cvs_home_t,s0)
++/root/\.cvsignore -- gen_context(system_u:object_r:cvs_home_t,s0)
++
+ /etc/rc\.d/init\.d/cvs -- gen_context(system_u:object_r:cvs_initrc_exec_t,s0)
+
+ /opt/cvs(/.*)? gen_context(system_u:object_r:cvs_data_t,s0)
diff --git a/cvs.if b/cvs.if
-index 9fa7ffb..fd3262c 100644
+index 9fa7ffb..089c8d4 100644
--- a/cvs.if
+++ b/cvs.if
@@ -1,5 +1,23 @@
@@ -17994,8 +18932,38 @@ index 9fa7ffb..fd3262c 100644
########################################
##
## Read CVS data and metadata content.
-@@ -62,9 +80,14 @@ interface(`cvs_admin',`
- type cvs_data_t, cvs_var_run_t;
+@@ -41,6 +59,24 @@ interface(`cvs_exec',`
+
+ ########################################
+ ##
++## Transition to cvs named content
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`cvs_filetrans_home_content',`
++ gen_require(`
++ type cvs_home_t;
++ ')
++
++ userdom_user_home_dir_filetrans($1, cvs_home_t, file, ".cvsignore")
++')
++
++########################################
++##
+ ## All of the rules required to
+ ## administrate an cvs environment
+ ##
+@@ -59,12 +95,18 @@ interface(`cvs_exec',`
+ interface(`cvs_admin',`
+ gen_require(`
+ type cvs_t, cvs_tmp_t, cvs_initrc_exec_t;
+- type cvs_data_t, cvs_var_run_t;
++ type cvs_data_t, cvs_var_run_t, cvs_keytab_t;
++ type cvs_home_t;
')
- allow $1 cvs_t:process { ptrace signal_perms };
@@ -18010,8 +18978,16 @@ index 9fa7ffb..fd3262c 100644
init_labeled_script_domtrans($1, cvs_initrc_exec_t)
domain_system_change_exemption($1)
role_transition $2 cvs_initrc_exec_t system_r;
+@@ -78,4 +120,7 @@ interface(`cvs_admin',`
+
+ files_list_pids($1)
+ admin_pattern($1, cvs_var_run_t)
++
++ userdom_search_user_home_dirs($1)
++ admin_pattern($1, cvs_home_t)
+ ')
diff --git a/cvs.te b/cvs.te
-index 53fc3af..897ad64 100644
+index 53fc3af..d7cdaaf 100644
--- a/cvs.te
+++ b/cvs.te
@@ -11,11 +11,12 @@ policy_module(cvs, 1.9.1)
@@ -18028,7 +19004,31 @@ index 53fc3af..897ad64 100644
application_executable_file(cvs_exec_t)
type cvs_data_t; # customizable
-@@ -58,6 +59,15 @@ kernel_read_network_state(cvs_t)
+@@ -30,16 +31,22 @@ files_tmp_file(cvs_tmp_t)
+ type cvs_var_run_t;
+ files_pid_file(cvs_var_run_t)
+
++type cvs_home_t;
++userdom_user_home_content(cvs_home_t)
++
+ ########################################
+ #
+ # Local policy
+ #
+
+-allow cvs_t self:capability { setuid setgid };
++allow cvs_t self:capability { dac_override dac_read_search setuid setgid };
+ allow cvs_t self:process signal_perms;
+ allow cvs_t self:fifo_file rw_fifo_file_perms;
+ allow cvs_t self:netlink_tcpdiag_socket r_netlink_socket_perms;
+
++userdom_search_user_home_dirs(cvs_t)
++allow cvs_t cvs_home_t:file read_file_perms;
++
+ manage_dirs_pattern(cvs_t, cvs_data_t, cvs_data_t)
+ manage_files_pattern(cvs_t, cvs_data_t, cvs_data_t)
+ manage_lnk_files_pattern(cvs_t, cvs_data_t, cvs_data_t)
+@@ -58,6 +65,15 @@ kernel_read_network_state(cvs_t)
corecmd_exec_bin(cvs_t)
corecmd_exec_shell(cvs_t)
@@ -18044,7 +19044,7 @@ index 53fc3af..897ad64 100644
dev_read_urand(cvs_t)
files_read_etc_runtime_files(cvs_t)
-@@ -70,18 +80,18 @@ auth_use_nsswitch(cvs_t)
+@@ -70,18 +86,16 @@ auth_use_nsswitch(cvs_t)
init_read_utmp(cvs_t)
@@ -18057,8 +19057,8 @@ index 53fc3af..897ad64 100644
-
mta_send_mail(cvs_t)
- userdom_dontaudit_search_user_home_dirs(cvs_t)
-
+-userdom_dontaudit_search_user_home_dirs(cvs_t)
+-
# cjp: typeattribute doesnt work in conditionals yet
auth_can_read_shadow_passwords(cvs_t)
-tunable_policy(`allow_cvs_read_shadow',`
@@ -18066,7 +19066,7 @@ index 53fc3af..897ad64 100644
allow cvs_t self:capability dac_override;
auth_tunable_read_shadow(cvs_t)
')
-@@ -103,4 +113,5 @@ optional_policy(`
+@@ -103,4 +117,5 @@ optional_policy(`
read_files_pattern(httpd_cvs_script_t, cvs_data_t, cvs_data_t)
manage_dirs_pattern(httpd_cvs_script_t, cvs_tmp_t, cvs_tmp_t)
manage_files_pattern(httpd_cvs_script_t, cvs_tmp_t, cvs_tmp_t)
@@ -18345,10 +19345,10 @@ index 188e2e6..719583e 100644
-
-miscfiles_read_localization(dbskkd_t)
diff --git a/dbus.fc b/dbus.fc
-index dda905b..31f269b 100644
+index dda905b..ccd0ba9 100644
--- a/dbus.fc
+++ b/dbus.fc
-@@ -1,20 +1,26 @@
+@@ -1,20 +1,27 @@
-HOME_DIR/\.dbus(/.*)? gen_context(system_u:object_r:session_dbusd_home_t,s0)
+/etc/dbus-1(/.*)? gen_context(system_u:object_r:dbusd_etc_t,s0)
@@ -18376,6 +19376,7 @@ index dda905b..31f269b 100644
-/usr/libexec/dbus-daemon-launch-helper -- gen_context(system_u:object_r:dbusd_exec_t,s0)
+/var/lib/dbus(/.*)? gen_context(system_u:object_r:system_dbusd_var_lib_t,s0)
++/var/cache/ibus(/.*)? gen_context(system_u:object_r:system_dbusd_var_lib_t,s0)
-/var/lib/dbus(/.*)? gen_context(system_u:object_r:system_dbusd_var_lib_t,s0)
-
@@ -18387,7 +19388,7 @@ index dda905b..31f269b 100644
/var/named/chroot/var/run/dbus(/.*)? gen_context(system_u:object_r:system_dbusd_var_run_t,s0)
+')
diff --git a/dbus.if b/dbus.if
-index afcf3a2..e6ecc4d 100644
+index afcf3a2..8cc440f 100644
--- a/dbus.if
+++ b/dbus.if
@@ -1,4 +1,4 @@
@@ -18396,16 +19397,33 @@ index afcf3a2..e6ecc4d 100644
########################################
##
-@@ -19,7 +19,7 @@ interface(`dbus_stub',`
+@@ -19,7 +19,24 @@ interface(`dbus_stub',`
########################################
##
-## Role access for dbus.
++## Execute dbus-daemon in the caller domain.
++##
++##
++##
++## Domain allowed access
++##
++##
++#
++interface(`dbus_exec_dbusd',`
++ gen_require(`
++ type dbusd_exec_t;
++ ')
++ can_exec($1, dbusd_exec_t)
++')
++
++########################################
++##
+## Role access for dbus
##
##
##
-@@ -41,59 +41,68 @@ interface(`dbus_stub',`
+@@ -41,59 +58,68 @@ interface(`dbus_stub',`
template(`dbus_role_template',`
gen_require(`
class dbus { send_msg acquire_svc };
@@ -18495,7 +19513,7 @@ index afcf3a2..e6ecc4d 100644
##
##
##
-@@ -103,65 +112,29 @@ template(`dbus_role_template',`
+@@ -103,91 +129,82 @@ template(`dbus_role_template',`
#
interface(`dbus_system_bus_client',`
gen_require(`
@@ -18529,12 +19547,17 @@ index afcf3a2..e6ecc4d 100644
##
-## Acquire service on DBUS
-## session bus.
--##
++## Creating connections to specified
++## DBUS sessions.
+ ##
-##
--##
++##
+ ##
-## Domain allowed access.
--##
--##
++## The prefix of the user role (e.g., user
++## is the prefix for user_r).
+ ##
+ ##
-#
-interface(`dbus_connect_session_bus',`
- refpolicywarn(`$0($*) has been deprecated, use dbus_connect_all_session_bus() instead.')
@@ -18546,235 +19569,381 @@ index afcf3a2..e6ecc4d 100644
-## Acquire service on all DBUS
-## session busses.
-##
--##
--##
--## Domain allowed access.
--##
--##
--#
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
+ #
-interface(`dbus_connect_all_session_bus',`
-- gen_require(`
++interface(`dbus_session_client',`
+ gen_require(`
- attribute session_bus_type;
- class dbus acquire_svc;
-- ')
--
++ class dbus send_msg;
++ type $1_dbusd_t;
+ ')
+
- allow $1 session_bus_type:dbus acquire_svc;
--')
--
--#######################################
--##
++ allow $2 $1_dbusd_t:fd use;
++ allow $2 { $1_dbusd_t self }:dbus send_msg;
++ allow $2 $1_dbusd_t:unix_stream_socket connectto;
+ ')
+
+ #######################################
+ ##
-## Acquire service on specified
-## DBUS session bus.
-+## Creating connections to specified
-+## DBUS sessions.
++## Template for creating connections to
++## a user DBUS.
##
- ##
+-##
+-##
+-## The prefix of the user role (e.g., user
+-## is the prefix for user_r).
+-##
+-##
+ ##
##
-@@ -175,19 +148,21 @@ interface(`dbus_connect_all_session_bus',`
+ ## Domain allowed access.
##
##
#
-interface(`dbus_connect_spec_session_bus',`
-+interface(`dbus_session_client',`
++interface(`dbus_session_bus_client',`
gen_require(`
-+ class dbus send_msg;
- type $1_dbusd_t;
+- type $1_dbusd_t;
- class dbus acquire_svc;
++ attribute session_bus_type;
++ class dbus send_msg;
')
- allow $2 $1_dbusd_t:dbus acquire_svc;
-+ allow $2 $1_dbusd_t:fd use;
-+ allow $2 { $1_dbusd_t self }:dbus send_msg;
-+ allow $2 $1_dbusd_t:unix_stream_socket connectto;
++ # SE-DBus specific permissions
++ allow $1 { session_bus_type self }:dbus send_msg;
++
++ # For connecting to the bus
++ allow $1 session_bus_type:unix_stream_socket connectto;
++
++ allow session_bus_type $1:process sigkill;
')
- #######################################
+-#######################################
++########################################
##
-## Creating connections to DBUS
-## session bus.
-+## Template for creating connections to
-+## a user DBUS.
++## Send a message the session DBUS.
##
##
##
-@@ -196,72 +171,23 @@ interface(`dbus_connect_spec_session_bus',`
+@@ -195,15 +212,18 @@ interface(`dbus_connect_spec_session_bus',`
+ ##
##
#
- interface(`dbus_session_bus_client',`
+-interface(`dbus_session_bus_client',`
- refpolicywarn(`$0($*) has been deprecated, use dbus_all_session_bus_client() instead.')
- dbus_all_session_bus_client($1)
--')
--
++interface(`dbus_send_session_bus',`
++ gen_require(`
++ attribute session_bus_type;
++ class dbus send_msg;
++ ')
++
++ allow $1 session_bus_type:dbus send_msg;
+ ')
+
-#######################################
--##
++########################################
+ ##
-## Creating connections to all
-## DBUS session busses.
--##
--##
--##
--## Domain allowed access.
--##
--##
--#
++## Read dbus configuration.
+ ##
+ ##
+ ##
+@@ -211,57 +231,38 @@ interface(`dbus_session_bus_client',`
+ ##
+ ##
+ #
-interface(`dbus_all_session_bus_client',`
++interface(`dbus_read_config',`
gen_require(`
- attribute session_bus_type, dbusd_session_bus_client;
-+ attribute session_bus_type;
- class dbus send_msg;
+- class dbus send_msg;
++ type dbusd_etc_t;
')
- typeattribute $1 dbusd_session_bus_client;
-
-+ # SE-DBus specific permissions
- allow $1 { session_bus_type self }:dbus send_msg;
+- allow $1 { session_bus_type self }:dbus send_msg;
- allow session_bus_type $1:dbus send_msg;
-
- allow $1 session_bus_type:unix_stream_socket connectto;
- allow $1 session_bus_type:fd use;
--')
++ allow $1 dbusd_etc_t:dir list_dir_perms;
++ allow $1 dbusd_etc_t:file read_file_perms;
+ ')
-#######################################
--##
++########################################
+ ##
-## Creating connections to specified
-## DBUS session bus.
--##
++## Read system dbus lib files.
+ ##
-##
-##
-## The prefix of the user role (e.g., user
-## is the prefix for user_r).
-##
-##
--##
--##
--## Domain allowed access.
--##
--##
--#
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
+ #
-interface(`dbus_spec_session_bus_client',`
-- gen_require(`
++interface(`dbus_read_lib_files',`
+ gen_require(`
- attribute dbusd_session_bus_client;
- type $1_dbusd_t;
- class dbus send_msg;
-- ')
--
++ type system_dbusd_var_lib_t;
+ ')
+
- typeattribute $2 dbusd_session_bus_client;
-
- allow $2 { $1_dbusd_t self }:dbus send_msg;
- allow $1_dbusd_t $2:dbus send_msg;
-+ # For connecting to the bus
-+ allow $1 session_bus_type:unix_stream_socket connectto;
-
+-
- allow $2 $1_dbusd_t:unix_stream_socket connectto;
- allow $2 $1_dbusd_t:fd use;
-+ allow session_bus_type $1:process sigkill;
++ files_search_var_lib($1)
++ read_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t)
')
-#######################################
+########################################
##
-## Send messages to DBUS session bus.
-+## Send a message the session DBUS.
++## Create, read, write, and delete
++## system dbus lib files.
##
##
##
-@@ -270,59 +196,17 @@ interface(`dbus_spec_session_bus_client',`
+@@ -269,15 +270,19 @@ interface(`dbus_spec_session_bus_client',`
+ ##
##
#
- interface(`dbus_send_session_bus',`
+-interface(`dbus_send_session_bus',`
- refpolicywarn(`$0($*) has been deprecated, use dbus_send_all_session_bus() instead.')
- dbus_send_all_session_bus($1)
--')
--
++interface(`dbus_manage_lib_files',`
++ gen_require(`
++ type system_dbusd_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t)
+ ')
+
-#######################################
--##
++########################################
+ ##
-## Send messages to all DBUS
-## session busses.
--##
--##
--##
--## Domain allowed access.
--##
--##
--#
++## Connect to the system DBUS
++## for service (acquire_svc).
+ ##
+ ##
+ ##
+@@ -285,44 +290,52 @@ interface(`dbus_send_session_bus',`
+ ##
+ ##
+ #
-interface(`dbus_send_all_session_bus',`
++interface(`dbus_connect_session_bus',`
gen_require(`
attribute session_bus_type;
- class dbus send_msg;
+- class dbus send_msg;
++ class dbus acquire_svc;
')
- allow $1 dbus_session_bus_type:dbus send_msg;
--')
--
++ allow $1 session_bus_type:dbus acquire_svc;
+ ')
+
-#######################################
--##
++########################################
+ ##
-## Send messages to specified
-## DBUS session busses.
--##
++## Allow a application domain to be started
++## by the session dbus.
+ ##
-##
--##
++##
+ ##
-## The prefix of the user role (e.g., user
-## is the prefix for user_r).
--##
--##
--##
--##
++## User domain prefix to be used.
+ ##
+ ##
+ ##
+ ##
-## Domain allowed access.
--##
--##
--#
++## Type to be used as a domain.
++##
++##
++##
++##
++## Type of the program to be used as an
++## entry point to this domain.
+ ##
+ ##
+ #
-interface(`dbus_send_spec_session_bus',`
-- gen_require(`
-- type $1_dbusd_t;
++interface(`dbus_session_domain',`
+ gen_require(`
+ type $1_dbusd_t;
- class dbus send_msg;
-- ')
--
+ ')
+
- allow $2 $1_dbusd_t:dbus send_msg;
-+ allow $1 session_bus_type:dbus send_msg;
++ domtrans_pattern($1_dbusd_t, $2, $3)
++
++ dbus_session_bus_client($3)
++ dbus_connect_session_bus($3)
')
########################################
##
-## Read dbus configuration content.
-+## Read dbus configuration.
++## Connect to the system DBUS
++## for service (acquire_svc).
##
##
##
-@@ -380,69 +264,32 @@ interface(`dbus_manage_lib_files',`
+@@ -330,18 +343,18 @@ interface(`dbus_send_spec_session_bus',`
+ ##
+ ##
+ #
+-interface(`dbus_read_config',`
++interface(`dbus_connect_system_bus',`
+ gen_require(`
+- type dbusd_etc_t;
++ type system_dbusd_t;
++ class dbus acquire_svc;
+ ')
+
+- allow $1 dbusd_etc_t:dir list_dir_perms;
+- allow $1 dbusd_etc_t:file read_file_perms;
++ allow $1 system_dbusd_t:dbus acquire_svc;
+ ')
+
+ ########################################
+ ##
+-## Read system dbus lib files.
++## Send a message on the system DBUS.
+ ##
+ ##
+ ##
+@@ -349,19 +362,18 @@ interface(`dbus_read_config',`
+ ##
+ ##
+ #
+-interface(`dbus_read_lib_files',`
++interface(`dbus_send_system_bus',`
+ gen_require(`
+- type system_dbusd_var_lib_t;
++ type system_dbusd_t;
++ class dbus send_msg;
+ ')
+
+- files_search_var_lib($1)
+- read_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t)
++ allow $1 system_dbusd_t:dbus send_msg;
+ ')
+
+ ########################################
+ ##
+-## Create, read, write, and delete
+-## system dbus lib files.
++## Allow unconfined access to the system DBUS.
+ ##
+ ##
+ ##
+@@ -369,26 +381,20 @@ interface(`dbus_read_lib_files',`
+ ##
+ ##
+ #
+-interface(`dbus_manage_lib_files',`
++interface(`dbus_system_bus_unconfined',`
+ gen_require(`
+- type system_dbusd_var_lib_t;
++ type system_dbusd_t;
++ class dbus all_dbus_perms;
+ ')
+
+- files_search_var_lib($1)
+- manage_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t)
++ allow $1 system_dbusd_t:dbus *;
+ ')
########################################
##
-## Allow a application domain to be
-## started by the specified session bus.
--##
++## Create a domain for processes
++## which can be started by the system dbus
+ ##
-##
-##
-## The prefix of the user role (e.g., user
-## is the prefix for user_r).
-##
-##
--##
--##
--## Type to be used as a domain.
--##
--##
--##
--##
+ ##
+ ##
+ ## Type to be used as a domain.
+@@ -396,81 +402,67 @@ interface(`dbus_manage_lib_files',`
+ ##
+ ##
+ ##
-## Type of the program to be used as an
-## entry point to this domain.
--##
--##
--#
++## Type of the program to be used as an entry point to this domain.
+ ##
+ ##
+ #
-interface(`dbus_session_domain',`
- refpolicywarn(`$0($*) has been deprecated, use dbus_all_session_domain() instead.')
- dbus_all_session_domain($1, $2)
--')
--
--########################################
--##
++interface(`dbus_system_domain',`
++ gen_require(`
++ attribute system_bus_type;
++ type system_dbusd_t;
++ role system_r;
++ ')
++ typeattribute $1 system_bus_type;
++
++ domain_type($1)
++ domain_entry_file($1, $2)
++
++ domtrans_pattern(system_dbusd_t, $2, $1)
++ init_system_domain($1, $2)
++
++ ps_process_pattern($1, system_dbusd_t)
++
+ ')
+
+ ########################################
+ ##
-## Allow a application domain to be
-## started by the specified session bus.
-+## Connect to the system DBUS
-+## for service (acquire_svc).
++## Use and inherit system DBUS file descriptors.
##
##
##
@@ -18790,259 +19959,276 @@ index afcf3a2..e6ecc4d 100644
##
#
-interface(`dbus_all_session_domain',`
-+interface(`dbus_connect_session_bus',`
++interface(`dbus_use_system_bus_fds',`
gen_require(`
- type session_bus_type;
-+ attribute session_bus_type;
-+ class dbus acquire_svc;
++ type system_dbusd_t;
')
- domtrans_pattern(session_bus_type, $2, $1)
-
- dbus_all_session_bus_client($1)
- dbus_connect_all_session_bus($1)
-+ allow $1 session_bus_type:dbus acquire_svc;
++ allow $1 system_dbusd_t:fd use;
')
########################################
##
-## Allow a application domain to be
-## started by the specified session bus.
-+## Allow a application domain to be started
-+## by the session dbus.
++## Allow unconfined access to the system DBUS.
##
-##
-+##
- ##
+-##
-## The prefix of the user role (e.g., user
-## is the prefix for user_r).
-+## User domain prefix to be used.
- ##
- ##
+-##
+-##
##
-@@ -457,20 +304,21 @@ interface(`dbus_all_session_domain',`
+ ##
+-## Type to be used as a domain.
+-##
+-##
+-##
+-##
+-## Type of the program to be used as an
+-## entry point to this domain.
++## Domain allowed access.
##
##
#
-interface(`dbus_spec_session_domain',`
-+interface(`dbus_session_domain',`
++interface(`dbus_unconfined',`
gen_require(`
- type $1_dbusd_t;
+- type $1_dbusd_t;
++ attribute dbusd_unconfined;
')
- domtrans_pattern($1_dbusd_t, $2, $3)
-
+- domtrans_pattern($1_dbusd_t, $2, $3)
+-
- dbus_spec_session_bus_client($1, $2)
- dbus_connect_spec_session_bus($1, $2)
-+ dbus_session_bus_client($3)
-+ dbus_connect_session_bus($3)
++ typeattribute $1 dbusd_unconfined;
')
########################################
##
-## Acquire service on the DBUS system bus.
-+## Connect to the system DBUS
-+## for service (acquire_svc).
++## Delete all dbus pid files
##
##
##
-@@ -489,7 +337,7 @@ interface(`dbus_connect_system_bus',`
+@@ -478,18 +470,18 @@ interface(`dbus_spec_session_domain',`
+ ##
+ ##
+ #
+-interface(`dbus_connect_system_bus',`
++interface(`dbus_delete_pid_files',`
+ gen_require(`
+- type system_dbusd_t;
+- class dbus acquire_svc;
++ type system_dbusd_var_run_t;
+ ')
+
+- allow $1 system_dbusd_t:dbus acquire_svc;
++ files_search_pids($1)
++ delete_files_pattern($1, system_dbusd_var_run_t, system_dbusd_var_run_t)
+ ')
########################################
##
-## Send messages to the DBUS system bus.
-+## Send a message on the system DBUS.
++## Read all dbus pid files
##
##
##
-@@ -508,7 +356,7 @@ interface(`dbus_send_system_bus',`
+@@ -497,98 +489,80 @@ interface(`dbus_connect_system_bus',`
+ ##
+ ##
+ #
+-interface(`dbus_send_system_bus',`
++interface(`dbus_read_pid_files',`
+ gen_require(`
+- type system_dbusd_t;
+- class dbus send_msg;
++ type system_dbusd_var_run_t;
+ ')
+
+- allow $1 system_dbusd_t:dbus send_msg;
++ files_search_pids($1)
++ read_files_pattern($1, system_dbusd_var_run_t, system_dbusd_var_run_t)
+ ')
########################################
##
-## Unconfined access to DBUS system bus.
-+## Allow unconfined access to the system DBUS.
++## Do not audit attempts to connect to
++## session bus types with a unix
++## stream socket.
##
##
##
-@@ -527,8 +375,8 @@ interface(`dbus_system_bus_unconfined',`
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`dbus_system_bus_unconfined',`
++interface(`dbus_dontaudit_stream_connect_session_bus',`
+ gen_require(`
+- type system_dbusd_t;
+- class dbus all_dbus_perms;
++ attribute session_bus_type;
+ ')
+
+- allow $1 system_dbusd_t:dbus *;
++ dontaudit $1 session_bus_type:unix_stream_socket connectto;
+ ')
########################################
##
-## Create a domain for processes which
-## can be started by the DBUS system bus.
-+## Create a domain for processes
-+## which can be started by the system dbus
++## Allow attempts to connect to
++## session bus types with a unix
++## stream socket.
##
##
##
-@@ -543,33 +391,24 @@ interface(`dbus_system_bus_unconfined',`
+-## Type to be used as a domain.
+-##
+-##
+-##
+-##
+-## Type of the program to be used as an entry point to this domain.
++## Domain to not audit.
+ ##
+ ##
#
- interface(`dbus_system_domain',`
+-interface(`dbus_system_domain',`
++interface(`dbus_stream_connect_session_bus',`
gen_require(`
-+ attribute system_bus_type;
- type system_dbusd_t;
- role system_r;
+- type system_dbusd_t;
+- role system_r;
++ attribute session_bus_type;
')
-+ typeattribute $1 system_bus_type;
-
- domain_type($1)
- domain_entry_file($1, $2)
+- domain_type($1)
+- domain_entry_file($1, $2)
+-
- role system_r types $1;
-
- domtrans_pattern(system_dbusd_t, $2, $1)
-
+- domtrans_pattern(system_dbusd_t, $2, $1)
+-
- dbus_system_bus_client($1)
- dbus_connect_system_bus($1)
-
- ps_process_pattern(system_dbusd_t, $1)
-
- userdom_read_all_users_state($1)
-+ ps_process_pattern($1, system_dbusd_t)
-
+-
- ifdef(`hide_broken_symptoms', `
- dontaudit $1 system_dbusd_t:netlink_selinux_socket { read write };
- ')
++ allow $1 session_bus_type:unix_stream_socket connectto;
')
########################################
##
-## Use and inherit DBUS system bus
-## file descriptors.
-+## Use and inherit system DBUS file descriptors.
++## Do not audit attempts to send dbus
++## messages to session bus types.
##
##
##
-@@ -587,26 +426,25 @@ interface(`dbus_use_system_bus_fds',`
+-## Domain allowed access.
++## Domain to not audit.
+ ##
+ ##
+ #
+-interface(`dbus_use_system_bus_fds',`
++interface(`dbus_chat_session_bus',`
+ gen_require(`
+- type system_dbusd_t;
++ attribute session_bus_type;
++ class dbus send_msg;
+ ')
+
+- allow $1 system_dbusd_t:fd use;
++ allow $1 session_bus_type:dbus send_msg;
++ allow session_bus_type $1:dbus send_msg;
+ ')
########################################
##
-## Do not audit attempts to read and
-## write DBUS system bus TCP sockets.
-+## Allow unconfined access to the system DBUS.
++## Do not audit attempts to send dbus
++## messages to session bus types.
##
##
##
--## Domain to not audit.
-+## Domain allowed access.
+@@ -596,28 +570,49 @@ interface(`dbus_use_system_bus_fds',`
##
##
#
-interface(`dbus_dontaudit_system_bus_rw_tcp_sockets',`
-+interface(`dbus_unconfined',`
++interface(`dbus_dontaudit_chat_session_bus',`
gen_require(`
- type system_dbusd_t;
-+ attribute dbusd_unconfined;
++ attribute session_bus_type;
++ class dbus send_msg;
')
- dontaudit $1 system_dbusd_t:tcp_socket { read write };
-+ typeattribute $1 dbusd_unconfined;
++ dontaudit $1 session_bus_type:dbus send_msg;
')
########################################
##
-## Unconfined access to DBUS.
-+## Delete all dbus pid files
++## Do not audit attempts to send dbus
++## messages to system bus types.
##
##
##
-@@ -614,10 +452,91 @@ interface(`dbus_dontaudit_system_bus_rw_tcp_sockets',`
+-## Domain allowed access.
++## Domain to not audit.
##
##
#
-interface(`dbus_unconfined',`
-+interface(`dbus_delete_pid_files',`
++interface(`dbus_dontaudit_chat_system_bus',`
gen_require(`
- attribute dbusd_unconfined;
-+ type system_dbusd_var_run_t;
++ attribute system_bus_type;
++ class dbus send_msg;
')
- typeattribute $1 dbusd_unconfined;
-+ files_search_pids($1)
-+ delete_files_pattern($1, system_dbusd_var_run_t, system_dbusd_var_run_t)
-+')
-+
-+########################################
-+##
-+## Read all dbus pid files
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
-+interface(`dbus_read_pid_files',`
-+ gen_require(`
-+ type system_dbusd_var_run_t;
-+ ')
-+
-+ files_search_pids($1)
-+ read_files_pattern($1, system_dbusd_var_run_t, system_dbusd_var_run_t)
-+')
-+
-+########################################
-+##
-+## Do not audit attempts to connect to
-+## session bus types with a unix
-+## stream socket.
-+##
-+##
-+##
-+## Domain to not audit.
-+##
-+##
-+#
-+interface(`dbus_dontaudit_stream_connect_session_bus',`
-+ gen_require(`
-+ attribute session_bus_type;
-+ ')
-+
-+ dontaudit $1 session_bus_type:unix_stream_socket connectto;
-+')
-+
-+########################################
-+##
-+## Do not audit attempts to send dbus
-+## messages to session bus types.
-+##
-+##
-+##
-+## Domain to not audit.
-+##
-+##
-+#
-+interface(`dbus_dontaudit_chat_session_bus',`
-+ gen_require(`
-+ attribute session_bus_type;
-+ class dbus send_msg;
-+ ')
-+
-+ dontaudit $1 session_bus_type:dbus send_msg;
++ dontaudit $1 system_bus_type:dbus send_msg;
++ dontaudit system_bus_type $1:dbus send_msg;
+')
+
-+########################################
++#######################################
+##
-+## Do not audit attempts to send dbus
-+## messages to system bus types.
++## Transition to dbus named content
+##
+##
-+##
-+## Domain to not audit.
-+##
++##
++## Domain allowed access.
++##
+##
+#
-+interface(`dbus_dontaudit_chat_system_bus',`
-+ gen_require(`
-+ attribute system_bus_type;
-+ class dbus send_msg;
-+ ')
-+
-+ dontaudit $1 system_bus_type:dbus send_msg;
-+ dontaudit system_bus_type $1:dbus send_msg;
++interface(`dbus_filetrans_named_content_system',`
++ gen_require(`
++ type system_dbusd_var_lib_t;
++ ')
++ files_var_filetrans($1, system_dbusd_var_lib_t, dir, "ibus")
')
diff --git a/dbus.te b/dbus.te
-index 2c2e7e1..493ab48 100644
+index 2c2e7e1..2ead441 100644
--- a/dbus.te
+++ b/dbus.te
@@ -1,20 +1,18 @@
@@ -19090,7 +20276,7 @@ index 2c2e7e1..493ab48 100644
ifdef(`enable_mcs',`
init_ranged_system_domain(system_dbusd_t, dbusd_exec_t, s0 - mcs_systemhigh)
-@@ -51,59 +47,58 @@ ifdef(`enable_mls',`
+@@ -51,59 +47,61 @@ ifdef(`enable_mls',`
init_ranged_system_domain(system_dbusd_t, dbusd_exec_t, s0 - mls_systemhigh)
')
@@ -19149,7 +20335,9 @@ index 2c2e7e1..493ab48 100644
-domain_use_interactive_fds(system_dbusd_t)
-domain_read_all_domains_state(system_dbusd_t)
--
++dev_rw_inherited_input_dev(system_dbusd_t)
++dev_rw_inherited_dri(system_dbusd_t)
+
-files_list_home(system_dbusd_t)
-files_read_usr_files(system_dbusd_t)
+files_rw_inherited_non_security_files(system_dbusd_t)
@@ -19167,7 +20355,7 @@ index 2c2e7e1..493ab48 100644
mls_fd_use_all_levels(system_dbusd_t)
mls_rangetrans_target(system_dbusd_t)
mls_file_read_all_levels(system_dbusd_t)
-@@ -123,66 +118,159 @@ term_dontaudit_use_console(system_dbusd_t)
+@@ -123,66 +121,159 @@ term_dontaudit_use_console(system_dbusd_t)
auth_use_nsswitch(system_dbusd_t)
auth_read_pam_console_data(system_dbusd_t)
@@ -19225,10 +20413,9 @@ index 2c2e7e1..493ab48 100644
+optional_policy(`
+ gnome_exec_gconf(system_dbusd_t)
+ gnome_read_inherited_home_icc_data_files(system_dbusd_t)
- ')
-
- optional_policy(`
-- seutil_sigchld_newrole(system_dbusd_t)
++')
++
++optional_policy(`
+ nis_use_ypbind(system_dbusd_t)
+')
+
@@ -19245,9 +20432,10 @@ index 2c2e7e1..493ab48 100644
+
+optional_policy(`
+ sysnet_domtrans_dhcpc(system_dbusd_t)
-+')
-+
-+optional_policy(`
+ ')
+
+ optional_policy(`
+- seutil_sigchld_newrole(system_dbusd_t)
+ systemd_use_fds_logind(system_dbusd_t)
+ systemd_write_inherited_logind_sessions_pipes(system_dbusd_t)
+ systemd_write_inhibit_pipes(system_dbusd_t)
@@ -19341,7 +20529,7 @@ index 2c2e7e1..493ab48 100644
kernel_read_kernel_sysctls(session_bus_type)
corecmd_list_bin(session_bus_type)
-@@ -191,23 +279,18 @@ corecmd_read_bin_files(session_bus_type)
+@@ -191,23 +282,18 @@ corecmd_read_bin_files(session_bus_type)
corecmd_read_bin_pipes(session_bus_type)
corecmd_read_bin_sockets(session_bus_type)
@@ -19366,7 +20554,7 @@ index 2c2e7e1..493ab48 100644
files_dontaudit_search_var(session_bus_type)
fs_getattr_romfs(session_bus_type)
-@@ -215,7 +298,6 @@ fs_getattr_xattr_fs(session_bus_type)
+@@ -215,7 +301,6 @@ fs_getattr_xattr_fs(session_bus_type)
fs_list_inotifyfs(session_bus_type)
fs_dontaudit_list_nfs(session_bus_type)
@@ -19374,7 +20562,7 @@ index 2c2e7e1..493ab48 100644
selinux_validate_context(session_bus_type)
selinux_compute_access_vector(session_bus_type)
selinux_compute_create_context(session_bus_type)
-@@ -225,18 +307,36 @@ selinux_compute_user_contexts(session_bus_type)
+@@ -225,18 +310,36 @@ selinux_compute_user_contexts(session_bus_type)
auth_read_pam_console_data(session_bus_type)
logging_send_audit_msgs(session_bus_type)
@@ -19416,7 +20604,7 @@ index 2c2e7e1..493ab48 100644
')
########################################
-@@ -244,5 +344,6 @@ optional_policy(`
+@@ -244,5 +347,6 @@ optional_policy(`
# Unconfined access to this module
#
@@ -20315,12 +21503,13 @@ index ff933af..cd1d88d 100644
+')
+
diff --git a/dhcp.fc b/dhcp.fc
-index 7956248..5fee161 100644
+index 7956248..333d214 100644
--- a/dhcp.fc
+++ b/dhcp.fc
-@@ -1,4 +1,5 @@
+@@ -1,4 +1,6 @@
/etc/rc\.d/init\.d/dhcpd(6)? -- gen_context(system_u:object_r:dhcpd_initrc_exec_t,s0)
+/usr/lib/systemd/system/dhcpcd.* -- gen_context(system_u:object_r:dhcpd_unit_file_t,s0)
++/usr/lib/systemd/system/dhcpd.* -- gen_context(system_u:object_r:dhcpd_unit_file_t,s0)
/usr/sbin/dhcpd.* -- gen_context(system_u:object_r:dhcpd_exec_t,s0)
@@ -21437,7 +22626,7 @@ index 23ab808..84735a8 100644
+/var/run/dnsmasq.* gen_context(system_u:object_r:dnsmasq_var_run_t,s0)
/var/run/libvirt/network(/.*)? gen_context(system_u:object_r:dnsmasq_var_run_t,s0)
diff --git a/dnsmasq.if b/dnsmasq.if
-index 19aa0b8..e34a540 100644
+index 19aa0b8..b9895ba 100644
--- a/dnsmasq.if
+++ b/dnsmasq.if
@@ -10,7 +10,6 @@
@@ -21581,27 +22770,40 @@ index 19aa0b8..e34a540 100644
read_files_pattern($1, dnsmasq_var_run_t, dnsmasq_var_run_t)
')
-@@ -214,37 +292,49 @@ interface(`dnsmasq_create_pid_dirs',`
+@@ -214,37 +292,66 @@ interface(`dnsmasq_create_pid_dirs',`
########################################
##
-## Create specified objects in specified
-## directories with a type transition to
-## the dnsmasq pid file type.
-+## Transition to dnsmasq named content
++## Create dnsmasq pid directories.
##
##
##
--## Domain allowed access.
--##
--##
+ ## Domain allowed access.
+ ##
+ ##
-##
-##
-## Directory to transition on.
-##
-##
-##
--##
++#
++interface(`dnsmasq_read_state',`
++ gen_require(`
++ type dnsmasq_t;
++ ')
++ ps_process_pattern($1, dnsmasq_t)
++')
++
++########################################
++##
++## Transition to dnsmasq named content
++##
++##
+ ##
-## The object class of the object being created.
+## Domain allowed access.
##
@@ -21649,7 +22851,7 @@ index 19aa0b8..e34a540 100644
')
########################################
-@@ -267,12 +357,18 @@ interface(`dnsmasq_spec_filetrans_pid',`
+@@ -267,12 +374,18 @@ interface(`dnsmasq_spec_filetrans_pid',`
interface(`dnsmasq_admin',`
gen_require(`
type dnsmasq_t, dnsmasq_lease_t, dnsmasq_var_run_t;
@@ -21670,7 +22872,7 @@ index 19aa0b8..e34a540 100644
init_labeled_script_domtrans($1, dnsmasq_initrc_exec_t)
domain_system_change_exemption($1)
role_transition $2 dnsmasq_initrc_exec_t system_r;
-@@ -281,9 +377,13 @@ interface(`dnsmasq_admin',`
+@@ -281,9 +394,13 @@ interface(`dnsmasq_admin',`
files_list_var_lib($1)
admin_pattern($1, dnsmasq_lease_t)
@@ -21686,7 +22888,7 @@ index 19aa0b8..e34a540 100644
+ allow $1 dnsmasq_unit_file_t:service all_service_perms;
')
diff --git a/dnsmasq.te b/dnsmasq.te
-index ba14bcf..a3e6c7c 100644
+index ba14bcf..34a4c71 100644
--- a/dnsmasq.te
+++ b/dnsmasq.te
@@ -24,6 +24,9 @@ logging_log_file(dnsmasq_var_log_t)
@@ -21699,7 +22901,15 @@ index ba14bcf..a3e6c7c 100644
########################################
#
# Local policy
-@@ -52,11 +55,14 @@ manage_files_pattern(dnsmasq_t, dnsmasq_var_run_t, dnsmasq_var_run_t)
+@@ -38,6 +41,7 @@ allow dnsmasq_t self:packet_socket create_socket_perms;
+ allow dnsmasq_t self:rawip_socket create_socket_perms;
+
+ read_files_pattern(dnsmasq_t, dnsmasq_etc_t, dnsmasq_etc_t)
++list_dirs_pattern(dnsmasq_t, dnsmasq_etc_t, dnsmasq_etc_t)
+
+ manage_files_pattern(dnsmasq_t, dnsmasq_lease_t, dnsmasq_lease_t)
+ files_var_lib_filetrans(dnsmasq_t, dnsmasq_lease_t, file)
+@@ -52,11 +56,14 @@ manage_files_pattern(dnsmasq_t, dnsmasq_var_run_t, dnsmasq_var_run_t)
files_pid_filetrans(dnsmasq_t, dnsmasq_var_run_t, { dir file })
kernel_read_kernel_sysctls(dnsmasq_t)
@@ -21715,7 +22925,7 @@ index ba14bcf..a3e6c7c 100644
corenet_all_recvfrom_netlabel(dnsmasq_t)
corenet_tcp_sendrecv_generic_if(dnsmasq_t)
corenet_udp_sendrecv_generic_if(dnsmasq_t)
-@@ -86,9 +92,9 @@ fs_search_auto_mountpoints(dnsmasq_t)
+@@ -86,9 +93,9 @@ fs_search_auto_mountpoints(dnsmasq_t)
auth_use_nsswitch(dnsmasq_t)
@@ -21727,7 +22937,7 @@ index ba14bcf..a3e6c7c 100644
userdom_dontaudit_use_unpriv_user_fds(dnsmasq_t)
userdom_dontaudit_search_user_home_dirs(dnsmasq_t)
-@@ -98,12 +104,21 @@ optional_policy(`
+@@ -98,12 +105,21 @@ optional_policy(`
')
optional_policy(`
@@ -21750,7 +22960,7 @@ index ba14bcf..a3e6c7c 100644
')
optional_policy(`
-@@ -124,6 +139,14 @@ optional_policy(`
+@@ -124,6 +140,14 @@ optional_policy(`
optional_policy(`
virt_manage_lib_files(dnsmasq_t)
@@ -21923,10 +23133,10 @@ index ef36d73..fddd51f 100644
sysnet_etc_filetrans_config(dnssec_triggerd_t)
diff --git a/docker.fc b/docker.fc
new file mode 100644
-index 0000000..484dd44
+index 0000000..1c4ac02
--- /dev/null
+++ b/docker.fc
-@@ -0,0 +1,12 @@
+@@ -0,0 +1,17 @@
+/usr/bin/docker -- gen_context(system_u:object_r:docker_exec_t,s0)
+
+/usr/lib/systemd/system/docker.service -- gen_context(system_u:object_r:docker_unit_file_t,s0)
@@ -21936,22 +23146,26 @@ index 0000000..484dd44
+/var/run/docker\.pid -- gen_context(system_u:object_r:docker_var_run_t,s0)
+/var/run/docker\.sock -s gen_context(system_u:object_r:docker_var_run_t,s0)
+
++/var/lock/lxc(/.*)? gen_context(system_u:object_r:docker_lock_t,s0)
++
+/var/log/lxc(/.*)? gen_context(system_u:object_r:docker_log_t,s0)
+
-+/usr/lib/lxc/rootfs gen_context(system_u:object_r:mnt_t,s0)
-\ No newline at end of file
++/var/lib/docker/init(/.*)? gen_context(system_u:object_r:docker_share_t,s0)
++/var/lib/docker/containers/.*/hosts gen_context(system_u:object_r:docker_share_t,s0)
++/var/lib/docker/containers/.*/hostname gen_context(system_u:object_r:docker_share_t,s0)
++/var/lib/docker/.*/config\.env gen_context(system_u:object_r:docker_share_t,s0)
diff --git a/docker.if b/docker.if
new file mode 100644
-index 0000000..097c75c
+index 0000000..66fe66d
--- /dev/null
+++ b/docker.if
-@@ -0,0 +1,202 @@
+@@ -0,0 +1,344 @@
+
-+## policy for docker
++## The open-source application container engine.
+
+########################################
+##
-+## Execute TEMPLATE in the docker domin.
++## Execute docker in the docker domain.
+##
+##
+##
@@ -21989,6 +23203,25 @@ index 0000000..097c75c
+
+########################################
+##
++## Execute docker lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`docker_exec_lib',`
++ gen_require(`
++ type docker_var_lib_t;
++ ')
++
++ allow $1 docker_var_lib_t:dir search_dir_perms;
++ can_exec($1, docker_var_lib_t)
++')
++
++########################################
++##
+## Read docker lib files.
+##
+##
@@ -22008,6 +23241,25 @@ index 0000000..097c75c
+
+########################################
+##
++## Read docker share files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`docker_read_share_files',`
++ gen_require(`
++ type docker_share_t;
++ ')
++
++ files_search_var_lib($1)
++ read_files_pattern($1, docker_share_t, docker_share_t)
++')
++
++########################################
++##
+## Manage docker lib files.
+##
+##
@@ -22023,6 +23275,7 @@ index 0000000..097c75c
+
+ files_search_var_lib($1)
+ manage_files_pattern($1, docker_var_lib_t, docker_var_lib_t)
++ manage_lnk_files_pattern($1, docker_var_lib_t, docker_var_lib_t)
+')
+
+########################################
@@ -22046,6 +23299,41 @@ index 0000000..097c75c
+
+########################################
+##
++## Create objects in a docker var lib directory
++## with an automatic type transition to
++## a specified private type.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## The type of the object to create.
++##
++##
++##
++##
++## The class of the object to be created.
++##
++##
++##
++##
++## The name of the object being created.
++##
++##
++#
++interface(`docker_lib_filetrans',`
++ gen_require(`
++ type docker_var_lib_t;
++ ')
++
++ filetrans_pattern($1, docker_var_lib_t, $2, $3, $4)
++')
++
++########################################
++##
+## Read docker PID files.
+##
+##
@@ -22087,30 +23375,109 @@ index 0000000..097c75c
+ ps_process_pattern($1, docker_t)
+')
+
++########################################
++##
++## Read and write docker shared memory.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`docker_rw_sem',`
++ gen_require(`
++ type docker_t;
++ ')
++
++ allow $1 docker_t:sem rw_sem_perms;
++')
++
++#######################################
++##
++## Read and write the docker pty type.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`docker_use_ptys',`
++ gen_require(`
++ type docker_devpts_t;
++ ')
++
++ allow $1 docker_devpts_t:chr_file rw_term_perms;
++')
++
++#######################################
++##
++## Allow domain to create docker content
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`docker_filetrans_named_content',`
++
++ gen_require(`
++ type docker_var_lib_t;
++ type docker_share_t;
++ type docker_log_t;
++ type docker_var_run_t;
++ ')
++
++ files_pid_filetrans($1, docker_var_run_t, file, "docker.pid")
++ files_pid_filetrans($1, docker_var_run_t, sock_file, "docker.sock")
++ logging_log_filetrans($1, docker_log_t, dir, "lxc")
++ files_var_lib_filetrans($1, docker_var_lib_t, dir, "docker")
++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "config.env")
++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "hosts")
++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "hostname")
++ filetrans_pattern($1, docker_var_lib_t, docker_share_t, dir, "init")
++')
+
+########################################
+##
-+## All of the rules required to administrate
-+## an docker environment
++## Connect to docker over a unix stream socket.
+##
+##
+##
+## Domain allowed access.
+##
+##
-+##
++#
++interface(`docker_stream_connect',`
++ gen_require(`
++ type docker_t, docker_var_run_t;
++ ')
++
++ files_search_pids($1)
++ stream_connect_pattern($1, docker_var_run_t, docker_var_run_t, docker_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an docker environment
++##
++##
+##
-+## Role allowed access.
++## Domain allowed access.
+##
+##
-+##
+#
+interface(`docker_admin',`
+ gen_require(`
+ type docker_t;
-+ type docker_var_lib_t;
-+ type docker_var_run_t;
-+ type docker_unit_file_t;
++ type docker_var_lib_t, docker_var_run_t;
++ type docker_unit_file_t;
++ type docker_lock_t;
++ type docker_log_t;
+ ')
+
+ allow $1 docker_t:process { ptrace signal_perms };
@@ -22122,38 +23489,27 @@ index 0000000..097c75c
+ files_search_pids($1)
+ admin_pattern($1, docker_var_run_t)
+
++ files_search_locks($1)
++ admin_pattern($1, docker_lock_t)
++
++ logging_search_logs($1)
++ admin_pattern($1, docker_log_t)
++
+ docker_systemctl($1)
+ admin_pattern($1, docker_unit_file_t)
+ allow $1 docker_unit_file_t:service all_service_perms;
++
+ optional_policy(`
+ systemd_passwd_agent_exec($1)
+ systemd_read_fifo_file_passwd_run($1)
+ ')
+')
-+
-+########################################
-+##
-+## Read and write docker shared memory.
-+##
-+##
-+##
-+## Domain allowed access.
-+##
-+##
-+#
-+interface(`docker_rw_sem',`
-+ gen_require(`
-+ type docker_t;
-+ ')
-+
-+ allow $1 docker_t:sem rw_sem_perms;
-+')
diff --git a/docker.te b/docker.te
new file mode 100644
-index 0000000..1229d66
+index 0000000..c80e06c
--- /dev/null
+++ b/docker.te
-@@ -0,0 +1,133 @@
+@@ -0,0 +1,265 @@
+policy_module(docker, 1.0.0)
+
+########################################
@@ -22161,35 +23517,70 @@ index 0000000..1229d66
+# Declarations
+#
+
++##
++##
++## Determine whether docker can
++## connect to all TCP ports.
++##
++##
++gen_tunable(docker_connect_any, false)
++
++##
++##
++## Allow docker to transition to unconfined containers.
++##
++##
++gen_tunable(docker_transition_unconfined, false)
++
+type docker_t;
+type docker_exec_t;
+init_daemon_domain(docker_t, docker_exec_t)
++domain_subj_id_change_exemption(docker_t)
++domain_role_change_exemption(docker_t)
+
+type docker_var_lib_t;
+files_type(docker_var_lib_t)
+
++type docker_lock_t;
++files_lock_file(docker_lock_t)
++
+type docker_log_t;
+logging_log_file(docker_log_t)
+
+type docker_tmp_t;
+files_tmp_file(docker_tmp_t)
+
++type docker_tmpfs_t;
++files_tmpfs_file(docker_tmpfs_t)
++
+type docker_var_run_t;
+files_pid_file(docker_var_run_t)
+
+type docker_unit_file_t;
+systemd_unit_file(docker_unit_file_t)
+
++type docker_devpts_t;
++term_pty(docker_devpts_t)
++
++type docker_share_t;
++files_type(docker_share_t)
++
+########################################
+#
+# docker local policy
+#
-+allow docker_t self:capability { chown fowner fsetid mknod net_admin };
-+allow docker_t self:process signal_perms;
++allow docker_t self:capability { chown fowner fsetid mknod net_admin net_bind_service };
++allow docker_t self:process { getattr signal_perms };
+allow docker_t self:fifo_file rw_fifo_file_perms;
+allow docker_t self:unix_stream_socket create_stream_socket_perms;
++allow docker_t self:tcp_socket create_stream_socket_perms;
++allow docker_t self:udp_socket create_socket_perms;
+allow docker_t self:capability2 block_suspend;
+
++manage_dirs_pattern(docker_t, docker_lock_t, docker_lock_t)
++manage_files_pattern(docker_t, docker_lock_t, docker_lock_t)
++files_lock_filetrans(docker_t, docker_lock_t, { dir file }, "lxc")
++
+manage_dirs_pattern(docker_t, docker_log_t, docker_log_t)
+manage_files_pattern(docker_t, docker_log_t, docker_log_t)
+manage_lnk_files_pattern(docker_t, docker_log_t, docker_log_t)
@@ -22200,6 +23591,19 @@ index 0000000..1229d66
+manage_lnk_files_pattern(docker_t, docker_tmp_t, docker_tmp_t)
+files_tmp_filetrans(docker_t, docker_tmp_t, { dir file lnk_file })
+
++manage_dirs_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t)
++manage_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t)
++manage_lnk_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t)
++manage_fifo_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t)
++manage_chr_files_pattern(docker_t, docker_tmpfs_t, docker_tmpfs_t)
++fs_tmpfs_filetrans(docker_t, docker_tmpfs_t, { dir file })
++
++manage_dirs_pattern(docker_t, docker_share_t, docker_share_t)
++manage_files_pattern(docker_t, docker_share_t, docker_share_t)
++manage_lnk_files_pattern(docker_t, docker_share_t, docker_share_t)
++can_exec(docker_t, docker_share_t)
++docker_filetrans_named_content(docker_t)
++
+manage_dirs_pattern(docker_t, docker_var_lib_t, docker_var_lib_t)
+manage_chr_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t)
+manage_blk_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t)
@@ -22213,9 +23617,13 @@ index 0000000..1229d66
+manage_lnk_files_pattern(docker_t, docker_var_run_t, docker_var_run_t)
+files_pid_filetrans(docker_t, docker_var_run_t, { dir file lnk_file sock_file })
+
++allow docker_t docker_devpts_t:chr_file { rw_chr_file_perms setattr_chr_file_perms };
++term_create_pty(docker_t, docker_devpts_t)
++
+kernel_read_system_state(docker_t)
+kernel_read_network_state(docker_t)
+kernel_read_all_sysctls(docker_t)
++kernel_rw_net_sysctls(docker_t)
+
+domain_use_interactive_fds(docker_t)
+
@@ -22223,17 +23631,38 @@ index 0000000..1229d66
+corecmd_exec_shell(docker_t)
+
+corenet_tcp_bind_generic_node(docker_t)
++corenet_tcp_sendrecv_generic_if(docker_t)
++corenet_tcp_sendrecv_generic_node(docker_t)
++corenet_tcp_sendrecv_generic_port(docker_t)
++corenet_tcp_bind_all_ports(docker_t)
++corenet_tcp_connect_http_port(docker_t)
++corenet_tcp_connect_commplex_main_port(docker_t)
++corenet_udp_sendrecv_generic_if(docker_t)
++corenet_udp_sendrecv_generic_node(docker_t)
++corenet_udp_sendrecv_all_ports(docker_t)
++corenet_udp_bind_generic_node(docker_t)
++corenet_udp_bind_all_ports(docker_t)
+
+files_read_etc_files(docker_t)
+
+fs_read_cgroup_files(docker_t)
++fs_read_tmpfs_symlinks(docker_t)
++
++storage_raw_rw_fixed_disk(docker_t)
+
+auth_use_nsswitch(docker_t)
+
++init_read_state(docker_t)
++
++logging_send_audit_msgs(docker_t)
++logging_send_syslog_msg(docker_t)
++
+miscfiles_read_localization(docker_t)
+
+mount_domtrans(docker_t)
+
++seutil_read_default_contexts(docker_t)
++
+sysnet_dns_name_resolve(docker_t)
+sysnet_exec_ifconfig(docker_t)
+
@@ -22249,44 +23678,103 @@ index 0000000..1229d66
+# lxc rules
+#
+
-+allow docker_t self:capability { sys_admin sys_boot dac_override setpcap sys_ptrace };
-+allow docker_t self:process { setsched signal_perms };
-+allow docker_t self:netlink_route_socket nlmsg_write;
-+allow docker_t self:unix_dgram_socket create_socket_perms;
++allow docker_t self:capability { dac_override setgid setpcap setuid sys_admin sys_boot sys_chroot sys_ptrace };
++
++allow docker_t self:process { getcap setcap setexec setpgid setsched signal_perms };
++
++allow docker_t self:netlink_route_socket rw_netlink_socket_perms;;
++allow docker_t self:netlink_audit_socket create_netlink_socket_perms;
++allow docker_t self:unix_dgram_socket { create_socket_perms sendto };
++allow docker_t self:unix_stream_socket { create_stream_socket_perms connectto };
+
+allow docker_t docker_var_lib_t:dir mounton;
++allow docker_t docker_var_lib_t:chr_file mounton;
++can_exec(docker_t, docker_var_lib_t)
+
+kernel_setsched(docker_t)
++kernel_get_sysvipc_info(docker_t)
++kernel_request_load_module(docker_t)
++kernel_mounton_messages(docker_t)
+
+dev_getattr_all_blk_files(docker_t)
++dev_getattr_sysfs_fs(docker_t)
+dev_read_urand(docker_t)
+dev_read_lvm_control(docker_t)
+dev_read_sysfs(docker_t)
++dev_rw_loop_control(docker_t)
++dev_rw_lvm_control(docker_t)
+
++files_getattr_isid_type_dirs(docker_t)
+files_manage_isid_type_dirs(docker_t)
+files_manage_isid_type_files(docker_t)
+files_manage_isid_type_symlinks(docker_t)
+files_manage_isid_type_chr_files(docker_t)
++files_manage_isid_type_blk_files(docker_t)
+files_exec_isid_files(docker_t)
+files_mounton_isid(docker_t)
+files_mounton_non_security(docker_t)
++files_mounton_isid_type_chr_file(docker_t)
+
+fs_mount_all_fs(docker_t)
+fs_unmount_all_fs(docker_t)
+fs_remount_all_fs(docker_t)
++files_mounton_isid(docker_t)
+fs_manage_cgroup_dirs(docker_t)
+fs_manage_cgroup_files(docker_t)
++fs_relabelfrom_xattr_fs(docker_t)
++fs_relabelfrom_tmpfs(docker_t)
+
+term_use_generic_ptys(docker_t)
+term_use_ptmx(docker_t)
+term_getattr_pty_fs(docker_t)
++term_relabel_pty_fs(docker_t)
++term_mounton_unallocated_ttys(docker_t)
+
+modutils_domtrans_insmod(docker_t)
+
+optional_policy(`
++ dbus_system_bus_client(docker_t)
++ init_dbus_chat(docker_t)
++
++ optional_policy(`
++ systemd_dbus_chat_logind(docker_t)
++ ')
++')
++
++optional_policy(`
++ udev_read_db(docker_t)
++')
++
++optional_policy(`
+ virt_read_config(docker_t)
+ virt_exec(docker_t)
++ virt_stream_connect(docker_t)
++ virt_stream_connect_sandbox(docker_t)
++ virt_exec_sandbox_files(docker_t)
++ virt_manage_sandbox_files(docker_t)
++ virt_relabel_sandbox_filesystem(docker_t)
++ # for lxc
++ virt_transition_svirt_sandbox(docker_t, system_r)
++ virt_mounton_sandbox_file(docker_t)
++')
++
++tunable_policy(`docker_connect_any',`
++ corenet_tcp_connect_all_ports(docker_t)
++ corenet_sendrecv_all_packets(docker_t)
++ corenet_tcp_sendrecv_all_ports(docker_t)
++')
++
++optional_policy(`
++ tunable_policy(`docker_transition_unconfined',`
++ unconfined_transition(docker_t, docker_share_t)
++ unconfined_transition(docker_t, docker_var_lib_t)
++ ')
++')
++
++optional_policy(`
++ unconfined_domain(docker_t)
+')
++
diff --git a/dovecot.fc b/dovecot.fc
index c880070..4448055 100644
--- a/dovecot.fc
@@ -22363,7 +23851,7 @@ index c880070..4448055 100644
-/var/spool/dovecot(/.*)? gen_context(system_u:object_r:dovecot_spool_t,s0)
+/var/spool/dovecot(/.*)? gen_context(system_u:object_r:dovecot_spool_t,s0)
diff --git a/dovecot.if b/dovecot.if
-index dbcac59..66d42bb 100644
+index dbcac59..f3e446c 100644
--- a/dovecot.if
+++ b/dovecot.if
@@ -1,29 +1,49 @@
@@ -22490,8 +23978,30 @@ index dbcac59..66d42bb 100644
##
##
##
-@@ -122,8 +138,8 @@ interface(`dovecot_write_inherited_tmp_files',`
+@@ -120,10 +136,30 @@ interface(`dovecot_write_inherited_tmp_files',`
+ allow $1 dovecot_tmp_t:file write;
+ ')
++####################################
++##
++## Read dovecot configuration file.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`dovecot_read_config',`
++ gen_require(`
++ type dovecot_etc_t;
++ ')
++
++ files_search_etc($1)
++ list_dirs_pattern($1, dovecot_etc_t, dovecot_etc_t)
++ read_files_pattern($1, dovecot_etc_t, dovecot_etc_t)
++')
++
########################################
##
-## All of the rules required to
@@ -22501,7 +24011,7 @@ index dbcac59..66d42bb 100644
##
##
##
-@@ -132,21 +148,24 @@ interface(`dovecot_write_inherited_tmp_files',`
+@@ -132,21 +168,24 @@ interface(`dovecot_write_inherited_tmp_files',`
##
##
##
@@ -22532,7 +24042,7 @@ index dbcac59..66d42bb 100644
init_labeled_script_domtrans($1, dovecot_initrc_exec_t)
domain_system_change_exemption($1)
-@@ -156,20 +175,25 @@ interface(`dovecot_admin',`
+@@ -156,20 +195,25 @@ interface(`dovecot_admin',`
files_list_etc($1)
admin_pattern($1, dovecot_etc_t)
@@ -22565,7 +24075,7 @@ index dbcac59..66d42bb 100644
+ admin_pattern($1, dovecot_passwd_t)
')
diff --git a/dovecot.te b/dovecot.te
-index a7bfaf0..d4a79a1 100644
+index a7bfaf0..38bfca8 100644
--- a/dovecot.te
+++ b/dovecot.te
@@ -1,4 +1,4 @@
@@ -22926,7 +24436,7 @@ index a7bfaf0..d4a79a1 100644
allow dovecot_deliver_t dovecot_cert_t:dir search_dir_perms;
append_files_pattern(dovecot_deliver_t, dovecot_var_log_t, dovecot_var_log_t)
-@@ -289,35 +316,43 @@ manage_files_pattern(dovecot_deliver_t, dovecot_deliver_tmp_t, dovecot_deliver_t
+@@ -289,35 +316,44 @@ manage_files_pattern(dovecot_deliver_t, dovecot_deliver_tmp_t, dovecot_deliver_t
files_tmp_filetrans(dovecot_deliver_t, dovecot_deliver_tmp_t, { file dir })
allow dovecot_deliver_t dovecot_var_run_t:dir list_dir_perms;
@@ -22953,6 +24463,7 @@ index a7bfaf0..d4a79a1 100644
-logging_search_logs(dovecot_deliver_t)
+files_search_tmp(dovecot_deliver_t)
+files_dontaudit_getattr_all_dirs(dovecot_deliver_t)
++files_search_all_mountpoints(dovecot_deliver_t)
-tunable_policy(`use_nfs_home_dirs',`
- fs_manage_nfs_dirs(dovecot_deliver_t)
@@ -22987,7 +24498,7 @@ index a7bfaf0..d4a79a1 100644
mta_read_queue(dovecot_deliver_t)
')
-@@ -326,5 +361,6 @@ optional_policy(`
+@@ -326,5 +362,6 @@ optional_policy(`
')
optional_policy(`
@@ -23137,7 +24648,7 @@ index 9a21639..26c5986 100644
')
+
diff --git a/drbd.te b/drbd.te
-index 8e5ee54..6e11edb 100644
+index 8e5ee54..bdd8883 100644
--- a/drbd.te
+++ b/drbd.te
@@ -28,7 +28,7 @@ dontaudit drbd_t self:capability sys_tty_config;
@@ -23149,7 +24660,13 @@ index 8e5ee54..6e11edb 100644
manage_dirs_pattern(drbd_t, drbd_var_lib_t, drbd_var_lib_t)
manage_files_pattern(drbd_t, drbd_var_lib_t, drbd_var_lib_t)
-@@ -46,10 +46,6 @@ dev_read_rand(drbd_t)
+@@ -42,14 +42,12 @@ can_exec(drbd_t, drbd_exec_t)
+
+ kernel_read_system_state(drbd_t)
+
++corecmd_exec_bin(drbd_t)
++
+ dev_read_rand(drbd_t)
dev_read_sysfs(drbd_t)
dev_read_urand(drbd_t)
@@ -23532,9 +25049,18 @@ index 266cb8f..b619351 100644
+ procmail_domtrans(dspam_t)
+')
diff --git a/entropyd.te b/entropyd.te
-index a0da189..d8bc9d5 100644
+index a0da189..dc22b89 100644
--- a/entropyd.te
+++ b/entropyd.te
+@@ -12,7 +12,7 @@ policy_module(entropyd, 1.7.2)
+ ## the entropy feeds.
+ ##
+ ##
+-gen_tunable(entropyd_use_audio, false)
++gen_tunable(entropyd_use_audio, true)
+
+ type entropyd_t;
+ type entropyd_exec_t;
@@ -45,9 +45,6 @@ dev_write_urand(entropyd_t)
dev_read_rand(entropyd_t)
dev_write_rand(entropyd_t)
@@ -24119,7 +25645,7 @@ index 50d0084..6565422 100644
fail2ban_run_client($1, $2)
diff --git a/fail2ban.te b/fail2ban.te
-index 0872e50..95bb886 100644
+index 0872e50..cdea6d0 100644
--- a/fail2ban.te
+++ b/fail2ban.te
@@ -37,7 +37,7 @@ role fail2ban_client_roles types fail2ban_client_t;
@@ -24196,7 +25722,7 @@ index 0872e50..95bb886 100644
shorewall_domtrans(fail2ban_t)
')
-@@ -129,22 +142,25 @@ allow fail2ban_client_t self:unix_stream_socket { create connect write read };
+@@ -129,22 +142,29 @@ allow fail2ban_client_t self:unix_stream_socket { create connect write read };
domtrans_pattern(fail2ban_client_t, fail2ban_exec_t, fail2ban_t)
@@ -24226,11 +25752,15 @@ index 0872e50..95bb886 100644
-
userdom_dontaudit_search_user_home_dirs(fail2ban_client_t)
userdom_use_user_terminals(fail2ban_client_t)
++
++optional_policy(`
++ apache_read_log(fail2ban_client_t)
++')
diff --git a/fcoe.te b/fcoe.te
-index 79b9273..76b7ed5 100644
+index 79b9273..28dec44 100644
--- a/fcoe.te
+++ b/fcoe.te
-@@ -20,20 +20,20 @@ files_pid_file(fcoemon_var_run_t)
+@@ -20,25 +20,31 @@ files_pid_file(fcoemon_var_run_t)
# Local policy
#
@@ -24255,6 +25785,17 @@ index 79b9273..76b7ed5 100644
logging_send_syslog_msg(fcoemon_t)
+ miscfiles_read_localization(fcoemon_t)
+
++userdom_dgram_send(fcoemon_t)
++
+ optional_policy(`
+ lldpad_dgram_send(fcoemon_t)
+ ')
++
++optional_policy(`
++ networkmanager_dgram_send(fcoemon_t)
++')
diff --git a/fetchmail.fc b/fetchmail.fc
index 2486e2a..fef9bff 100644
--- a/fetchmail.fc
@@ -24413,7 +25954,7 @@ index 21d7b84..0e272bd 100644
/etc/firewalld(/.*)? gen_context(system_u:object_r:firewalld_etc_rw_t,s0)
diff --git a/firewalld.if b/firewalld.if
-index 5cf6ac6..0fc685b 100644
+index 5cf6ac6..1893f7f 100644
--- a/firewalld.if
+++ b/firewalld.if
@@ -2,6 +2,66 @@
@@ -24513,7 +26054,12 @@ index 5cf6ac6..0fc685b 100644
##
##
##
-@@ -45,10 +124,14 @@ interface(`firewalld_admin',`
+@@ -41,14 +120,18 @@ interface(`firewalld_dbus_chat',`
+ interface(`firewalld_admin',`
+ gen_require(`
+ type firewalld_t, firewalld_initrc_exec_t;
+- type firewall_etc_rw_t, firewalld_var_run_t;
++ type firewalld_etc_rw_t, firewalld_var_run_t;
type firewalld_var_log_t;
')
@@ -24535,7 +26081,8 @@ index 5cf6ac6..0fc685b 100644
admin_pattern($1, firewalld_var_log_t)
- files_search_etc($1)
- admin_pattern($1, firewall_etc_rw_t)
+- admin_pattern($1, firewall_etc_rw_t)
++ admin_pattern($1, firewalld_etc_rw_t)
+
+ admin_pattern($1, firewalld_unit_file_t)
+ firewalld_systemctl($1)
@@ -24960,18 +26507,19 @@ index c12c067..a415012 100644
optional_policy(`
diff --git a/fprintd.te b/fprintd.te
-index c81b6e8..34e1f1c 100644
+index c81b6e8..ed04b9e 100644
--- a/fprintd.te
+++ b/fprintd.te
-@@ -20,6 +20,7 @@ files_type(fprintd_var_lib_t)
+@@ -20,6 +20,8 @@ files_type(fprintd_var_lib_t)
allow fprintd_t self:capability sys_nice;
allow fprintd_t self:process { getsched setsched signal sigkill };
allow fprintd_t self:fifo_file rw_fifo_file_perms;
+allow fprintd_t self:netlink_kobject_uevent_socket create_socket_perms;
++allow fprintd_t self:unix_dgram_socket { create_socket_perms sendto };
manage_dirs_pattern(fprintd_t, fprintd_var_lib_t, fprintd_var_lib_t)
manage_files_pattern(fprintd_t, fprintd_var_lib_t, fprintd_var_lib_t)
-@@ -28,16 +29,13 @@ kernel_read_system_state(fprintd_t)
+@@ -28,15 +30,14 @@ kernel_read_system_state(fprintd_t)
dev_list_usbfs(fprintd_t)
dev_read_sysfs(fprintd_t)
@@ -24985,11 +26533,11 @@ index c81b6e8..34e1f1c 100644
auth_use_nsswitch(fprintd_t)
-miscfiles_read_localization(fprintd_t)
--
++logging_send_syslog_msg(fprintd_t)
+
userdom_use_user_ptys(fprintd_t)
userdom_read_all_users_state(fprintd_t)
-
-@@ -54,8 +52,13 @@ optional_policy(`
+@@ -54,8 +55,17 @@ optional_policy(`
')
')
@@ -25002,8 +26550,324 @@ index c81b6e8..34e1f1c 100644
+')
+
+optional_policy(`
++ udev_read_db(fprintd_t)
++')
++
++optional_policy(`
+ xserver_read_state_xdm(fprintd_t)
')
+diff --git a/freeipmi.fc b/freeipmi.fc
+new file mode 100644
+index 0000000..0942a2e
+--- /dev/null
++++ b/freeipmi.fc
+@@ -0,0 +1,17 @@
++/usr/lib/systemd/system/bmc-watchdog.* -- gen_context(system_u:object_r:freeipmi_bmc_watchdog_unit_file_t,s0)
++/usr/lib/systemd/system/ipmidetectd.* -- gen_context(system_u:object_r:freeipmi_ipmidetectd_unit_file_t,s0)
++/usr/lib/systemd/system/ipmiseld.* -- gen_context(system_u:object_r:freeipmi_ipmiseld_unit_file_t,s0)
++
++/usr/sbin/bmc-watchdog -- gen_context(system_u:object_r:freeipmi_bmc_watchdog_exec_t,s0)
++/usr/sbin/ipmidetectd -- gen_context(system_u:object_r:freeipmi_ipmidetectd_exec_t,s0)
++/usr/sbin/ipmiseld -- gen_context(system_u:object_r:freeipmi_ipmiseld_exec_t,s0)
++
++/var/cache/ipmiseld(/.*)? gen_context(system_u:object_r:freeipmi_var_cache_t,s0)
++/var/cache/ipmimonitoringsdrcache(/.*)? gen_context(system_u:object_r:freeipmi_var_cache_t,s0)
++
++/var/lib/freeipmi(/.*)? gen_context(system_u:object_r:freeipmi_var_lib_t,s0)
++
++
++/var/run/ipmidetectd\.pid -- gen_context(system_u:object_r:freeipmi_ipmidetectd_var_run_t,s0)
++/var/run/ipmiseld\.pid -- gen_context(system_u:object_r:freeipmi_ipmiseld_var_run_t,s0)
++/var/run/bmc-watchdog\.pid -- gen_context(system_u:object_r:freeipmi_bmc_watchdog_var_run_t,s0)
+diff --git a/freeipmi.if b/freeipmi.if
+new file mode 100644
+index 0000000..9715f27
+--- /dev/null
++++ b/freeipmi.if
+@@ -0,0 +1,73 @@
++## Remote-Console (out-of-band) and System Management Software (in-band) based on Intelligent Platform Management Interface specification
++
++#####################################
++##
++## Creates types and rules for a basic
++## freeipmi init daemon domain.
++##
++##
++##
++## Prefix for the domain.
++##
++##
++#
++template(`freeipmi_domain_template',`
++ gen_require(`
++ attribute freeipmi_domain, freeipmi_pid;
++ ')
++
++ #############################
++ #
++ # Declarations
++ #
++
++ type freeipmi_$1_t, freeipmi_domain;
++ type freeipmi_$1_exec_t;
++ init_daemon_domain(freeipmi_$1_t, freeipmi_$1_exec_t)
++ role system_r types freeipmi_$1_t;
++
++ type freeipmi_$1_unit_file_t;
++ systemd_unit_file(freeipmi_$1_unit_file_t)
++
++ type freeipmi_$1_var_run_t, freeipmi_pid;
++ files_pid_file(freeipmi_$1_var_run_t)
++
++ #############################
++ #
++ # Local policy
++ #
++
++ manage_files_pattern(freeipmi_$1_t, freeipmi_$1_var_run_t, freeipmi_$1_var_run_t)
++
++ kernel_read_system_state(freeipmi_$1_t)
++
++ corenet_all_recvfrom_netlabel(freeipmi_$1_t)
++ corenet_all_recvfrom_unlabeled(freeipmi_$1_t)
++
++ dev_read_raw_memory(freeipmi_$1_t)
++
++ auth_use_nsswitch(freeipmi_$1_t)
++
++ logging_send_syslog_msg(freeipmi_$1_t)
++')
++
++####################################
++##
++## Connect to cluster domains over a unix domain
++## stream socket.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`freeipmi_stream_connect',`
++ gen_require(`
++ attribute freeipmi_domain, freeipmi_pid;
++ ')
++
++ files_search_pids($1)
++ stream_connect_pattern($1, freeipmi_pid, freeipmi_pid, freeipmi_domain)
++')
++
+diff --git a/freeipmi.te b/freeipmi.te
+new file mode 100644
+index 0000000..8071a76
+--- /dev/null
++++ b/freeipmi.te
+@@ -0,0 +1,75 @@
++policy_module(freeipmi, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++attribute freeipmi_domain;
++attribute freeipmi_pid;
++
++freeipmi_domain_template(ipmidetectd)
++freeipmi_domain_template(ipmiseld)
++freeipmi_domain_template(bmc_watchdog)
++
++type freeipmi_var_lib_t;
++files_type(freeipmi_var_lib_t)
++
++type freeipmi_var_cache_t;
++files_type(freeipmi_var_cache_t)
++
++########################################
++#
++# freeipmi_domain local policy
++#
++
++allow freeipmi_domain self:fifo_file rw_fifo_file_perms;
++allow freeipmi_domain self:unix_stream_socket create_stream_socket_perms;
++allow freeipmi_domain self:sem create_sem_perms;
++allow freeipmi_domain self:tcp_socket { listen create_stream_socket_perms };
++
++manage_dirs_pattern(freeipmi_domain, freeipmi_var_cache_t, freeipmi_var_cache_t)
++manage_files_pattern(freeipmi_domain, freeipmi_var_cache_t, freeipmi_var_cache_t)
++manage_lnk_files_pattern(freeipmi_domain, freeipmi_var_cache_t, freeipmi_var_cache_t)
++files_var_filetrans(freeipmi_domain, freeipmi_var_cache_t, { dir })
++
++manage_dirs_pattern(freeipmi_domain, freeipmi_var_lib_t, freeipmi_var_lib_t)
++manage_files_pattern(freeipmi_domain, freeipmi_var_lib_t, freeipmi_var_lib_t)
++manage_lnk_files_pattern(freeipmi_domain, freeipmi_var_lib_t, freeipmi_var_lib_t)
++files_var_lib_filetrans(freeipmi_domain, freeipmi_var_lib_t, { dir })
++
++dev_read_rand(freeipmi_domain)
++dev_read_urand(freeipmi_domain)
++
++sysnet_dns_name_resolve(freeipmi_domain)
++
++#######################################
++#
++# bmc-watchdog local policy
++#
++
++files_pid_filetrans(freeipmi_bmc_watchdog_t, freeipmi_bmc_watchdog_var_run_t, file, "bmc-watchdog.pid")
++
++dev_rw_ipmi_dev(freeipmi_bmc_watchdog_t)
++
++allow freeipmi_bmc_watchdog_t freeipmi_ipmiseld_t:sem rw_sem_perms;
++
++#######################################
++#
++# ipmidetectd local policy
++#
++
++files_pid_filetrans(freeipmi_ipmidetectd_t, freeipmi_ipmidetectd_var_run_t, file, "ipmidetectd.pid")
++
++corenet_tcp_bind_freeipmi_port(freeipmi_ipmidetectd_t)
++
++#######################################
++#
++# ipmiseld local policy
++#
++
++allow freeipmi_ipmiseld_t self:capability sys_rawio;
++
++allow freeipmi_ipmiseld_t freeipmi_bmc_watchdog_t:sem rw_sem_perms;
++
++files_pid_filetrans(freeipmi_ipmiseld_t, freeipmi_ipmiseld_var_run_t, file, "ipmiseld.pid")
+diff --git a/freqset.fc b/freqset.fc
+new file mode 100644
+index 0000000..3cd9c38
+--- /dev/null
++++ b/freqset.fc
+@@ -0,0 +1 @@
++/usr/lib/enlightenment/modules/cpufreq/linux-gnu-[^/]*/freqset -- gen_context(system_u:object_r:freqset_exec_t,s0)
+diff --git a/freqset.if b/freqset.if
+new file mode 100644
+index 0000000..190ccc0
+--- /dev/null
++++ b/freqset.if
+@@ -0,0 +1,76 @@
++
++## policy for freqset
++
++########################################
++##
++## Execute TEMPLATE in the freqset domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`freqset_domtrans',`
++ gen_require(`
++ type freqset_t, freqset_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, freqset_exec_t, freqset_t)
++')
++
++########################################
++##
++## Execute freqset in the freqset domain, and
++## allow the specified role the freqset domain.
++##
++##
++##
++## Domain allowed to transition
++##
++##
++##
++##
++## The role to be allowed the freqset domain.
++##
++##
++#
++interface(`freqset_run',`
++ gen_require(`
++ type freqset_t;
++ attribute_role freqset_roles;
++ ')
++
++ freqset_domtrans($1)
++ roleattribute $2 freqset_roles;
++')
++
++########################################
++##
++## Role access for freqset
++##
++##
++##
++## Role allowed access
++##
++##
++##
++##
++## User domain for the role
++##
++##
++#
++interface(`freqset_role',`
++ gen_require(`
++ type freqset_t;
++ attribute_role freqset_roles;
++ ')
++
++ roleattribute $1 freqset_roles;
++
++ freqset_domtrans($2)
++
++ ps_process_pattern($2, freqset_t)
++ allow $2 freqset_t:process { signull signal sigkill };
++')
+diff --git a/freqset.te b/freqset.te
+new file mode 100644
+index 0000000..0d09fbd
+--- /dev/null
++++ b/freqset.te
+@@ -0,0 +1,34 @@
++policy_module(freqset, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++attribute_role freqset_roles;
++roleattribute system_r freqset_roles;
++
++type freqset_t;
++type freqset_exec_t;
++application_domain(freqset_t, freqset_exec_t)
++
++role freqset_roles types freqset_t;
++
++########################################
++#
++# freqset local policy
++#
++allow freqset_t self:capability { setuid };
++
++allow freqset_t self:fifo_file manage_fifo_file_perms;
++allow freqset_t self:unix_stream_socket create_stream_socket_perms;
++
++dev_rw_sysfs(freqset_t)
++
++domain_use_interactive_fds(freqset_t)
++
++files_read_etc_files(freqset_t)
++
++miscfiles_read_localization(freqset_t)
++
++userdom_use_inherited_user_terminals(freqset_t)
diff --git a/ftp.fc b/ftp.fc
index ddb75c1..44f74e6 100644
--- a/ftp.fc
@@ -25112,7 +26976,7 @@ index d062080..97fb494 100644
ftp_run_ftpdctl($1, $2)
')
diff --git a/ftp.te b/ftp.te
-index e50f33c..6edd471 100644
+index e50f33c..de8e914 100644
--- a/ftp.te
+++ b/ftp.te
@@ -13,7 +13,7 @@ policy_module(ftp, 1.14.1)
@@ -25178,7 +27042,18 @@ index e50f33c..6edd471 100644
manage_dirs_pattern(ftpd_t, ftpd_tmpfs_t, ftpd_tmpfs_t)
manage_files_pattern(ftpd_t, ftpd_tmpfs_t, ftpd_tmpfs_t)
manage_lnk_files_pattern(ftpd_t, ftpd_tmpfs_t, ftpd_tmpfs_t)
-@@ -201,14 +214,13 @@ logging_log_filetrans(ftpd_t, xferlog_t, file)
+@@ -193,22 +206,19 @@ files_pid_filetrans(ftpd_t, ftpd_var_run_t, { file dir })
+
+ allow ftpd_t ftpdctl_tmp_t:sock_file delete_sock_file_perms;
+
+-allow ftpd_t xferlog_t:dir setattr_dir_perms;
+-append_files_pattern(ftpd_t, xferlog_t, xferlog_t)
+-create_files_pattern(ftpd_t, xferlog_t, xferlog_t)
+-setattr_files_pattern(ftpd_t, xferlog_t, xferlog_t)
+-logging_log_filetrans(ftpd_t, xferlog_t, file)
++manage_dirs_pattern(ftpd_t, xferlog_t, xferlog_t)
++manage_files_pattern(ftpd_t, xferlog_t, xferlog_t)
++logging_log_filetrans(ftpd_t, xferlog_t, { dir file })
kernel_read_kernel_sysctls(ftpd_t)
kernel_read_system_state(ftpd_t)
@@ -25194,7 +27069,7 @@ index e50f33c..6edd471 100644
corenet_all_recvfrom_netlabel(ftpd_t)
corenet_tcp_sendrecv_generic_if(ftpd_t)
corenet_udp_sendrecv_generic_if(ftpd_t)
-@@ -224,9 +236,12 @@ corenet_tcp_bind_ftp_port(ftpd_t)
+@@ -224,9 +234,12 @@ corenet_tcp_bind_ftp_port(ftpd_t)
corenet_sendrecv_ftp_data_server_packets(ftpd_t)
corenet_tcp_bind_ftp_data_port(ftpd_t)
@@ -25208,7 +27083,7 @@ index e50f33c..6edd471 100644
files_read_etc_runtime_files(ftpd_t)
files_search_var_lib(ftpd_t)
-@@ -245,7 +260,6 @@ logging_send_audit_msgs(ftpd_t)
+@@ -245,7 +258,6 @@ logging_send_audit_msgs(ftpd_t)
logging_send_syslog_msg(ftpd_t)
logging_set_loginuid(ftpd_t)
@@ -25216,7 +27091,7 @@ index e50f33c..6edd471 100644
miscfiles_read_public_files(ftpd_t)
seutil_dontaudit_search_config(ftpd_t)
-@@ -254,32 +268,49 @@ sysnet_use_ldap(ftpd_t)
+@@ -254,32 +266,50 @@ sysnet_use_ldap(ftpd_t)
userdom_dontaudit_use_unpriv_user_fds(ftpd_t)
userdom_dontaudit_search_user_home_dirs(ftpd_t)
@@ -25242,6 +27117,7 @@ index e50f33c..6edd471 100644
+tunable_policy(`ftpd_use_fusefs',`
+ fs_manage_fusefs_dirs(ftpd_t)
+ fs_manage_fusefs_files(ftpd_t)
++ fs_manage_fusefs_symlinks(ftpd_t)
+',`
+ fs_search_fusefs(ftpd_t)
+')
@@ -25273,7 +27149,7 @@ index e50f33c..6edd471 100644
')
tunable_policy(`ftpd_use_passive_mode',`
-@@ -299,22 +330,19 @@ tunable_policy(`ftpd_connect_db',`
+@@ -299,22 +329,19 @@ tunable_policy(`ftpd_connect_db',`
corenet_sendrecv_mssql_client_packets(ftpd_t)
corenet_tcp_connect_mssql_port(ftpd_t)
corenet_tcp_sendrecv_mssql_port(ftpd_t)
@@ -25301,7 +27177,7 @@ index e50f33c..6edd471 100644
userdom_tmp_filetrans_user_tmp(ftpd_t, { dir file })
')
-@@ -360,7 +388,7 @@ optional_policy(`
+@@ -360,7 +387,7 @@ optional_policy(`
selinux_validate_context(ftpd_t)
kerberos_keytab_template(ftpd, ftpd_t)
@@ -25310,7 +27186,7 @@ index e50f33c..6edd471 100644
')
optional_policy(`
-@@ -410,21 +438,20 @@ optional_policy(`
+@@ -410,21 +437,20 @@ optional_policy(`
#
stream_connect_pattern(ftpdctl_t, ftpd_var_run_t, ftpd_var_run_t, ftpd_t)
@@ -25334,7 +27210,7 @@ index e50f33c..6edd471 100644
miscfiles_read_public_files(anon_sftpd_t)
-@@ -437,23 +464,34 @@ tunable_policy(`sftpd_anon_write',`
+@@ -437,23 +463,34 @@ tunable_policy(`sftpd_anon_write',`
# Sftpd local policy
#
@@ -25375,7 +27251,7 @@ index e50f33c..6edd471 100644
')
tunable_policy(`sftpd_enable_homedirs && use_nfs_home_dirs',`
-@@ -475,21 +513,11 @@ tunable_policy(`sftpd_anon_write',`
+@@ -475,21 +512,11 @@ tunable_policy(`sftpd_anon_write',`
tunable_policy(`sftpd_full_access',`
allow sftpd_t self:capability { dac_override dac_read_search };
fs_read_noxattr_fs_files(sftpd_t)
@@ -25475,6 +27351,413 @@ index fc3b036..10a1bbe 100644
sysnet_read_config(gatekeeper_t)
userdom_dontaudit_use_unpriv_user_fds(gatekeeper_t)
+diff --git a/gear.fc b/gear.fc
+new file mode 100644
+index 0000000..5eabf35
+--- /dev/null
++++ b/gear.fc
+@@ -0,0 +1,7 @@
++/usr/bin/gear -- gen_context(system_u:object_r:gear_exec_t,s0)
++
++/usr/lib/systemd/system/gear.service -- gen_context(system_u:object_r:gear_unit_file_t,s0)
++
++/var/lib/containers/bin/gear -- gen_context(system_u:object_r:gear_exec_t,s0)
++
++/var/lib/gear(/.*)? gen_context(system_u:object_r:gear_var_lib_t,s0)
+diff --git a/gear.if b/gear.if
+new file mode 100644
+index 0000000..04e159f
+--- /dev/null
++++ b/gear.if
+@@ -0,0 +1,288 @@
++
++## The open-source application container engine.
++
++########################################
++##
++## Execute gear in the gear domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`gear_domtrans',`
++ gen_require(`
++ type gear_t, gear_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, gear_exec_t, gear_t)
++')
++
++########################################
++##
++## Search gear lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_search_lib',`
++ gen_require(`
++ type gear_var_lib_t;
++ ')
++
++ allow $1 gear_var_lib_t:dir search_dir_perms;
++ files_search_var_lib($1)
++')
++
++########################################
++##
++## Execute gear lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_exec_lib',`
++ gen_require(`
++ type gear_var_lib_t;
++ ')
++
++ allow $1 gear_var_lib_t:dir search_dir_perms;
++ can_exec($1, gear_var_lib_t)
++')
++
++########################################
++##
++## Read gear lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_read_lib_files',`
++ gen_require(`
++ type gear_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ read_files_pattern($1, gear_var_lib_t, gear_var_lib_t)
++')
++
++########################################
++##
++## Manage gear lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_manage_lib_files',`
++ gen_require(`
++ type gear_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_files_pattern($1, gear_var_lib_t, gear_var_lib_t)
++ manage_lnk_files_pattern($1, gear_var_lib_t, gear_var_lib_t)
++')
++
++########################################
++##
++## Manage gear lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_manage_lib_dirs',`
++ gen_require(`
++ type gear_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_dirs_pattern($1, gear_var_lib_t, gear_var_lib_t)
++')
++
++########################################
++##
++## Create objects in a gear var lib directory
++## with an automatic type transition to
++## a specified private type.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## The type of the object to create.
++##
++##
++##
++##
++## The class of the object to be created.
++##
++##
++##
++##
++## The name of the object being created.
++##
++##
++#
++interface(`gear_lib_filetrans',`
++ gen_require(`
++ type gear_var_lib_t;
++ ')
++
++ filetrans_pattern($1, gear_var_lib_t, $2, $3, $4)
++')
++
++########################################
++##
++## Read gear PID files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_read_pid_files',`
++ gen_require(`
++ type gear_var_run_t;
++ ')
++
++ files_search_pids($1)
++ read_files_pattern($1, gear_var_run_t, gear_var_run_t)
++')
++
++########################################
++##
++## Execute gear server in the gear domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`gear_systemctl',`
++ gen_require(`
++ type gear_t;
++ type gear_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 gear_unit_file_t:file read_file_perms;
++ allow $1 gear_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, gear_t)
++')
++
++########################################
++##
++## Read and write gear shared memory.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_rw_sem',`
++ gen_require(`
++ type gear_t;
++ ')
++
++ allow $1 gear_t:sem rw_sem_perms;
++')
++
++#######################################
++##
++## Read and write the gear pty type.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_use_ptys',`
++ gen_require(`
++ type gear_devpts_t;
++ ')
++
++ allow $1 gear_devpts_t:chr_file rw_term_perms;
++')
++
++#######################################
++##
++## Allow domain to create gear content
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_filetrans_named_content',`
++ gen_require(`
++ type gear_var_lib_t;
++ type gear_var_run_t;
++ ')
++
++ files_pid_filetrans($1, gear_var_run_t, file, "gear.pid")
++ files_var_lib_filetrans($1, gear_var_lib_t, dir, "gear")
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an gear environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gear_admin',`
++ gen_require(`
++ type gear_t;
++ type gear_var_lib_t, gear_var_run_t;
++ type gear_unit_file_t;
++ type gear_lock_t;
++ type gear_log_t;
++ ')
++
++ allow $1 gear_t:process { ptrace signal_perms };
++ ps_process_pattern($1, gear_t)
++
++ files_search_var_lib($1)
++ admin_pattern($1, gear_var_lib_t)
++
++ files_search_pids($1)
++ admin_pattern($1, gear_var_run_t)
++
++ logging_search_logs($1)
++ admin_pattern($1, gear_log_t)
++
++ gear_systemctl($1)
++ admin_pattern($1, gear_unit_file_t)
++ allow $1 gear_unit_file_t:service all_service_perms;
++')
+diff --git a/gear.te b/gear.te
+new file mode 100644
+index 0000000..6c32f79
+--- /dev/null
++++ b/gear.te
+@@ -0,0 +1,94 @@
++policy_module(gear, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type gear_t;
++type gear_exec_t;
++init_daemon_domain(gear_t, gear_exec_t)
++
++type gear_var_lib_t;
++files_type(gear_var_lib_t)
++
++type gear_log_t;
++logging_log_file(gear_log_t)
++
++type gear_var_run_t;
++files_pid_file(gear_var_run_t)
++
++type gear_unit_file_t;
++systemd_unit_file(gear_unit_file_t)
++
++########################################
++#
++# gear local policy
++#
++allow gear_t self:process { getattr signal_perms };
++allow gear_t self:fifo_file rw_fifo_file_perms;
++allow gear_t self:unix_stream_socket create_stream_socket_perms;
++allow gear_t self:tcp_socket create_stream_socket_perms;
++
++manage_dirs_pattern(gear_t, gear_log_t, gear_log_t)
++manage_files_pattern(gear_t, gear_log_t, gear_log_t)
++manage_lnk_files_pattern(gear_t, gear_log_t, gear_log_t)
++logging_log_filetrans(gear_t, gear_log_t, { dir file lnk_file })
++
++gear_filetrans_named_content(gear_t)
++
++manage_dirs_pattern(gear_t, gear_var_lib_t, gear_var_lib_t)
++manage_chr_files_pattern(gear_t, gear_var_lib_t, gear_var_lib_t)
++manage_blk_files_pattern(gear_t, gear_var_lib_t, gear_var_lib_t)
++manage_files_pattern(gear_t, gear_var_lib_t, gear_var_lib_t)
++manage_lnk_files_pattern(gear_t, gear_var_lib_t, gear_var_lib_t)
++files_var_lib_filetrans(gear_t, gear_var_lib_t, { dir file lnk_file })
++
++manage_dirs_pattern(gear_t, gear_var_run_t, gear_var_run_t)
++manage_files_pattern(gear_t, gear_var_run_t, gear_var_run_t)
++manage_sock_files_pattern(gear_t, gear_var_run_t, gear_var_run_t)
++manage_lnk_files_pattern(gear_t, gear_var_run_t, gear_var_run_t)
++files_pid_filetrans(gear_t, gear_var_run_t, { dir file lnk_file sock_file })
++
++kernel_read_system_state(gear_t)
++kernel_read_network_state(gear_t)
++kernel_read_all_sysctls(gear_t)
++kernel_rw_net_sysctls(gear_t)
++
++domain_use_interactive_fds(gear_t)
++
++corecmd_exec_bin(gear_t)
++corecmd_exec_shell(gear_t)
++
++corenet_tcp_bind_generic_node(gear_t)
++corenet_tcp_sendrecv_generic_if(gear_t)
++corenet_tcp_sendrecv_generic_node(gear_t)
++corenet_tcp_sendrecv_generic_port(gear_t)
++corenet_tcp_bind_gear_port(gear_t)
++
++files_read_etc_files(gear_t)
++
++fs_read_cgroup_files(gear_t)
++fs_read_tmpfs_symlinks(gear_t)
++
++auth_use_nsswitch(gear_t)
++
++init_read_state(gear_t)
++init_dbus_chat(gear_t)
++
++logging_send_audit_msgs(gear_t)
++logging_send_syslog_msg(gear_t)
++
++miscfiles_read_localization(gear_t)
++
++mount_domtrans(gear_t)
++
++seutil_read_default_contexts(gear_t)
++
++sysnet_dns_name_resolve(gear_t)
++
++systemd_manage_all_unit_files(gear_t)
++
++optional_policy(`
++ docker_stream_connect(gear_t)
++')
diff --git a/gift.te b/gift.te
index 395238e..af76abb 100644
--- a/gift.te
@@ -25570,7 +27853,7 @@ index 1e29af1..6c64f55 100644
+ userdom_user_home_dir_filetrans($1, git_user_content_t, dir, "public_git")
+')
diff --git a/git.te b/git.te
-index 93b0301..ad8eb38 100644
+index 93b0301..6acc1f0 100644
--- a/git.te
+++ b/git.te
@@ -49,14 +49,6 @@ gen_tunable(git_session_users, false)
@@ -25633,7 +27916,30 @@ index 93b0301..ad8eb38 100644
files_search_var_lib(git_system_t)
auth_use_nsswitch(git_system_t)
-@@ -255,12 +252,9 @@ tunable_policy(`git_cgi_use_nfs',`
+@@ -165,6 +162,10 @@ logging_send_syslog_msg(git_system_t)
+
+ tunable_policy(`git_system_enable_homedirs',`
+ userdom_search_user_home_dirs(git_system_t)
++ list_dirs_pattern(httpd_git_script_t, git_user_content_t, git_user_content_t)
++ list_dirs_pattern(git_system_t, git_user_content_t, git_user_content_t)
++ read_files_pattern(git_system_t, git_user_content_t, git_user_content_t)
++
+ ')
+
+ tunable_policy(`git_system_enable_homedirs && use_nfs_home_dirs',`
+@@ -248,6 +249,11 @@ tunable_policy(`git_cgi_use_nfs',`
+ fs_dontaudit_read_nfs_files(httpd_git_script_t)
+ ')
+
++
++optional_policy(`
++ gitosis_read_lib_files(httpd_git_script_t)
++')
++
+ ########################################
+ #
+ # Git global policy
+@@ -255,12 +261,9 @@ tunable_policy(`git_cgi_use_nfs',`
allow git_daemon self:fifo_file rw_fifo_file_perms;
@@ -26017,10 +28323,10 @@ index 0000000..1ed97fe
+
diff --git a/glusterd.te b/glusterd.te
new file mode 100644
-index 0000000..0f9d485
+index 0000000..36ff903
--- /dev/null
+++ b/glusterd.te
-@@ -0,0 +1,189 @@
+@@ -0,0 +1,200 @@
+policy_module(glusterfs, 1.0.1)
+
+##
@@ -26073,6 +28379,9 @@ index 0000000..0f9d485
+type glusterd_var_lib_t;
+files_type(glusterd_var_lib_t)
+
++type glusterd_brick_t;
++files_type(glusterd_brick_t)
++
+########################################
+#
+# Local policy
@@ -26109,10 +28418,18 @@ index 0000000..0f9d485
+
+manage_dirs_pattern(glusterd_t, glusterd_var_lib_t, glusterd_var_lib_t)
+manage_files_pattern(glusterd_t, glusterd_var_lib_t, glusterd_var_lib_t)
-+#manage_sock_files_pattern(glusterd_t, glusterd_var_lib_t, glusterd_var_lib_t)
++manage_sock_files_pattern(glusterd_t, glusterd_var_lib_t, glusterd_var_lib_t)
+files_var_lib_filetrans(glusterd_t, glusterd_var_lib_t, dir)
+relabel_files_pattern(glusterd_t, glusterd_var_lib_t, glusterd_var_lib_t)
+
++manage_dirs_pattern(glusterd_t, glusterd_brick_t, glusterd_brick_t)
++manage_files_pattern(glusterd_t, glusterd_brick_t, glusterd_brick_t)
++manage_fifo_files_pattern(glusterd_t, glusterd_brick_t, glusterd_brick_t)
++manage_lnk_files_pattern(glusterd_t, glusterd_brick_t, glusterd_brick_t)
++relabel_files_pattern(glusterd_t, glusterd_brick_t, glusterd_brick_t)
++relabel_lnk_files_pattern(glusterd_t, glusterd_brick_t, glusterd_brick_t)
++relabel_dirs_pattern(glusterd_t, glusterd_brick_t, glusterd_brick_t)
++
+can_exec(glusterd_t, glusterd_exec_t)
+
+kernel_read_system_state(glusterd_t)
@@ -26164,7 +28481,7 @@ index 0000000..0f9d485
+fs_unmount_all_fs(glusterd_t)
+fs_getattr_all_fs(glusterd_t)
+
-+files_mounton_mnt(glusterd_t)
++files_mounton_non_security(glusterd_t)
+
+storage_rw_fuse(glusterd_t)
+
@@ -26418,10 +28735,10 @@ index fd02acc..0000000
-
-miscfiles_read_localization(glusterd_t)
diff --git a/gnome.fc b/gnome.fc
-index e39de43..5818f74 100644
+index e39de43..6a6db28 100644
--- a/gnome.fc
+++ b/gnome.fc
-@@ -1,15 +1,58 @@
+@@ -1,15 +1,61 @@
-HOME_DIR/\.gconf(/.*)? gen_context(system_u:object_r:gconf_home_t,s0)
-HOME_DIR/\.gconfd(/.*)? gen_context(system_u:object_r:gconf_home_t,s0)
-HOME_DIR/\.gnome(/.*)? gen_context(system_u:object_r:gnome_home_t,s0)
@@ -26435,6 +28752,7 @@ index e39de43..5818f74 100644
+HOME_DIR/\.config(/.*)? gen_context(system_u:object_r:config_home_t,s0)
+HOME_DIR/\.kde(/.*)? gen_context(system_u:object_r:config_home_t,s0)
+HOME_DIR/\.nv(/.*)? gen_context(system_u:object_r:cache_home_t,s0)
++HOME_DIR/\.nv/GLCache(/.*)? gen_context(system_u:object_r:gstreamer_home_t,s0)
+HOME_DIR/\.gconf(d)?(/.*)? gen_context(system_u:object_r:gconf_home_t,s0)
+HOME_DIR/\.gnome2(/.*)? gen_context(system_u:object_r:gnome_home_t,s0)
+HOME_DIR/\.gnome2/keyrings(/.*)? gen_context(system_u:object_r:gkeyringd_gnome_home_t,s0)
@@ -26443,6 +28761,7 @@ index e39de43..5818f74 100644
+HOME_DIR/\.grl-bookmarks gen_context(system_u:object_r:gstreamer_home_t,s0)
+HOME_DIR/\.gstreamer-.* gen_context(system_u:object_r:gstreamer_home_t,s0)
+HOME_DIR/\.cache/gstreamer-.* gen_context(system_u:object_r:gstreamer_home_t,s0)
++HOME_DIR/\.cache/GLCache(/.*)? gen_context(system_u:object_r:gstreamer_home_t,s0)
+HOME_DIR/\.orc(/.*)? gen_context(system_u:object_r:gstreamer_home_t,s0)
+HOME_DIR/\.local.* gen_context(system_u:object_r:gconf_home_t,s0)
+HOME_DIR/\.local/share(/.*)? gen_context(system_u:object_r:data_home_t,s0)
@@ -26479,18 +28798,19 @@ index e39de43..5818f74 100644
+/usr/share/config(/.*)? gen_context(system_u:object_r:config_usr_t,s0)
+
/usr/bin/gnome-keyring-daemon -- gen_context(system_u:object_r:gkeyringd_exec_t,s0)
-
--/usr/lib/[^/]*/gconf/gconfd-2 -- gen_context(system_u:object_r:gconfd_exec_t,s0)
--/usr/libexec/gconfd-2 -- gen_context(system_u:object_r:gconfd_exec_t,s0)
++/usr/bin/mate-keyring-daemon -- gen_context(system_u:object_r:gkeyringd_exec_t,s0)
++
+# Don't use because toolchain is broken
+#/usr/libexec/gconfd-2 -- gen_context(system_u:object_r:gconfd_exec_t,s0)
+
+/usr/libexec/gconf-defaults-mechanism -- gen_context(system_u:object_r:gconfdefaultsm_exec_t,s0)
-+
+
+-/usr/lib/[^/]*/gconf/gconfd-2 -- gen_context(system_u:object_r:gconfd_exec_t,s0)
+-/usr/libexec/gconfd-2 -- gen_context(system_u:object_r:gconfd_exec_t,s0)
+/usr/libexec/gnome-system-monitor-mechanism -- gen_context(system_u:object_r:gnomesystemmm_exec_t,s0)
+/usr/libexec/kde(3|4)/ksysguardprocesslist_helper -- gen_context(system_u:object_r:gnomesystemmm_exec_t,s0)
diff --git a/gnome.if b/gnome.if
-index d03fd43..0e04529 100644
+index d03fd43..af9415c 100644
--- a/gnome.if
+++ b/gnome.if
@@ -1,123 +1,157 @@
@@ -27204,58 +29524,92 @@ index d03fd43..0e04529 100644
##
-## Create, read, write, and delete
-## generic gconf home content.
-+## Manage a sock_file in the generic cache home files (.cache)
++## write to generic cache home files (.cache)
##
##
##
-@@ -473,82 +519,73 @@ interface(`gnome_read_generic_gconf_home_content',`
+@@ -473,22 +519,18 @@ interface(`gnome_read_generic_gconf_home_content',`
##
##
#
-interface(`gnome_manage_generic_gconf_home_content',`
-+interface(`gnome_manage_generic_cache_sockets',`
++interface(`gnome_manage_generic_cache_files',`
gen_require(`
- type gconf_home_t;
+ type cache_home_t;
')
++ manage_files_pattern($1, cache_home_t, cache_home_t)
userdom_search_user_home_dirs($1)
- allow $1 gconf_home_t:dir manage_dir_perms;
- allow $1 gconf_home_t:file manage_file_perms;
- allow $1 gconf_home_t:fifo_file manage_fifo_file_perms;
- allow $1 gconf_home_t:lnk_file manage_lnk_file_perms;
- allow $1 gconf_home_t:sock_file manage_sock_file_perms;
-+ manage_sock_files_pattern($1, cache_home_t, cache_home_t)
')
########################################
##
-## Search generic gconf home directories.
++## Manage a sock_file in the generic cache home files (.cache)
+ ##
+ ##
+ ##
+@@ -496,79 +538,59 @@ interface(`gnome_manage_generic_gconf_home_content',`
+ ##
+ ##
+ #
+-interface(`gnome_search_generic_gconf_home',`
++interface(`gnome_manage_generic_cache_sockets',`
+ gen_require(`
+- type gconf_home_t;
++ type cache_home_t;
+ ')
+
+ userdom_search_user_home_dirs($1)
+- allow $1 gconf_home_t:dir search_dir_perms;
++ manage_sock_files_pattern($1, cache_home_t, cache_home_t)
+ ')
+
+ ########################################
+ ##
+-## Create objects in user home
+-## directories with the generic gconf
+-## home type.
+## Dontaudit read/write to generic cache home files (.cache)
##
##
##
-## Domain allowed access.
+-##
+-##
+-##
+-##
+-## Class of the object being created.
+-##
+-##
+-##
+-##
+-## The name of the object being created.
+## Domain to not audit.
##
##
#
--interface(`gnome_search_generic_gconf_home',`
+-interface(`gnome_home_filetrans_gconf_home',`
+interface(`gnome_dontaudit_rw_generic_cache_files',`
gen_require(`
- type gconf_home_t;
+ type cache_home_t;
')
-- userdom_search_user_home_dirs($1)
-- allow $1 gconf_home_t:dir search_dir_perms;
+- userdom_user_home_dir_filetrans($1, gconf_home_t, $2, $3)
+ dontaudit $1 cache_home_t:file rw_inherited_file_perms;
')
########################################
##
-## Create objects in user home
--## directories with the generic gconf
+-## directories with the generic gnome
-## home type.
+## read gnome homedir content (.config)
##
@@ -27275,14 +29629,14 @@ index d03fd43..0e04529 100644
-##
-##
#
--interface(`gnome_home_filetrans_gconf_home',`
+-interface(`gnome_home_filetrans_gnome_home',`
+interface(`gnome_read_config',`
gen_require(`
-- type gconf_home_t;
+- type gnome_home_t;
+ attribute gnome_home_type;
')
-- userdom_user_home_dir_filetrans($1, gconf_home_t, $2, $3)
+- userdom_user_home_dir_filetrans($1, gnome_home_t, $2, $3)
+ list_dirs_pattern($1, gnome_home_type, gnome_home_type)
+ read_files_pattern($1, gnome_home_type, gnome_home_type)
+ read_lnk_files_pattern($1, gnome_home_type, gnome_home_type)
@@ -27291,23 +29645,22 @@ index d03fd43..0e04529 100644
########################################
##
--## Create objects in user home
--## directories with the generic gnome
--## home type.
+-## Create objects in gnome gconf home
+-## directories with a private type.
+## Create objects in a Gnome gconf home directory
+## with an automatic type transition to
+## a specified private type.
##
##
##
- ## Domain allowed access.
- ##
+@@ -577,12 +599,12 @@ interface(`gnome_home_filetrans_gnome_home',`
##
-+##
-+##
+ ##
+ ##
+-## Private file type.
+## The type of the object to create.
-+##
-+##
+ ##
+ ##
##
##
-## Class of the object being created.
@@ -27315,18 +29668,19 @@ index d03fd43..0e04529 100644
##
##
##
-@@ -557,52 +594,77 @@ interface(`gnome_home_filetrans_gconf_home',`
+@@ -591,18 +613,18 @@ interface(`gnome_home_filetrans_gnome_home',`
##
##
#
--interface(`gnome_home_filetrans_gnome_home',`
+-interface(`gnome_gconf_home_filetrans',`
+interface(`gnome_data_filetrans',`
gen_require(`
-- type gnome_home_t;
+- type gconf_home_t;
+ type data_home_t;
')
-- userdom_user_home_dir_filetrans($1, gnome_home_t, $2, $3)
+- userdom_search_user_home_dirs($1)
+- filetrans_pattern($1, gconf_home_t, $2, $3, $4)
+ filetrans_pattern($1, data_home_t, $2, $3, $4)
+ gnome_search_gconf($1)
')
@@ -27334,44 +29688,40 @@ index d03fd43..0e04529 100644
-########################################
+#######################################
##
--## Create objects in gnome gconf home
--## directories with a private type.
+-## Read generic gnome keyring home files.
+## Read generic data home files.
##
##
##
- ## Domain allowed access.
+@@ -610,46 +632,80 @@ interface(`gnome_gconf_home_filetrans',`
##
##
--##
--##
--## Private file type.
--##
--##
--##
--##
--## Class of the object being created.
--##
-+#
+ #
+-interface(`gnome_read_keyring_home_files',`
+interface(`gnome_read_generic_data_home_files',`
-+ gen_require(`
+ gen_require(`
+- type gnome_home_t, gnome_keyring_home_t;
+ type data_home_t, gconf_home_t;
-+ ')
-+
+ ')
+
+- userdom_search_user_home_dirs($1)
+- read_files_pattern($1, { gnome_home_t gnome_keyring_home_t }, gnome_keyring_home_t)
+ read_files_pattern($1, { gconf_home_t data_home_t }, data_home_t)
+ read_lnk_files_pattern($1, { gconf_home_t data_home_t }, data_home_t)
-+')
-+
+ ')
+
+-########################################
+######################################
-+##
+ ##
+-## Send and receive messages from
+-## gnome keyring daemon over dbus.
+## Read generic data home dirs.
+##
+##
+##
+## Domain allowed access.
+##
- ##
--##
++##
+#
+interface(`gnome_read_generic_data_home_dirs',`
+ gen_require(`
@@ -27384,49 +29734,49 @@ index d03fd43..0e04529 100644
+#######################################
+##
+## Manage gconf data home files
-+##
+ ##
+-##
+##
##
--## The name of the object being created.
+-## The prefix of the user domain (e.g., user
+-## is the prefix for user_t).
+## Domain allowed access.
##
##
- #
--interface(`gnome_gconf_home_filetrans',`
++#
+interface(`gnome_manage_data',`
- gen_require(`
++ gen_require(`
+ type data_home_t;
- type gconf_home_t;
- ')
-
-- userdom_search_user_home_dirs($1)
-- filetrans_pattern($1, gconf_home_t, $2, $3, $4)
++ type gconf_home_t;
++ ')
++
+ allow $1 gconf_home_t:dir search_dir_perms;
+ manage_dirs_pattern($1, data_home_t, data_home_t)
+ manage_files_pattern($1, data_home_t, data_home_t)
+ manage_lnk_files_pattern($1, data_home_t, data_home_t)
- ')
-
- ########################################
- ##
--## Read generic gnome keyring home files.
++')
++
++########################################
++##
+## Read icc data home content.
- ##
++##
##
##
-@@ -610,93 +672,126 @@ interface(`gnome_gconf_home_filetrans',`
+ ## Domain allowed access.
##
##
#
--interface(`gnome_read_keyring_home_files',`
+-interface(`gnome_dbus_chat_gkeyringd',`
+interface(`gnome_read_home_icc_data_content',`
gen_require(`
-- type gnome_home_t, gnome_keyring_home_t;
+- type $1_gkeyringd_t;
+- class dbus send_msg;
+ type icc_data_home_t, gconf_home_t, data_home_t;
')
- userdom_search_user_home_dirs($1)
-- read_files_pattern($1, { gnome_home_t gnome_keyring_home_t }, gnome_keyring_home_t)
+- allow $2 $1_gkeyringd_t:dbus send_msg;
+- allow $1_gkeyringd_t $2:dbus send_msg;
++ userdom_search_user_home_dirs($1)
+ allow $1 { gconf_home_t data_home_t }:dir search_dir_perms;
+ list_dirs_pattern($1, icc_data_home_t, icc_data_home_t)
+ read_files_pattern($1, icc_data_home_t, icc_data_home_t)
@@ -27435,106 +29785,76 @@ index d03fd43..0e04529 100644
########################################
##
--## Send and receive messages from
+-## Send and receive messages from all
-## gnome keyring daemon over dbus.
+## Read inherited icc data home files.
##
--##
--##
--## The prefix of the user domain (e.g., user
--## is the prefix for user_t).
--##
--##
##
##
- ## Domain allowed access.
+@@ -657,46 +713,64 @@ interface(`gnome_dbus_chat_gkeyringd',`
##
##
#
--interface(`gnome_dbus_chat_gkeyringd',`
+-interface(`gnome_dbus_chat_all_gkeyringd',`
+interface(`gnome_read_inherited_home_icc_data_files',`
gen_require(`
-- type $1_gkeyringd_t;
+- attribute gkeyringd_domain;
- class dbus send_msg;
+ type icc_data_home_t;
')
-- allow $2 $1_gkeyringd_t:dbus send_msg;
-- allow $1_gkeyringd_t $2:dbus send_msg;
+- allow $1 gkeyringd_domain:dbus send_msg;
+- allow gkeyringd_domain $1:dbus send_msg;
+ allow $1 icc_data_home_t:file read_inherited_file_perms;
')
########################################
##
--## Send and receive messages from all
--## gnome keyring daemon over dbus.
+-## Connect to gnome keyring daemon
+-## with a unix stream socket.
+## Create gconf_home_t objects in the /root directory
##
- ##
- ##
- ## Domain allowed access.
- ##
- ##
-+##
+-##
++##
+##
-+## The class of the object to be created.
++## Domain allowed access.
+##
+##
-+##
++##
+##
-+## The name of the object being created.
++## The class of the object to be created.
+##
+##
- #
--interface(`gnome_dbus_chat_all_gkeyringd',`
-+interface(`gnome_admin_home_gconf_filetrans',`
- gen_require(`
-- attribute gkeyringd_domain;
-- class dbus send_msg;
-+ type gconf_home_t;
- ')
-
-- allow $1 gkeyringd_domain:dbus send_msg;
-- allow gkeyringd_domain $1:dbus send_msg;
-+ userdom_admin_home_dir_filetrans($1, gconf_home_t, $2, $3)
- ')
-
- ########################################
- ##
--## Connect to gnome keyring daemon
--## with a unix stream socket.
-+## Do not audit attempts to read
-+## inherited gconf config files.
- ##
--##
-+##
++##
##
-## The prefix of the user domain (e.g., user
-## is the prefix for user_t).
-+## Domain to not audit.
++## The name of the object being created.
##
##
+#
-+interface(`gnome_dontaudit_read_inherited_gconf_config_files',`
++interface(`gnome_admin_home_gconf_filetrans',`
+ gen_require(`
-+ type gconf_etc_t;
++ type gconf_home_t;
+ ')
+
-+ dontaudit $1 gconf_etc_t:file read_inherited_file_perms;
++ userdom_admin_home_dir_filetrans($1, gconf_home_t, $2, $3)
+')
+
+########################################
+##
-+## read gconf config files
++## Do not audit attempts to read
++## inherited gconf config files.
+##
##
##
- ## Domain allowed access.
+-## Domain allowed access.
++## Domain to not audit.
##
##
#
-interface(`gnome_stream_connect_gkeyringd',`
-+interface(`gnome_read_gconf_config',`
++interface(`gnome_dontaudit_read_inherited_gconf_config_files',`
gen_require(`
- type $1_gkeyringd_t, gnome_keyring_tmp_t;
+ type gconf_etc_t;
@@ -27542,6 +29862,31 @@ index d03fd43..0e04529 100644
- files_search_tmp($2)
- stream_connect_pattern($2, gnome_keyring_tmp_t, gnome_keyring_tmp_t, $1_gkeyringd_t)
++ dontaudit $1 gconf_etc_t:file read_inherited_file_perms;
+ ')
+
+ ########################################
+ ##
+-## Connect to all gnome keyring daemon
+-## with a unix stream socket.
++## read gconf config files
+ ##
+ ##
+ ##
+@@ -704,12 +778,966 @@ interface(`gnome_stream_connect_gkeyringd',`
+ ##
+ ##
+ #
+-interface(`gnome_stream_connect_all_gkeyringd',`
++interface(`gnome_read_gconf_config',`
+ gen_require(`
+- attribute gkeyringd_domain;
+- type gnome_keyring_tmp_t;
++ type gconf_etc_t;
+ ')
+
+- files_search_tmp($1)
+- stream_connect_pattern($1, gnome_keyring_tmp_t, gnome_keyring_tmp_t, gkeyringd_domain)
+ allow $1 gconf_etc_t:dir list_dir_perms;
+ read_files_pattern($1, gconf_etc_t, gconf_etc_t)
+ files_search_etc($1)
@@ -27564,22 +29909,19 @@ index d03fd43..0e04529 100644
+
+ allow $1 gconf_etc_t:dir list_dir_perms;
+ manage_files_pattern($1, gconf_etc_t, gconf_etc_t)
- ')
-
- ########################################
- ##
--## Connect to all gnome keyring daemon
--## with a unix stream socket.
++')
++
++########################################
++##
+## Execute gconf programs in
+## in the caller domain.
- ##
- ##
- ##
-@@ -704,12 +799,872 @@ interface(`gnome_stream_connect_gkeyringd',`
- ##
- ##
- #
--interface(`gnome_stream_connect_all_gkeyringd',`
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
+interface(`gnome_exec_gconf',`
+ gen_require(`
+ type gconfd_exec_t;
@@ -27924,6 +30266,23 @@ index d03fd43..0e04529 100644
+ read_files_pattern($1, config_home_t, config_home_t)
+ read_lnk_files_pattern($1, config_home_t, config_home_t)
+')
++#######################################
++##
++## append gnome homedir content (.config)
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gnome_append_home_config',`
++ gen_require(`
++ type config_home_t;
++ ')
++
++ append_files_pattern($1, config_home_t, config_home_t)
++')
+
+#######################################
+##
@@ -27943,6 +30302,24 @@ index d03fd43..0e04529 100644
+ delete_files_pattern($1, config_home_t, config_home_t)
+')
+
++########################################
++##
++## Create gnome homedir content (.config)
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gnome_create_home_config_dirs',`
++ gen_require(`
++ type config_home_t;
++ ')
++
++ allow $1 config_home_t:dir create_dir_perms;
++')
++
+#######################################
+##
+## setattr gnome homedir content (.config)
@@ -28053,6 +30430,24 @@ index d03fd43..0e04529 100644
+ can_exec($1, gstreamer_home_t)
+')
+
++######################################
++##
++## Allow to execute config home content files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`gnome_exec_config_home_files',`
++ gen_require(`
++ type config_home_t;
++ ')
++
++ can_exec($1, config_home_t)
++')
++
+#######################################
+##
+## file name transition gstreamer home content files.
@@ -28080,6 +30475,7 @@ index d03fd43..0e04529 100644
+ userdom_user_home_dir_filetrans($1, gstreamer_home_t, dir, ".orc")
+ userdom_user_tmp_filetrans($1, gstreamer_home_t, dir, ".orc")
+ gnome_cache_filetrans($1, gstreamer_home_t, dir, "gstreamer-0.12")
++ gnome_cache_filetrans($1, gstreamer_home_t, dir, "GLCache")
+ gnome_cache_filetrans($1, gstreamer_home_t, dir, "gstreamer-0.10")
+ gnome_cache_filetrans($1, gstreamer_home_t, dir, "gstreamer-1.0")
+ gnome_cache_filetrans($1, gstreamer_home_t, dir, "gstreamer-1.2")
@@ -28174,14 +30570,11 @@ index d03fd43..0e04529 100644
+##
+#
+interface(`gnome_dbus_chat_gkeyringd',`
- gen_require(`
- attribute gkeyringd_domain;
-- type gnome_keyring_tmp_t;
++ gen_require(`
++ attribute gkeyringd_domain;
+ class dbus send_msg;
- ')
-
-- files_search_tmp($1)
-- stream_connect_pattern($1, gnome_keyring_tmp_t, gnome_keyring_tmp_t, gkeyringd_domain)
++ ')
++
+ allow $1 gkeyringd_domain:dbus send_msg;
+ allow gkeyringd_domain $1:dbus send_msg;
+')
@@ -28453,7 +30846,7 @@ index d03fd43..0e04529 100644
+ type_transition $1 gkeyringd_exec_t:process $2;
')
diff --git a/gnome.te b/gnome.te
-index 20f726b..c6ff2a1 100644
+index 20f726b..5314f96 100644
--- a/gnome.te
+++ b/gnome.te
@@ -1,18 +1,36 @@
@@ -28497,7 +30890,7 @@ index 20f726b..c6ff2a1 100644
typealias gconf_home_t alias { user_gconf_home_t staff_gconf_home_t sysadm_gconf_home_t };
typealias gconf_home_t alias { auditadm_gconf_home_t secadm_gconf_home_t };
typealias gconf_home_t alias unconfined_gconf_home_t;
-@@ -29,107 +47,226 @@ type gconfd_exec_t;
+@@ -29,107 +47,227 @@ type gconfd_exec_t;
typealias gconfd_t alias { user_gconfd_t staff_gconfd_t sysadm_gconfd_t };
typealias gconfd_t alias { auditadm_gconfd_t secadm_gconfd_t };
userdom_user_application_domain(gconfd_t, gconfd_exec_t)
@@ -28727,6 +31120,7 @@ index 20f726b..c6ff2a1 100644
+manage_dirs_pattern(gkeyringd_domain, gkeyringd_tmp_t, gkeyringd_tmp_t)
+manage_sock_files_pattern(gkeyringd_domain, gkeyringd_tmp_t, gkeyringd_tmp_t)
+files_tmp_filetrans(gkeyringd_domain, gkeyringd_tmp_t, dir)
++fs_tmpfs_filetrans(gkeyringd_domain, gkeyringd_tmp_t, dir)
+userdom_user_tmp_filetrans(gkeyringd_domain, gkeyringd_tmp_t, { sock_file dir })
-kernel_read_system_state(gkeyringd_domain)
@@ -28758,9 +31152,9 @@ index 20f726b..c6ff2a1 100644
optional_policy(`
- telepathy_mission_control_read_state(gkeyringd_domain)
++ gnome_create_home_config_dirs(gkeyringd_domain)
+ gnome_read_home_config(gkeyringd_domain)
-+ gnome_read_generic_cache_files(gkeyringd_domain)
-+ gnome_write_generic_cache_files(gkeyringd_domain)
++ gnome_manage_generic_cache_files(gkeyringd_domain)
+ gnome_manage_cache_home_dir(gkeyringd_domain)
+ gnome_manage_generic_cache_sockets(gkeyringd_domain)
')
@@ -29296,7 +31690,7 @@ index 180f1b7..951b790 100644
+ userdom_user_home_dir_filetrans($1, gpg_secret_t, dir, ".gnupg")
+')
diff --git a/gpg.te b/gpg.te
-index 44cf341..8aa9dd9 100644
+index 44cf341..4af1ba0 100644
--- a/gpg.te
+++ b/gpg.te
@@ -1,47 +1,47 @@
@@ -29420,7 +31814,7 @@ index 44cf341..8aa9dd9 100644
+allow gpgdomain self:process { getsched setsched };
+#at setrlimit is for ulimit -c 0
+allow gpgdomain self:process { signal signull setrlimit getcap setcap setpgid };
-+dontaudit gpgdomain self:netlink_audit_socket r_netlink_socket_perms;
++dontaudit gpgdomain self:netlink_audit_socket { r_netlink_socket_perms nlmsg_relay };
+
+allow gpgdomain self:fifo_file rw_fifo_file_perms;
+allow gpgdomain self:tcp_socket create_stream_socket_perms;
@@ -29597,7 +31991,7 @@ index 44cf341..8aa9dd9 100644
tunable_policy(`use_nfs_home_dirs',`
fs_dontaudit_rw_nfs_files(gpg_helper_t)
-@@ -207,29 +225,35 @@ tunable_policy(`use_samba_home_dirs',`
+@@ -207,29 +225,36 @@ tunable_policy(`use_samba_home_dirs',`
########################################
#
@@ -29605,11 +31999,12 @@ index 44cf341..8aa9dd9 100644
+# GPG agent local policy
#
+domtrans_pattern(gpg_t, gpg_agent_exec_t, gpg_agent_t)
-
++
+# rlimit: gpg-agent wants to prevent coredumps
- allow gpg_agent_t self:process setrlimit;
++allow gpg_agent_t self:process { setrlimit signal_perms };
+
+-allow gpg_agent_t self:process setrlimit;
-allow gpg_agent_t self:unix_stream_socket { create_stream_socket_perms connectto };
-+
+allow gpg_agent_t self:unix_stream_socket { create_stream_socket_perms connectto } ;
allow gpg_agent_t self:fifo_file rw_fifo_file_perms;
@@ -29633,17 +32028,19 @@ index 44cf341..8aa9dd9 100644
-kernel_dontaudit_search_sysctl(gpg_agent_t)
+kernel_read_system_state(gpg_agent_t)
++kernel_read_core_if(gpg_agent_t)
+corecmd_read_bin_symlinks(gpg_agent_t)
-+corecmd_search_bin(gpg_agent_t)
++corecmd_exec_bin(gpg_agent_t)
corecmd_exec_shell(gpg_agent_t)
dev_read_rand(gpg_agent_t)
-@@ -239,37 +263,40 @@ domain_use_interactive_fds(gpg_agent_t)
+@@ -239,37 +264,41 @@ domain_use_interactive_fds(gpg_agent_t)
fs_dontaudit_list_inotifyfs(gpg_agent_t)
-miscfiles_read_localization(gpg_agent_t)
++miscfiles_read_certs(gpg_agent_t)
-userdom_use_user_terminals(gpg_agent_t)
+# Write to the user domain tty.
@@ -29692,7 +32089,7 @@ index 44cf341..8aa9dd9 100644
##############################
#
# Pinentry local policy
-@@ -277,8 +304,17 @@ optional_policy(`
+@@ -277,8 +306,17 @@ optional_policy(`
allow gpg_pinentry_t self:process { getcap getsched setsched signal };
allow gpg_pinentry_t self:fifo_file rw_fifo_file_perms;
@@ -29711,7 +32108,7 @@ index 44cf341..8aa9dd9 100644
manage_sock_files_pattern(gpg_pinentry_t, gpg_pinentry_tmp_t, gpg_pinentry_tmp_t)
userdom_user_tmp_filetrans(gpg_pinentry_t, gpg_pinentry_tmp_t, sock_file)
-@@ -287,53 +323,89 @@ manage_dirs_pattern(gpg_pinentry_t, gpg_pinentry_tmpfs_t, gpg_pinentry_tmpfs_t)
+@@ -287,53 +325,89 @@ manage_dirs_pattern(gpg_pinentry_t, gpg_pinentry_tmpfs_t, gpg_pinentry_tmpfs_t)
manage_files_pattern(gpg_pinentry_t, gpg_pinentry_tmpfs_t, gpg_pinentry_tmpfs_t)
fs_tmpfs_filetrans(gpg_pinentry_t, gpg_pinentry_tmpfs_t, { file dir })
@@ -30103,10 +32500,10 @@ index 0000000..3ce0ac0
+')
diff --git a/gssproxy.te b/gssproxy.te
new file mode 100644
-index 0000000..5044e7b
+index 0000000..bbd5979
--- /dev/null
+++ b/gssproxy.te
-@@ -0,0 +1,66 @@
+@@ -0,0 +1,68 @@
+policy_module(gssproxy, 1.0.0)
+
+########################################
@@ -30131,6 +32528,7 @@ index 0000000..5044e7b
+#
+# gssproxy local policy
+#
++allow gssproxy_t self:capability { setuid setgid };
+allow gssproxy_t self:capability2 block_suspend;
+allow gssproxy_t self:fifo_file rw_fifo_file_perms;
+allow gssproxy_t self:unix_stream_socket create_stream_socket_perms;
@@ -30161,6 +32559,7 @@ index 0000000..5044e7b
+
+miscfiles_read_localization(gssproxy_t)
+
++userdom_read_all_users_keys(gssproxy_t)
+userdom_manage_user_tmp_dirs(gssproxy_t)
+userdom_manage_user_tmp_files(gssproxy_t)
+
@@ -30325,10 +32724,10 @@ index 0000000..e2ae3b2
+/var/lib/hyperv(/.*)? gen_context(system_u:object_r:hypervkvp_var_lib_t,s0)
diff --git a/hypervkvp.if b/hypervkvp.if
new file mode 100644
-index 0000000..17c3627
+index 0000000..b7ca833
--- /dev/null
+++ b/hypervkvp.if
-@@ -0,0 +1,111 @@
+@@ -0,0 +1,134 @@
+
+## policy for hypervkvp
+
@@ -30410,6 +32809,29 @@ index 0000000..17c3627
+ manage_files_pattern($1, hypervkvp_var_lib_t, hypervkvp_var_lib_t)
+')
+
++#######################################
++##
++## Execute hypervkvp server in the hypervkvp domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`hypervkvp_systemctl',`
++ gen_require(`
++ type hypervkvp_t;
++ type hypervkvp_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ allow $1 hypervkvp_unit_file_t:file read_file_perms;
++ allow $1 hypervkvp_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, hypervkvp_t)
++ ')
++
+########################################
+##
+## All of the rules required to administrate
@@ -30442,10 +32864,10 @@ index 0000000..17c3627
+')
diff --git a/hypervkvp.te b/hypervkvp.te
new file mode 100644
-index 0000000..d2ad022
+index 0000000..97144bc
--- /dev/null
+++ b/hypervkvp.te
-@@ -0,0 +1,59 @@
+@@ -0,0 +1,79 @@
+policy_module(hypervkvp, 1.0.0)
+
+########################################
@@ -30486,6 +32908,11 @@ index 0000000..d2ad022
+allow hyperv_domain self:fifo_file rw_fifo_file_perms;
+allow hyperv_domain self:unix_stream_socket create_stream_socket_perms;
+
++corecmd_exec_shell(hyperv_domain)
++corecmd_exec_bin(hyperv_domain)
++
++dev_read_sysfs(hyperv_domain)
++
+########################################
+#
+# hypervkvp local policy
@@ -30495,15 +32922,30 @@ index 0000000..d2ad022
+manage_files_pattern(hypervkvp_t, hypervkvp_var_lib_t, hypervkvp_var_lib_t)
+files_var_lib_filetrans(hypervkvp_t, hypervkvp_var_lib_t, dir)
+
++kernel_read_system_state(hypervkvp_t)
++kernel_read_network_state(hypervkvp_t)
++
++files_dontaudit_search_home(hypervkvp_t)
++
++auth_read_passwd(hypervkvp_t)
++
+logging_send_syslog_msg(hypervkvp_t)
+
+sysnet_dns_name_resolve(hypervkvp_t)
+
++userdom_dontaudit_search_admin_dir(hypervkvp_t)
++
++optional_policy(`
++ sysnet_exec_ifconfig(hypervkvp_t)
++')
++
+########################################
+#
+# hypervvssd local policy
+#
+
++allow hypervvssd_t self:capability sys_admin;
++
+logging_send_syslog_msg(hypervvssd_t)
diff --git a/i18n_input.te b/i18n_input.te
index 3bed8fa..a738d7f 100644
@@ -30874,13 +33316,32 @@ index ca07a87..6ea129c 100644
+
/usr/sbin/iodined -- gen_context(system_u:object_r:iodined_exec_t,s0)
diff --git a/iodine.if b/iodine.if
-index a0bfbd0..47f7c75 100644
+index a0bfbd0..a3b02e6 100644
--- a/iodine.if
+++ b/iodine.if
-@@ -2,6 +2,30 @@
+@@ -2,6 +2,49 @@
########################################
##
++## Execute NetworkManager with a domain transition.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`iodined_domtrans',`
++ gen_require(`
++ type iodined_t, iodined_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, iodined_exec_t, iodined_t)
++')
++
++########################################
++##
+## Execute iodined server in the iodined domain.
+##
+##
@@ -30909,9 +33370,15 @@ index a0bfbd0..47f7c75 100644
## administrate an iodined environment
##
diff --git a/iodine.te b/iodine.te
-index 94ec5f8..8556c27 100644
+index 94ec5f8..6cbbf7d 100644
--- a/iodine.te
+++ b/iodine.te
+@@ -1,4 +1,4 @@
+-policy_module(iodine, 1.0.2)
++policy_module(iodine, 1.1.0)
+
+ ########################################
+ #
@@ -12,6 +12,9 @@ init_daemon_domain(iodined_t, iodined_exec_t)
type iodined_initrc_exec_t;
init_script_file(iodined_initrc_exec_t)
@@ -30922,23 +33389,167 @@ index 94ec5f8..8556c27 100644
########################################
#
# Local policy
-@@ -43,7 +46,6 @@ corenet_udp_sendrecv_dns_port(iodined_t)
+@@ -43,7 +46,7 @@ corenet_udp_sendrecv_dns_port(iodined_t)
corecmd_exec_shell(iodined_t)
-files_read_etc_files(iodined_t)
++auth_use_nsswitch(iodined_t)
logging_send_syslog_msg(iodined_t)
+diff --git a/ipa.fc b/ipa.fc
+new file mode 100644
+index 0000000..48d7322
+--- /dev/null
++++ b/ipa.fc
+@@ -0,0 +1,6 @@
++/usr/lib/systemd/system/ipa-otpd.* -- gen_context(system_u:object_r:ipa_otpd_unit_file_t,s0)
++
++/usr/libexec/ipa-otpd -- gen_context(system_u:object_r:ipa_otpd_exec_t,s0)
++
++/var/lib/ipa(/.*)? gen_context(system_u:object_r:ipa_var_lib_t,s0)
++
+diff --git a/ipa.if b/ipa.if
+new file mode 100644
+index 0000000..a2af18e
+--- /dev/null
++++ b/ipa.if
+@@ -0,0 +1,76 @@
++## Policy for IPA services.
++
++########################################
++##
++## Execute rtas_errd in the rtas_errd domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`ipa_domtrans_otpd',`
++ gen_require(`
++ type ipa_otpd_t, ipa_otpd_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, ipa_otpd_exec_t, ipa_otpd_t)
++')
++
++########################################
++##
++## Connect to ipa-otpd over a unix stream socket.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`ipa_stream_connect_otpd',`
++ gen_require(`
++ type ipa_otpd_t;
++ ')
++ allow $1 ipa_otpd_t:unix_stream_socket connectto;
++')
++
++########################################
++##
++## Allow domain to manage ipa lib files/dirs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`ipa_manage_lib',`
++ gen_require(`
++ type ipa_var_lib_t;
++ ')
++
++ manage_files_pattern($1, ipa_var_lib_t, ipa_var_lib_t)
++ manage_dirs_pattern($1, ipa_var_lib_t, ipa_var_lib_t)
++')
++
++########################################
++##
++## Allow domain to manage ipa lib files/dirs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`ipa_read_lib',`
++ gen_require(`
++ type ipa_var_lib_t;
++ ')
++
++ read_files_pattern($1, ipa_var_lib_t, ipa_var_lib_t)
++ list_dirs_pattern($1, ipa_var_lib_t, ipa_var_lib_t)
++')
++
+diff --git a/ipa.te b/ipa.te
+new file mode 100644
+index 0000000..b60bc5f
+--- /dev/null
++++ b/ipa.te
+@@ -0,0 +1,43 @@
++policy_module(ipa, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++attribute ipa_domain;
++
++type ipa_otpd_t, ipa_domain;
++type ipa_otpd_exec_t;
++init_daemon_domain(ipa_otpd_t, ipa_otpd_exec_t)
++
++type ipa_otpd_unit_file_t;
++systemd_unit_file(ipa_otpd_unit_file_t)
++
++type ipa_var_lib_t;
++files_type(ipa_var_lib_t)
++
++########################################
++#
++# ipa_otpd local policy
++#
++
++allow ipa_otpd_t self:capability2 block_suspend;
++
++allow ipa_otpd_t self:fifo_file rw_fifo_file_perms;
++allow ipa_otpd_t self:unix_stream_socket create_stream_socket_perms;
++
++corenet_tcp_connect_radius_port(ipa_otpd_t)
++
++dev_read_urand(ipa_otpd_t)
++dev_read_rand(ipa_otpd_t)
++
++sysnet_dns_name_resolve(ipa_otpd_t)
++
++optional_policy(`
++ dirsrv_stream_connect(ipa_otpd_t)
++')
++
++optional_policy(`
++ kerberos_use(ipa_otpd_t)
++')
diff --git a/irc.fc b/irc.fc
-index 48e7739..c3285c2 100644
+index 48e7739..1bf0326 100644
--- a/irc.fc
+++ b/irc.fc
@@ -1,6 +1,6 @@
HOME_DIR/\.ircmotd -- gen_context(system_u:object_r:irc_home_t,s0)
HOME_DIR/\.irssi(/.*)? gen_context(system_u:object_r:irc_home_t,s0)
-HOME_DIR/irclogs(/.*)? gen_context(system_u:object_r:irc_log_home_t,s0)
-+HOME_DIR/irclog(/.*)? gen_context(system_u:object_r:issi_home_t,s0)
++HOME_DIR/irclog(/.*)? gen_context(system_u:object_r:irc_home_t,s0)
/etc/irssi\.conf -- gen_context(system_u:object_r:irc_conf_t,s0)
@@ -31006,7 +33617,7 @@ index ac00fb0..36ef2e5 100644
+ userdom_user_home_dir_filetrans($1, irssi_home_t, dir, "irclogs")
')
diff --git a/irc.te b/irc.te
-index ecad9c7..e413e5a 100644
+index ecad9c7..abf0b2d 100644
--- a/irc.te
+++ b/irc.te
@@ -31,13 +31,35 @@ typealias irc_home_t alias { user_irc_home_t staff_irc_home_t sysadm_irc_home_t
@@ -31064,23 +33675,27 @@ index ecad9c7..e413e5a 100644
manage_dirs_pattern(irc_t, irc_tmp_t, irc_tmp_t)
manage_files_pattern(irc_t, irc_tmp_t, irc_tmp_t)
-@@ -70,7 +86,6 @@ files_tmp_filetrans(irc_t, irc_tmp_t, { file dir lnk_file sock_file fifo_file })
+@@ -70,7 +86,9 @@ files_tmp_filetrans(irc_t, irc_tmp_t, { file dir lnk_file sock_file fifo_file })
kernel_read_system_state(irc_t)
-corenet_all_recvfrom_unlabeled(irc_t)
++corecmd_exec_shell(irc_t)
++corecmd_exec_bin(irc_t)
++
corenet_all_recvfrom_netlabel(irc_t)
corenet_tcp_sendrecv_generic_if(irc_t)
corenet_tcp_sendrecv_generic_node(irc_t)
-@@ -93,7 +108,6 @@ dev_read_rand(irc_t)
+@@ -93,8 +111,6 @@ dev_read_rand(irc_t)
domain_use_interactive_fds(irc_t)
-files_read_usr_files(irc_t)
-
+-
fs_getattr_all_fs(irc_t)
fs_search_auto_mountpoints(irc_t)
-@@ -106,15 +120,18 @@ auth_use_nsswitch(irc_t)
+
+@@ -106,15 +122,18 @@ auth_use_nsswitch(irc_t)
init_read_utmp(irc_t)
init_dontaudit_lock_utmp(irc_t)
@@ -31101,7 +33716,7 @@ index ecad9c7..e413e5a 100644
corenet_sendrecv_all_server_packets(irc_t)
corenet_tcp_bind_all_unreserved_ports(irc_t)
corenet_sendrecv_all_client_packets(irc_t)
-@@ -122,18 +139,71 @@ tunable_policy(`irc_use_any_tcp_ports',`
+@@ -122,18 +141,71 @@ tunable_policy(`irc_use_any_tcp_ports',`
corenet_tcp_sendrecv_all_ports(irc_t)
')
@@ -31138,7 +33753,7 @@ index ecad9c7..e413e5a 100644
+
+kernel_read_system_state(irssi_t)
+
-+corecmd_search_bin(irssi_t)
++corecmd_exec_shell(irssi_t)
+corecmd_read_bin_symlinks(irssi_t)
+
+corenet_tcp_connect_ircd_port(irssi_t)
@@ -31280,10 +33895,38 @@ index 08b7560..417e630 100644
+/usr/lib/systemd/system/((iscsi)|(iscsid)|(iscsiuio))\.service -- gen_context(system_u:object_r:iscsi_unit_file_t,s0)
+/usr/lib/systemd/system/((iscsid)|(iscsiuio))\.socket -- gen_context(system_u:object_r:iscsi_unit_file_t,s0)
diff --git a/iscsi.if b/iscsi.if
-index 1a35420..4b9b978 100644
+index 1a35420..2ea1241 100644
--- a/iscsi.if
+++ b/iscsi.if
-@@ -80,17 +80,31 @@ interface(`iscsi_read_lib_files',`
+@@ -22,6 +22,27 @@ interface(`iscsid_domtrans',`
+ ########################################
+ ##
+ ## Create, read, write, and delete
++## iscsid lock files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`iscsi_manage_lock',`
++ gen_require(`
++ type iscsi_lock_t;
++ ')
++
++ files_search_locks($1)
++ manage_files_pattern($1, iscsi_lock_t, iscsi_lock_t)
++ manage_dirs_pattern($1, iscsi_lock_t, iscsi_lock_t)
++')
++
++########################################
++##
++## Create, read, write, and delete
+ ## iscsid sempaphores.
+ ##
+ ##
+@@ -80,17 +101,31 @@ interface(`iscsi_read_lib_files',`
########################################
##
@@ -31320,7 +33963,7 @@ index 1a35420..4b9b978 100644
##
##
##
-@@ -99,16 +113,15 @@ interface(`iscsi_admin',`
+@@ -99,16 +134,15 @@ interface(`iscsi_admin',`
gen_require(`
type iscsid_t, iscsi_lock_t, iscsi_log_t;
type iscsi_var_lib_t, iscsi_var_run_t, iscsi_tmp_t;
@@ -31342,7 +33985,7 @@ index 1a35420..4b9b978 100644
logging_search_logs($1)
admin_pattern($1, iscsi_log_t)
diff --git a/iscsi.te b/iscsi.te
-index 57304e4..46e5e3d 100644
+index 57304e4..56d45ec 100644
--- a/iscsi.te
+++ b/iscsi.te
@@ -9,8 +9,8 @@ type iscsid_t;
@@ -31366,7 +34009,20 @@ index 57304e4..46e5e3d 100644
allow iscsid_t self:process { setrlimit setsched signal };
allow iscsid_t self:fifo_file rw_fifo_file_perms;
allow iscsid_t self:unix_stream_socket { accept connectto listen };
-@@ -64,11 +63,12 @@ files_pid_filetrans(iscsid_t, iscsi_var_run_t, file)
+@@ -55,20 +54,22 @@ manage_dirs_pattern(iscsid_t, iscsi_tmp_t, iscsi_tmp_t)
+ manage_files_pattern(iscsid_t, iscsi_tmp_t, iscsi_tmp_t)
+ fs_tmpfs_filetrans(iscsid_t, iscsi_tmp_t, { dir file })
+
+-allow iscsid_t iscsi_var_lib_t:dir list_dir_perms;
+-read_files_pattern(iscsid_t, iscsi_var_lib_t, iscsi_var_lib_t)
+-read_lnk_files_pattern(iscsid_t, iscsi_var_lib_t, iscsi_var_lib_t)
++manage_files_pattern(iscsid_t, iscsi_var_lib_t, iscsi_var_lib_t)
++manage_lnk_files_pattern(iscsid_t, iscsi_var_lib_t, iscsi_var_lib_t)
++manage_dirs_pattern(iscsid_t, iscsi_var_lib_t, iscsi_var_lib_t)
++files_var_lib_filetrans(iscsid_t, iscsi_var_lib_t, dir)
+
+ manage_files_pattern(iscsid_t, iscsi_var_run_t, iscsi_var_run_t)
+ files_pid_filetrans(iscsid_t, iscsi_var_run_t, file)
can_exec(iscsid_t, iscsid_exec_t)
@@ -31380,7 +34036,7 @@ index 57304e4..46e5e3d 100644
corenet_all_recvfrom_netlabel(iscsid_t)
corenet_tcp_sendrecv_generic_if(iscsid_t)
corenet_tcp_sendrecv_generic_node(iscsid_t)
-@@ -85,21 +85,26 @@ corenet_sendrecv_isns_client_packets(iscsid_t)
+@@ -85,21 +86,26 @@ corenet_sendrecv_isns_client_packets(iscsid_t)
corenet_tcp_connect_isns_port(iscsid_t)
corenet_tcp_sendrecv_isns_port(iscsid_t)
@@ -32930,7 +35586,7 @@ index 3a00b3a..21efcc4 100644
+ allow $1 kdump_unit_file_t:service all_service_perms;
')
diff --git a/kdump.te b/kdump.te
-index 70f3007..f8b68bf 100644
+index 70f3007..58bd992 100644
--- a/kdump.te
+++ b/kdump.te
@@ -1,4 +1,4 @@
@@ -32939,7 +35595,7 @@ index 70f3007..f8b68bf 100644
#######################################
#
-@@ -12,35 +12,55 @@ init_system_domain(kdump_t, kdump_exec_t)
+@@ -12,35 +12,56 @@ init_system_domain(kdump_t, kdump_exec_t)
type kdump_etc_t;
files_config_file(kdump_etc_t)
@@ -32977,13 +35633,14 @@ index 70f3007..f8b68bf 100644
+manage_files_pattern(kdump_t, kdump_crash_t, kdump_crash_t)
+manage_lnk_files_pattern(kdump_t, kdump_crash_t, kdump_crash_t)
+files_var_filetrans(kdump_t, kdump_crash_t, dir, "crash")
-+
-+read_files_pattern(kdump_t, kdump_etc_t, kdump_etc_t)
-allow kdump_t kdump_etc_t:file read_file_perms;
++read_files_pattern(kdump_t, kdump_etc_t, kdump_etc_t)
++
+manage_dirs_pattern(kdump_t, kdump_lock_t, kdump_lock_t)
+manage_files_pattern(kdump_t, kdump_lock_t, kdump_lock_t)
-+files_lock_filetrans(kdump_t, kdump_lock_t, { dir file })
++manage_lnk_files_pattern(kdump_t, kdump_lock_t, kdump_lock_t)
++files_lock_filetrans(kdump_t, kdump_lock_t, { dir file lnk_file })
-files_read_etc_files(kdump_t)
files_read_etc_runtime_files(kdump_t)
@@ -33000,7 +35657,7 @@ index 70f3007..f8b68bf 100644
dev_read_framebuffer(kdump_t)
dev_read_sysfs(kdump_t)
-@@ -48,22 +68,32 @@ term_use_console(kdump_t)
+@@ -48,22 +69,35 @@ term_use_console(kdump_t)
#######################################
#
@@ -33014,12 +35671,14 @@ index 70f3007..f8b68bf 100644
+
allow kdumpctl_t self:capability { dac_override sys_chroot };
allow kdumpctl_t self:process setfscreate;
--allow kdumpctl_t self:fifo_file rw_fifo_file_perms;
++
+ allow kdumpctl_t self:fifo_file rw_fifo_file_perms;
-allow kdumpctl_t self:unix_stream_socket { accept listen };
++allow kdumpctl_t self:unix_stream_socket create_stream_socket_perms;
-allow kdumpctl_t kdump_etc_t:file read_file_perms;
-+allow kdumpctl_t self:fifo_file rw_fifo_file_perms;
-+allow kdumpctl_t self:unix_stream_socket create_stream_socket_perms;
++manage_files_pattern(kdumpctl_t, kdump_lock_t, kdump_lock_t)
++files_lock_filetrans(kdumpctl_t, kdump_lock_t, file, "kdump")
manage_dirs_pattern(kdumpctl_t, kdumpctl_tmp_t, kdumpctl_tmp_t)
+manage_chr_files_pattern(kdumpctl_t, kdumpctl_tmp_t, kdumpctl_tmp_t)
@@ -33038,7 +35697,7 @@ index 70f3007..f8b68bf 100644
kernel_read_system_state(kdumpctl_t)
-@@ -71,46 +101,56 @@ corecmd_exec_bin(kdumpctl_t)
+@@ -71,46 +105,56 @@ corecmd_exec_bin(kdumpctl_t)
corecmd_exec_shell(kdumpctl_t)
dev_read_sysfs(kdumpctl_t)
@@ -33135,7 +35794,7 @@ index 182ab8b..8b1d9c2 100644
+')
+
diff --git a/kdumpgui.te b/kdumpgui.te
-index e7f5c81..8c75bc8 100644
+index e7f5c81..12ff296 100644
--- a/kdumpgui.te
+++ b/kdumpgui.te
@@ -1,83 +1,92 @@
@@ -33251,7 +35910,7 @@ index e7f5c81..8c75bc8 100644
')
optional_policy(`
-@@ -87,4 +96,10 @@ optional_policy(`
+@@ -87,4 +96,24 @@ optional_policy(`
optional_policy(`
kdump_manage_config(kdumpgui_t)
kdump_initrc_domtrans(kdumpgui_t)
@@ -33261,12 +35920,180 @@ index e7f5c81..8c75bc8 100644
+
+optional_policy(`
+ policykit_dbus_chat(kdumpgui_t)
++')
++
++optional_policy(`
++ ifdef(`hide_broken_symptoms',`
++ # systemd bug
++ init_enable_services(kdumpgui_t)
++ init_disable_services(kdumpgui_t)
++ init_reload_services(kdumpgui_t)
++ ')
++')
++
++
++optional_policy(`
++ unconfined_domain(kdumpgui_t)
')
+diff --git a/keepalived.fc b/keepalived.fc
+new file mode 100644
+index 0000000..7e6f8be
+--- /dev/null
++++ b/keepalived.fc
+@@ -0,0 +1,5 @@
++/usr/lib/systemd/system/keepalived.* -- gen_context(system_u:object_r:keepalived_unit_file_t,s0)
++
++/usr/sbin/keepalived -- gen_context(system_u:object_r:keepalived_exec_t,s0)
++
++/var/run/keepalived.* -- gen_context(system_u:object_r:keepalived_var_run_t,s0)
+diff --git a/keepalived.if b/keepalived.if
+new file mode 100644
+index 0000000..0d61849
+--- /dev/null
++++ b/keepalived.if
+@@ -0,0 +1,84 @@
++
++## keepalived - load-balancing and high-availability service
++
++########################################
++##
++## Execute keepalived in the keepalived domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`keepalived_domtrans',`
++ gen_require(`
++ type keepalived_t, keepalived_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, keepalived_exec_t, keepalived_t)
++')
++########################################
++##
++## Execute keepalived server in the keepalived domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`keepalived_systemctl',`
++ gen_require(`
++ type keepalived_t;
++ type keepalived_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 keepalived_unit_file_t:file read_file_perms;
++ allow $1 keepalived_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, keepalived_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an keepalived environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## Role allowed access.
++##
++##
++##
++#
++interface(`keepalived_admin',`
++ gen_require(`
++ type keepalived_t;
++ type keepalived_unit_file_t;
++ ')
++
++ allow $1 keepalived_t:process { signal_perms };
++ ps_process_pattern($1, keepalived_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 keepalived_t:process ptrace;
++ ')
++
++ keepalived_systemctl($1)
++ admin_pattern($1, keepalived_unit_file_t)
++ allow $1 keepalived_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/keepalived.te b/keepalived.te
+new file mode 100644
+index 0000000..535f79b
+--- /dev/null
++++ b/keepalived.te
+@@ -0,0 +1,47 @@
++policy_module(keepalived, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type keepalived_t;
++type keepalived_exec_t;
++init_daemon_domain(keepalived_t, keepalived_exec_t)
++
++type keepalived_unit_file_t;
++systemd_unit_file(keepalived_unit_file_t)
++
++type keepalived_var_run_t;
++files_pid_file(keepalived_var_run_t)
++
++########################################
++#
++# keepalived local policy
++#
++allow keepalived_t self:capability { net_admin net_raw };
++allow keepalived_t self:process { signal_perms };
++allow keepalived_t self:netlink_socket create_socket_perms;
++allow keepalived_t self:netlink_route_socket nlmsg_write;
++allow keepalived_t self:packet_socket create_socket_perms;
++allow keepalived_t self:rawip_socket create_socket_perms;
++
++
++manage_files_pattern(keepalived_t, keepalived_var_run_t, keepalived_var_run_t)
++files_pid_filetrans(keepalived_t, keepalived_var_run_t, { file })
++
++kernel_read_system_state(keepalived_t)
++kernel_read_network_state(keepalived_t)
++
++auth_use_nsswitch(keepalived_t)
++
++corenet_tcp_connect_connlcli_port(keepalived_t)
++corenet_tcp_connect_http_port(keepalived_t)
++corenet_tcp_connect_smtp_port(keepalived_t)
++
++dev_read_urand(keepalived_t)
++
++modutils_domtrans_insmod(keepalived_t)
++
++logging_send_syslog_msg(keepalived_t)
++
diff --git a/kerberos.fc b/kerberos.fc
-index 4fe75fd..8c702c9 100644
+index 4fe75fd..b029c28 100644
--- a/kerberos.fc
+++ b/kerberos.fc
-@@ -1,52 +1,44 @@
+@@ -1,52 +1,46 @@
-HOME_DIR/\.k5login -- gen_context(system_u:object_r:krb5_home_t,s0)
-/root/\.k5login -- gen_context(system_u:object_r:krb5_home_t,s0)
+HOME_DIR/\.k5login -- gen_context(system_u:object_r:krb5_home_t,s0)
@@ -33300,25 +36127,33 @@ index 4fe75fd..8c702c9 100644
-/usr/local/kerberos/sbin/krb5kdc -- gen_context(system_u:object_r:krb5kdc_exec_t,s0)
-/usr/local/kerberos/sbin/kadmind -- gen_context(system_u:object_r:kadmind_exec_t,s0)
--
++/usr/var/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_conf_t,s0)
++/usr/var/krb5kdc/principal.* gen_context(system_u:object_r:krb5kdc_principal_t,s0)
+
-/usr/sbin/krb5kdc -- gen_context(system_u:object_r:krb5kdc_exec_t,s0)
-/usr/sbin/kadmind -- gen_context(system_u:object_r:kadmind_exec_t,s0)
--
++/var/kerberos/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_conf_t,s0)
++/var/kerberos/krb5kdc/from_master.* gen_context(system_u:object_r:krb5kdc_lock_t,s0)
++/var/kerberos/krb5kdc/kadm5\.keytab -- gen_context(system_u:object_r:krb5_keytab_t,s0)
++/var/kerberos/krb5kdc/principal.* gen_context(system_u:object_r:krb5kdc_principal_t,s0)
++/var/kerberos/krb5kdc/principal.*\.ok gen_context(system_u:object_r:krb5kdc_lock_t,s0)
+
-/usr/local/var/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_conf_t,s0)
-/usr/local/var/krb5kdc/principal.* gen_context(system_u:object_r:krb5kdc_principal_t,s0)
--
++/var/log/krb5kdc\.log.* gen_context(system_u:object_r:krb5kdc_log_t,s0)
++/var/log/kadmin(d)?\.log.* gen_context(system_u:object_r:kadmind_log_t,s0)
+
-/usr/var/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_conf_t,s0)
-+/usr/var/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_conf_t,s0)
- /usr/var/krb5kdc/principal.* gen_context(system_u:object_r:krb5kdc_principal_t,s0)
+-/usr/var/krb5kdc/principal.* gen_context(system_u:object_r:krb5kdc_principal_t,s0)
++/var/cache/krb5rcache(/.*)? gen_context(system_u:object_r:krb5_host_rcache_t,s0)
-/var/cache/krb5rcache(/.*)? gen_context(system_u:object_r:krb5_host_rcache_t,s0)
--
++/var/run/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_var_run_t,s0)
+
-/var/kerberos/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_conf_t,s0)
-+/var/kerberos/krb5kdc(/.*)? gen_context(system_u:object_r:krb5kdc_conf_t,s0)
- /var/kerberos/krb5kdc/from_master.* gen_context(system_u:object_r:krb5kdc_lock_t,s0)
+-/var/kerberos/krb5kdc/from_master.* gen_context(system_u:object_r:krb5kdc_lock_t,s0)
-/var/kerberos/krb5kdc/kadm5\.keytab -- gen_context(system_u:object_r:krb5_keytab_t,s0)
-+/var/kerberos/krb5kdc/kadm5\.keytab -- gen_context(system_u:object_r:krb5_keytab_t,s0)
- /var/kerberos/krb5kdc/principal.* gen_context(system_u:object_r:krb5kdc_principal_t,s0)
+-/var/kerberos/krb5kdc/principal.* gen_context(system_u:object_r:krb5kdc_principal_t,s0)
-/var/kerberos/krb5kdc/principal.*\.ok -- gen_context(system_u:object_r:krb5kdc_lock_t,s0)
-
-/var/log/krb5kdc\.log.* -- gen_context(system_u:object_r:krb5kdc_log_t,s0)
@@ -33333,13 +36168,6 @@ index 4fe75fd..8c702c9 100644
-/var/tmp/ldapmap1_0 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
-/var/tmp/ldap_487 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
-/var/tmp/ldap_55 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
-+/var/kerberos/krb5kdc/principal.*\.ok gen_context(system_u:object_r:krb5kdc_lock_t,s0)
-+
-+/var/log/krb5kdc\.log.* gen_context(system_u:object_r:krb5kdc_log_t,s0)
-+/var/log/kadmin(d)?\.log.* gen_context(system_u:object_r:kadmind_log_t,s0)
-+
-+/var/cache/krb5rcache(/.*)? gen_context(system_u:object_r:krb5_host_rcache_t,s0)
-+
+/var/tmp/DNS_25 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
+/var/tmp/host_0 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
+/var/tmp/HTTP_23 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
@@ -33350,7 +36178,7 @@ index 4fe75fd..8c702c9 100644
+/var/tmp/ldap_487 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
+/var/tmp/ldap_55 -- gen_context(system_u:object_r:krb5_host_rcache_t,s0)
diff --git a/kerberos.if b/kerberos.if
-index f9de9fc..11e6268 100644
+index f9de9fc..b573f79 100644
--- a/kerberos.if
+++ b/kerberos.if
@@ -1,27 +1,29 @@
@@ -33623,12 +36451,13 @@ index f9de9fc..11e6268 100644
##
-## Create, read, write, and delete
-## kerberos key table files.
--##
--##
--##
--## Domain allowed access.
--##
--##
++## Create keytab file in /etc
+ ##
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
-#
-interface(`kerberos_manage_keytab_files',`
- gen_require(`
@@ -33644,13 +36473,12 @@ index f9de9fc..11e6268 100644
-## Create specified objects in generic
-## etc directories with the kerberos
-## keytab file type.
-+## Create keytab file in /etc
- ##
- ##
- ##
- ## Domain allowed access.
- ##
- ##
+-##
+-##
+-##
+-## Domain allowed access.
+-##
+-##
-##
-##
-## Class of the object being created.
@@ -33676,16 +36504,20 @@ index f9de9fc..11e6268 100644
##
##
##
-@@ -354,21 +255,15 @@ interface(`kerberos_etc_filetrans_keytab',`
+@@ -354,21 +255,21 @@ interface(`kerberos_etc_filetrans_keytab',`
##
#
template(`kerberos_keytab_template',`
--
++ gen_require(`
++ attribute kerberos_keytab_domain;
++ ')
+
- ########################################
- #
- # Declarations
- #
--
++ typeattribute $2 kerberos_keytab_domain;
+
type $1_keytab_t;
files_type($1_keytab_t)
@@ -33703,16 +36535,35 @@ index f9de9fc..11e6268 100644
kerberos_read_keytab($2)
kerberos_use($2)
-@@ -376,7 +271,7 @@ template(`kerberos_keytab_template',`
+@@ -376,7 +277,26 @@ template(`kerberos_keytab_template',`
########################################
##
-## Read kerberos kdc configuration files.
+## Read the kerberos kdc configuration file (/etc/krb5kdc.conf).
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`kerberos_keytab_domains',`
++ gen_require(`
++ attribute kerberos_keytab_domain;
++ ')
++
++ typeattribute $1 kerberos_keytab_domain;
++')
++
++########################################
++##
++## Read the kerberos kdc configuration file (/etc/krb5kdc.conf).
##
##
##
-@@ -396,8 +291,7 @@ interface(`kerberos_read_kdc_config',`
+@@ -396,8 +316,7 @@ interface(`kerberos_read_kdc_config',`
########################################
##
@@ -33722,7 +36573,7 @@ index f9de9fc..11e6268 100644
##
##
##
-@@ -411,34 +305,99 @@ interface(`kerberos_manage_host_rcache',`
+@@ -411,34 +330,99 @@ interface(`kerberos_manage_host_rcache',`
type krb5_host_rcache_t;
')
@@ -33830,7 +36681,7 @@ index f9de9fc..11e6268 100644
##
##
##
-@@ -452,12 +411,13 @@ interface(`kerberos_tmp_filetrans_host_rcache',`
+@@ -452,12 +436,13 @@ interface(`kerberos_tmp_filetrans_host_rcache',`
type krb5_host_rcache_t;
')
@@ -33846,7 +36697,7 @@ index f9de9fc..11e6268 100644
##
##
##
-@@ -465,82 +425,85 @@ interface(`kerberos_tmp_filetrans_host_rcache',`
+@@ -465,82 +450,85 @@ interface(`kerberos_tmp_filetrans_host_rcache',`
##
##
#
@@ -33987,7 +36838,7 @@ index f9de9fc..11e6268 100644
+ kerberos_tmp_filetrans_host_rcache($1, "ldap_55")
')
diff --git a/kerberos.te b/kerberos.te
-index 3465a9a..353c4ce 100644
+index 3465a9a..31ad037 100644
--- a/kerberos.te
+++ b/kerberos.te
@@ -1,4 +1,4 @@
@@ -33996,7 +36847,7 @@ index 3465a9a..353c4ce 100644
########################################
#
-@@ -6,11 +6,11 @@ policy_module(kerberos, 1.11.7)
+@@ -6,11 +6,13 @@ policy_module(kerberos, 1.11.7)
#
##
@@ -34009,10 +36860,12 @@ index 3465a9a..353c4ce 100644
##
-gen_tunable(allow_kerberos, false)
+gen_tunable(kerberos_enabled, false)
++
++attribute kerberos_keytab_domain;
type kadmind_t;
type kadmind_exec_t;
-@@ -35,23 +35,27 @@ init_daemon_domain(kpropd_t, kpropd_exec_t)
+@@ -35,23 +37,27 @@ init_daemon_domain(kpropd_t, kpropd_exec_t)
domain_obj_id_change_exemption(kpropd_t)
type krb5_conf_t;
@@ -34038,13 +36891,13 @@ index 3465a9a..353c4ce 100644
type krb5kdc_lock_t;
-files_type(krb5kdc_lock_t)
+files_lock_file(krb5kdc_lock_t)
-
+
+
+# types for KDC principal file(s)
type krb5kdc_principal_t;
files_type(krb5kdc_principal_t)
-@@ -74,28 +78,31 @@ files_pid_file(krb5kdc_var_run_t)
+@@ -74,28 +80,31 @@ files_pid_file(krb5kdc_var_run_t)
# kadmind local policy
#
@@ -34082,7 +36935,7 @@ index 3465a9a..353c4ce 100644
manage_dirs_pattern(kadmind_t, kadmind_tmp_t, kadmind_tmp_t)
manage_files_pattern(kadmind_t, kadmind_tmp_t, kadmind_tmp_t)
files_tmp_filetrans(kadmind_t, kadmind_tmp_t, { file dir })
-@@ -103,13 +110,15 @@ files_tmp_filetrans(kadmind_t, kadmind_tmp_t, { file dir })
+@@ -103,13 +112,15 @@ files_tmp_filetrans(kadmind_t, kadmind_tmp_t, { file dir })
manage_files_pattern(kadmind_t, kadmind_var_run_t, kadmind_var_run_t)
files_pid_filetrans(kadmind_t, kadmind_var_run_t, file)
@@ -34101,7 +36954,7 @@ index 3465a9a..353c4ce 100644
corenet_all_recvfrom_netlabel(kadmind_t)
corenet_tcp_sendrecv_generic_if(kadmind_t)
corenet_udp_sendrecv_generic_if(kadmind_t)
-@@ -119,31 +128,41 @@ corenet_tcp_sendrecv_all_ports(kadmind_t)
+@@ -119,31 +130,41 @@ corenet_tcp_sendrecv_all_ports(kadmind_t)
corenet_udp_sendrecv_all_ports(kadmind_t)
corenet_tcp_bind_generic_node(kadmind_t)
corenet_udp_bind_generic_node(kadmind_t)
@@ -34148,7 +37001,7 @@ index 3465a9a..353c4ce 100644
sysnet_use_ldap(kadmind_t)
userdom_dontaudit_use_unpriv_user_fds(kadmind_t)
-@@ -154,6 +173,10 @@ optional_policy(`
+@@ -154,11 +175,16 @@ optional_policy(`
')
optional_policy(`
@@ -34159,7 +37012,13 @@ index 3465a9a..353c4ce 100644
nis_use_ypbind(kadmind_t)
')
-@@ -174,24 +197,27 @@ optional_policy(`
+ optional_policy(`
+ sssd_read_public_files(kadmind_t)
++ sssd_stream_connect(kadmind_t)
+ ')
+
+ optional_policy(`
+@@ -174,24 +200,27 @@ optional_policy(`
# Krb5kdc local policy
#
@@ -34191,12 +37050,17 @@ index 3465a9a..353c4ce 100644
logging_log_filetrans(krb5kdc_t, krb5kdc_log_t, file)
allow krb5kdc_t krb5kdc_principal_t:file rw_file_perms;
-@@ -203,54 +229,53 @@ files_tmp_filetrans(krb5kdc_t, krb5kdc_tmp_t, { file dir })
- manage_files_pattern(krb5kdc_t, krb5kdc_var_run_t, krb5kdc_var_run_t)
- files_pid_filetrans(krb5kdc_t, krb5kdc_var_run_t, file)
+@@ -201,71 +230,76 @@ manage_files_pattern(krb5kdc_t, krb5kdc_tmp_t, krb5kdc_tmp_t)
+ files_tmp_filetrans(krb5kdc_t, krb5kdc_tmp_t, { file dir })
--can_exec(krb5kdc_t, krb5kdc_exec_t)
+ manage_files_pattern(krb5kdc_t, krb5kdc_var_run_t, krb5kdc_var_run_t)
+-files_pid_filetrans(krb5kdc_t, krb5kdc_var_run_t, file)
-
+-can_exec(krb5kdc_t, krb5kdc_exec_t)
++manage_sock_files_pattern(krb5kdc_t, krb5kdc_var_run_t, krb5kdc_var_run_t)
++manage_dirs_pattern(krb5kdc_t, krb5kdc_var_run_t, krb5kdc_var_run_t)
++files_pid_filetrans(krb5kdc_t, krb5kdc_var_run_t, { dir file sock_file })
+
kernel_read_system_state(krb5kdc_t)
kernel_read_kernel_sysctls(krb5kdc_t)
+kernel_list_proc(krb5kdc_t)
@@ -34257,7 +37121,14 @@ index 3465a9a..353c4ce 100644
sysnet_use_ldap(krb5kdc_t)
userdom_dontaudit_use_unpriv_user_fds(krb5kdc_t)
-@@ -261,11 +286,11 @@ optional_policy(`
+ userdom_dontaudit_search_user_home_dirs(krb5kdc_t)
+
+ optional_policy(`
++ ipa_stream_connect_otpd(krb5kdc_t)
++')
++
++optional_policy(`
+ ldap_stream_connect(krb5kdc_t)
')
optional_policy(`
@@ -34271,7 +37142,7 @@ index 3465a9a..353c4ce 100644
')
optional_policy(`
-@@ -273,6 +298,10 @@ optional_policy(`
+@@ -273,6 +307,10 @@ optional_policy(`
')
optional_policy(`
@@ -34282,7 +37153,7 @@ index 3465a9a..353c4ce 100644
udev_read_db(krb5kdc_t)
')
-@@ -281,10 +310,12 @@ optional_policy(`
+@@ -281,10 +319,12 @@ optional_policy(`
# kpropd local policy
#
@@ -34298,7 +37169,7 @@ index 3465a9a..353c4ce 100644
allow kpropd_t krb5_host_rcache_t:file manage_file_perms;
-@@ -303,26 +334,20 @@ files_tmp_filetrans(kpropd_t, krb5kdc_tmp_t, { file dir })
+@@ -303,28 +343,37 @@ files_tmp_filetrans(kpropd_t, krb5kdc_tmp_t, { file dir })
corecmd_exec_bin(kpropd_t)
@@ -34326,6 +37197,23 @@ index 3465a9a..353c4ce 100644
seutil_read_file_contexts(kpropd_t)
sysnet_dns_name_resolve(kpropd_t)
+
+ kerberos_use(kpropd_t)
++
++
++########################################
++#
++# kerberos keytab domain local policy
++#
++
++#until we get sssd fix
++allow kerberos_keytab_domain kerberos_keytab_domain:key manage_key_perms;
++
++userdom_manage_all_users_keys(kerberos_keytab_domain)
++
++optional_policy(`
++ sssd_manage_keys(kerberos_keytab_domain)
++')
diff --git a/kerneloops.if b/kerneloops.if
index 714448f..fa0c994 100644
--- a/kerneloops.if
@@ -35033,7 +37921,7 @@ index 19777b8..55d1556 100644
+ ')
+')
diff --git a/ktalk.te b/ktalk.te
-index 2cf3815..a43a4f6 100644
+index 2cf3815..f932c32 100644
--- a/ktalk.te
+++ b/ktalk.te
@@ -7,11 +7,15 @@ policy_module(ktalk, 1.8.1)
@@ -35052,7 +37940,7 @@ index 2cf3815..a43a4f6 100644
type ktalkd_tmp_t;
files_tmp_file(ktalkd_tmp_t)
-@@ -35,16 +39,24 @@ kernel_read_kernel_sysctls(ktalkd_t)
+@@ -35,11 +39,21 @@ kernel_read_kernel_sysctls(ktalkd_t)
kernel_read_system_state(ktalkd_t)
kernel_read_network_state(ktalkd_t)
@@ -35075,11 +37963,13 @@ index 2cf3815..a43a4f6 100644
auth_use_nsswitch(ktalkd_t)
- init_read_utmp(ktalkd_t)
+@@ -47,4 +61,5 @@ init_read_utmp(ktalkd_t)
logging_send_syslog_msg(ktalkd_t)
--
+
-miscfiles_read_localization(ktalkd_t)
++userdom_use_user_ptys(ktalkd_t)
++userdom_use_user_ttys(ktalkd_t)
diff --git a/kudzu.if b/kudzu.if
index 5297064..6ba8108 100644
--- a/kudzu.if
@@ -35148,7 +38038,7 @@ index d5d1572..82267a7 100644
/var/run/.*l2tpd(/.*)? gen_context(system_u:object_r:l2tpd_var_run_t,s0)
/var/run/prol2tpd\.ctl -s gen_context(system_u:object_r:l2tpd_var_run_t,s0)
diff --git a/l2tp.if b/l2tp.if
-index 73e2803..2fc7570 100644
+index 73e2803..34ca3aa 100644
--- a/l2tp.if
+++ b/l2tp.if
@@ -1,9 +1,45 @@
@@ -35352,7 +38242,7 @@ index 73e2803..2fc7570 100644
##
##
##
-@@ -77,22 +224,26 @@ interface(`l2tpd_stream_connect',`
+@@ -77,16 +224,20 @@ interface(`l2tpd_stream_connect',`
##
##
#
@@ -35360,8 +38250,7 @@ index 73e2803..2fc7570 100644
+interface(`l2tpd_admin',`
gen_require(`
type l2tpd_t, l2tpd_initrc_exec_t, l2tpd_var_run_t;
-- type l2tp_conf_t, l2tpd_tmp_t;
-+ type l2tp_etc_t, l2tpd_tmp_t;
+ type l2tp_conf_t, l2tpd_tmp_t;
')
- allow $1 l2tpd_t:process { ptrace signal_perms };
@@ -35377,13 +38266,6 @@ index 73e2803..2fc7570 100644
domain_system_change_exemption($1)
role_transition $2 l2tpd_initrc_exec_t system_r;
allow $2 system_r;
-
- files_search_etc($1)
-- admin_pattern($1, l2tp_conf_t)
-+ admin_pattern($1, l2tp_etc_t)
-
- files_search_pids($1)
- admin_pattern($1, l2tpd_var_run_t)
diff --git a/l2tp.te b/l2tp.te
index 19f2b97..bbbda10 100644
--- a/l2tp.te
@@ -35486,7 +38368,7 @@ index bc25c95..6692d91 100644
+/var/run/slapd\.args -- gen_context(system_u:object_r:slapd_var_run_t,s0)
+/var/run/slapd\.pid -- gen_context(system_u:object_r:slapd_var_run_t,s0)
diff --git a/ldap.if b/ldap.if
-index ee0c7cc..c54e3d2 100644
+index ee0c7cc..4ac8f2d 100644
--- a/ldap.if
+++ b/ldap.if
@@ -1,8 +1,68 @@
@@ -35594,7 +38476,7 @@ index ee0c7cc..c54e3d2 100644
##
##
##
-@@ -41,22 +119,27 @@ interface(`ldap_read_config',`
+@@ -41,22 +119,29 @@ interface(`ldap_read_config',`
########################################
##
@@ -35616,7 +38498,9 @@ index ee0c7cc..c54e3d2 100644
+ ')
+
+ files_search_etc($1)
++ allow $1 slapd_cert_t:dir list_dir_perms;
+ read_files_pattern($1, slapd_cert_t, slapd_cert_t)
++ read_lnk_files_pattern($1, slapd_cert_t, slapd_cert_t)
')
########################################
@@ -35627,7 +38511,7 @@ index ee0c7cc..c54e3d2 100644
##
##
##
-@@ -64,18 +147,13 @@ interface(`ldap_use',`
+@@ -64,18 +149,13 @@ interface(`ldap_use',`
##
##
#
@@ -35649,7 +38533,7 @@ index ee0c7cc..c54e3d2 100644
##
##
##
-@@ -83,21 +161,19 @@ interface(`ldap_stream_connect',`
+@@ -83,21 +163,19 @@ interface(`ldap_stream_connect',`
##
##
#
@@ -35677,7 +38561,7 @@ index ee0c7cc..c54e3d2 100644
##
##
##
-@@ -106,7 +182,7 @@ interface(`ldap_tcp_connect',`
+@@ -106,7 +184,7 @@ interface(`ldap_tcp_connect',`
##
##
##
@@ -35686,7 +38570,7 @@ index ee0c7cc..c54e3d2 100644
##
##
##
-@@ -115,28 +191,28 @@ interface(`ldap_admin',`
+@@ -115,28 +193,28 @@ interface(`ldap_admin',`
gen_require(`
type slapd_t, slapd_tmp_t, slapd_replog_t;
type slapd_lock_t, slapd_etc_t, slapd_var_run_t;
@@ -35724,7 +38608,7 @@ index ee0c7cc..c54e3d2 100644
admin_pattern($1, slapd_replog_t)
files_list_tmp($1)
-@@ -144,4 +220,8 @@ interface(`ldap_admin',`
+@@ -144,4 +222,8 @@ interface(`ldap_admin',`
files_list_pids($1)
admin_pattern($1, slapd_var_run_t)
@@ -35734,7 +38618,7 @@ index ee0c7cc..c54e3d2 100644
+ allow $1 slapd_unit_file_t:service all_service_perms;
')
diff --git a/ldap.te b/ldap.te
-index d7d9b09..562c288 100644
+index d7d9b09..d0fdb7c 100644
--- a/ldap.te
+++ b/ldap.te
@@ -21,6 +21,9 @@ files_config_file(slapd_etc_t)
@@ -35747,7 +38631,27 @@ index d7d9b09..562c288 100644
type slapd_lock_t;
files_lock_file(slapd_lock_t)
-@@ -88,7 +91,6 @@ files_pid_filetrans(slapd_t, slapd_var_run_t, { dir file sock_file })
+@@ -46,7 +49,7 @@ files_pid_file(slapd_var_run_t)
+
+ allow slapd_t self:capability { kill setgid setuid net_raw dac_override dac_read_search };
+ dontaudit slapd_t self:capability sys_tty_config;
+-allow slapd_t self:process setsched;
++allow slapd_t self:process { setsched signal } ;
+ allow slapd_t self:fifo_file rw_fifo_file_perms;
+ allow slapd_t self:tcp_socket { accept listen };
+
+@@ -64,9 +67,7 @@ allow slapd_t slapd_lock_t:file manage_file_perms;
+ files_lock_filetrans(slapd_t, slapd_lock_t, file)
+
+ manage_dirs_pattern(slapd_t, slapd_log_t, slapd_log_t)
+-append_files_pattern(slapd_t, slapd_log_t, slapd_log_t)
+-create_files_pattern(slapd_t, slapd_log_t, slapd_log_t)
+-setattr_files_pattern(slapd_t, slapd_log_t, slapd_log_t)
++manage_files_pattern(slapd_t, slapd_log_t, slapd_log_t)
+ logging_log_filetrans(slapd_t, slapd_log_t, { file dir })
+
+ manage_dirs_pattern(slapd_t, slapd_replog_t, slapd_replog_t)
+@@ -88,7 +89,6 @@ files_pid_filetrans(slapd_t, slapd_var_run_t, { dir file sock_file })
kernel_read_system_state(slapd_t)
kernel_read_kernel_sysctls(slapd_t)
@@ -35755,7 +38659,7 @@ index d7d9b09..562c288 100644
corenet_all_recvfrom_netlabel(slapd_t)
corenet_tcp_sendrecv_generic_if(slapd_t)
corenet_tcp_sendrecv_generic_node(slapd_t)
-@@ -110,25 +112,23 @@ fs_getattr_all_fs(slapd_t)
+@@ -110,25 +110,23 @@ fs_getattr_all_fs(slapd_t)
fs_search_auto_mountpoints(slapd_t)
files_read_etc_runtime_files(slapd_t)
@@ -36176,7 +39080,7 @@ index d18c960..fb5b674 100644
domain_system_change_exemption($1)
role_transition $2 lldpad_initrc_exec_t system_r;
diff --git a/lldpad.te b/lldpad.te
-index 648def0..b17392a 100644
+index 648def0..07f58a5 100644
--- a/lldpad.te
+++ b/lldpad.te
@@ -26,7 +26,7 @@ files_pid_file(lldpad_var_run_t)
@@ -36188,7 +39092,7 @@ index 648def0..b17392a 100644
allow lldpad_t self:shm create_shm_perms;
allow lldpad_t self:fifo_file rw_fifo_file_perms;
allow lldpad_t self:unix_stream_socket { accept listen };
-@@ -51,11 +51,9 @@ kernel_request_load_module(lldpad_t)
+@@ -51,12 +51,14 @@ kernel_request_load_module(lldpad_t)
dev_read_sysfs(lldpad_t)
@@ -36201,6 +39105,11 @@ index 648def0..b17392a 100644
optional_policy(`
fcoe_dgram_send_fcoemon(lldpad_t)
+ ')
++
++optional_policy(`
++ networkmanager_dgram_send(lldpad_t)
++')
diff --git a/loadkeys.te b/loadkeys.te
index 6cbb977..bd5406a 100644
--- a/loadkeys.te
@@ -36342,10 +39251,10 @@ index dd8e01a..9cd6b0b 100644
##
##
diff --git a/logrotate.te b/logrotate.te
-index 7bab8e5..b88bbf3 100644
+index 7bab8e5..f8c5464 100644
--- a/logrotate.te
+++ b/logrotate.te
-@@ -1,20 +1,18 @@
+@@ -1,20 +1,26 @@
-policy_module(logrotate, 1.14.5)
+policy_module(logrotate, 1.14.0)
@@ -36356,7 +39265,14 @@ index 7bab8e5..b88bbf3 100644
-attribute_role logrotate_roles;
-roleattribute system_r logrotate_roles;
--
++##
++##
++## Allow logrotate to manage nfs files
++##
++##
++gen_tunable(logrotate_use_nfs, false)
++
+
type logrotate_t;
-type logrotate_exec_t;
domain_type(logrotate_t)
@@ -36370,7 +39286,7 @@ index 7bab8e5..b88bbf3 100644
type logrotate_lock_t;
files_lock_file(logrotate_lock_t)
-@@ -25,21 +23,27 @@ files_tmp_file(logrotate_tmp_t)
+@@ -25,21 +31,27 @@ files_tmp_file(logrotate_tmp_t)
type logrotate_var_lib_t;
files_type(logrotate_var_lib_t)
@@ -36404,7 +39320,7 @@ index 7bab8e5..b88bbf3 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,79 +52,94 @@ allow logrotate_t self:msg { send receive };
+@@ -48,79 +60,99 @@ 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)
@@ -36510,7 +39426,11 @@ index 7bab8e5..b88bbf3 100644
+userdom_dontaudit_getattr_user_home_content(logrotate_t)
-mta_sendmail_domtrans(logrotate_t, logrotate_mail_t)
--
++tunable_policy(`logrotate_use_nfs',`
++ fs_read_nfs_files(logrotate_t)
++ fs_read_nfs_symlinks(logrotate_t)
++')
+
-ifdef(`distro_debian',`
+ifdef(`distro_debian', `
allow logrotate_t logrotate_tmp_t:file relabel_file_perms;
@@ -36526,7 +39446,7 @@ index 7bab8e5..b88bbf3 100644
')
optional_policy(`
-@@ -135,16 +154,17 @@ optional_policy(`
+@@ -135,16 +167,17 @@ optional_policy(`
optional_policy(`
apache_read_config(logrotate_t)
@@ -36546,7 +39466,18 @@ index 7bab8e5..b88bbf3 100644
')
optional_policy(`
-@@ -178,7 +198,7 @@ optional_policy(`
+@@ -170,6 +203,10 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ dbus_system_bus_client(logrotate_t)
++')
++
++optional_policy(`
+ fail2ban_stream_connect(logrotate_t)
+ ')
+
+@@ -178,7 +215,7 @@ optional_policy(`
')
optional_policy(`
@@ -36555,7 +39486,7 @@ index 7bab8e5..b88bbf3 100644
')
optional_policy(`
-@@ -198,21 +218,26 @@ optional_policy(`
+@@ -198,21 +235,26 @@ optional_policy(`
')
optional_policy(`
@@ -36569,24 +39500,24 @@ index 7bab8e5..b88bbf3 100644
- openvswitch_read_pid_files(logrotate_t)
- openvswitch_domtrans(logrotate_t)
+ polipo_named_filetrans_log_files(logrotate_t)
-+')
-+
-+optional_policy(`
-+ psad_domtrans(logrotate_t)
')
optional_policy(`
- polipo_log_filetrans_log(logrotate_t, file, "polipo")
-+ rabbitmq_domtrans_beam(logrotate_t)
++ psad_domtrans(logrotate_t)
')
optional_policy(`
- psad_domtrans(logrotate_t)
++ rabbitmq_domtrans_beam(logrotate_t)
++')
++
++optional_policy(`
+ raid_domtrans_mdadm(logrotate_t)
')
optional_policy(`
-@@ -228,10 +253,20 @@ optional_policy(`
+@@ -228,10 +270,21 @@ optional_policy(`
')
optional_policy(`
@@ -36600,6 +39531,7 @@ index 7bab8e5..b88bbf3 100644
+
+optional_policy(`
squid_domtrans(logrotate_t)
++ squid_read_config(logrotate_t)
')
optional_policy(`
@@ -36607,7 +39539,7 @@ index 7bab8e5..b88bbf3 100644
su_exec(logrotate_t)
')
-@@ -241,13 +276,11 @@ optional_policy(`
+@@ -241,13 +294,11 @@ optional_policy(`
#######################################
#
@@ -36627,7 +39559,7 @@ index 7bab8e5..b88bbf3 100644
logging_read_all_logs(logrotate_mail_t)
+manage_files_pattern(logrotate_mail_t, logrotate_tmp_t, logrotate_tmp_t)
diff --git a/logwatch.te b/logwatch.te
-index 4256a4c..30e3cd2 100644
+index 4256a4c..7569cd9 100644
--- a/logwatch.te
+++ b/logwatch.te
@@ -5,9 +5,17 @@ policy_module(logwatch, 1.11.6)
@@ -36687,19 +39619,20 @@ index 4256a4c..30e3cd2 100644
mta_sendmail_domtrans(logwatch_t, logwatch_mail_t)
mta_getattr_spool(logwatch_t)
-@@ -137,6 +146,11 @@ optional_policy(`
+@@ -137,6 +146,12 @@ optional_policy(`
')
optional_policy(`
+ raid_domtrans_mdadm(logwatch_t)
+ raid_access_check_mdadm(logwatch_t)
++ raid_read_conf_files(logwatch_t)
+')
+
+optional_policy(`
rpc_search_nfs_state_data(logwatch_t)
')
-@@ -145,6 +159,13 @@ optional_policy(`
+@@ -145,6 +160,13 @@ optional_policy(`
samba_read_share_files(logwatch_t)
')
@@ -36713,7 +39646,7 @@ index 4256a4c..30e3cd2 100644
########################################
#
# Mail local policy
-@@ -164,6 +185,12 @@ dev_read_sysfs(logwatch_mail_t)
+@@ -164,6 +186,17 @@ dev_read_sysfs(logwatch_mail_t)
logging_read_all_logs(logwatch_mail_t)
@@ -36726,6 +39659,11 @@ index 4256a4c..30e3cd2 100644
+optional_policy(`
+ courier_stream_connect_authdaemon(logwatch_mail_t)
+')
++
++optional_policy(`
++ qmail_domtrans_inject(logwatch_mail_t)
++ qmail_domtrans_queue(logwatch_mail_t)
++')
diff --git a/lpd.fc b/lpd.fc
index 2fb9b2e..08974e3 100644
--- a/lpd.fc
@@ -36739,7 +39677,7 @@ index 2fb9b2e..08974e3 100644
/usr/share/printconf/.* -- gen_context(system_u:object_r:printconf_t,s0)
diff --git a/lpd.if b/lpd.if
-index 6256371..7826e38 100644
+index 6256371..ce2acb8 100644
--- a/lpd.if
+++ b/lpd.if
@@ -1,44 +1,49 @@
@@ -36864,7 +39802,12 @@ index 6256371..7826e38 100644
##
##
##
-@@ -153,7 +155,7 @@ interface(`lpd_manage_spool',`
+@@ -149,11 +151,12 @@ interface(`lpd_manage_spool',`
+ manage_dirs_pattern($1, print_spool_t, print_spool_t)
+ manage_files_pattern($1, print_spool_t, print_spool_t)
+ manage_lnk_files_pattern($1, print_spool_t, print_spool_t)
++ manage_fifo_files_pattern($1, print_spool_t, print_spool_t)
+ ')
########################################
##
@@ -36873,7 +39816,7 @@ index 6256371..7826e38 100644
##
##
##
-@@ -172,7 +174,7 @@ interface(`lpd_relabel_spool',`
+@@ -172,7 +175,7 @@ interface(`lpd_relabel_spool',`
########################################
##
@@ -36882,7 +39825,7 @@ index 6256371..7826e38 100644
##
##
##
-@@ -200,12 +202,11 @@ interface(`lpd_read_config',`
+@@ -200,12 +203,11 @@ interface(`lpd_read_config',`
##
##
#
@@ -36896,7 +39839,7 @@ index 6256371..7826e38 100644
domtrans_pattern($1, lpr_exec_t, lpr_t)
')
-@@ -237,7 +238,8 @@ interface(`lpd_run_lpr',`
+@@ -237,7 +239,8 @@ interface(`lpd_run_lpr',`
########################################
##
@@ -36906,7 +39849,7 @@ index 6256371..7826e38 100644
##
##
##
-@@ -250,6 +252,5 @@ interface(`lpd_exec_lpr',`
+@@ -250,6 +253,5 @@ interface(`lpd_exec_lpr',`
type lpr_exec_t;
')
@@ -37069,12 +40012,14 @@ index b9270f7..15f3748 100644
')
diff --git a/lsm.fc b/lsm.fc
new file mode 100644
-index 0000000..81cd4e0
+index 0000000..d60293d
--- /dev/null
+++ b/lsm.fc
-@@ -0,0 +1,5 @@
+@@ -0,0 +1,7 @@
+/usr/bin/lsmd -- gen_context(system_u:object_r:lsmd_exec_t,s0)
+
++/usr/bin/.*_lsmplugin -- gen_context(system_u:object_r:lsmd_plugin_exec_t,s0)
++
+/usr/lib/systemd/system/libstoragemgmt.* -- gen_context(system_u:object_r:lsmd_unit_file_t,s0)
+
+/var/run/lsm(/.*)? gen_context(system_u:object_r:lsmd_var_run_t,s0)
@@ -37185,16 +40130,23 @@ index 0000000..da30c5d
+')
diff --git a/lsm.te b/lsm.te
new file mode 100644
-index 0000000..6611d9f
+index 0000000..7e8fde0
--- /dev/null
+++ b/lsm.te
-@@ -0,0 +1,34 @@
+@@ -0,0 +1,90 @@
+policy_module(lsm, 1.0.0)
+
+########################################
+#
+# Declarations
+#
++##
++##
++## Determine whether lsmd_plugin can
++## connect to all TCP ports.
++##
++##
++gen_tunable(lsmd_plugin_connect_any, false)
+
+type lsmd_t;
+type lsmd_exec_t;
@@ -37206,6 +40158,14 @@ index 0000000..6611d9f
+type lsmd_unit_file_t;
+systemd_unit_file(lsmd_unit_file_t)
+
++type lsmd_plugin_t;
++type lsmd_plugin_exec_t;
++application_domain(lsmd_plugin_t, lsmd_plugin_exec_t)
++role system_r types lsmd_plugin_t;
++
++type lsmd_plugin_tmp_t;
++files_tmp_file(lsmd_plugin_tmp_t)
++
+########################################
+#
+# lsmd local policy
@@ -37223,6 +40183,47 @@ index 0000000..6611d9f
+corecmd_exec_bin(lsmd_t)
+
+logging_send_syslog_msg(lsmd_t)
++
++########################################
++#
++# Local lsmd plugin policy
++#
++
++allow lsmd_plugin_t self:udp_socket create_socket_perms;
++allow lsmd_plugin_t self:tcp_socket create_stream_socket_perms;
++
++domtrans_pattern(lsmd_t, lsmd_plugin_exec_t, lsmd_plugin_t)
++allow lsmd_plugin_t lsmd_t:unix_stream_socket { read write };
++
++allow lsmd_t lsmd_plugin_exec_t:file read_file_perms;
++stream_connect_pattern(lsmd_plugin_t, lsmd_var_run_t, lsmd_var_run_t, lsmd_t)
++
++manage_files_pattern(lsmd_plugin_t, lsmd_plugin_tmp_t, lsmd_plugin_tmp_t)
++manage_dirs_pattern(lsmd_plugin_t, lsmd_plugin_tmp_t, lsmd_plugin_tmp_t)
++files_tmp_filetrans(lsmd_plugin_t, lsmd_plugin_tmp_t, { file dir })
++
++tunable_policy(`lsmd_plugin_connect_any',`
++ corenet_tcp_connect_all_ports(lsmd_plugin_t)
++ corenet_sendrecv_all_packets(lsmd_plugin_t)
++ corenet_tcp_sendrecv_all_ports(lsmd_plugin_t)
++')
++
++kernel_read_system_state(lsmd_plugin_t)
++
++dev_read_urand(lsmd_plugin_t)
++
++corecmd_exec_bin(lsmd_plugin_t)
++
++corenet_tcp_connect_http_port(lsmd_plugin_t)
++corenet_tcp_connect_http_cache_port(lsmd_plugin_t)
++corenet_tcp_connect_ssh_port(lsmd_plugin_t)
++
++init_stream_connect(lsmd_plugin_t)
++init_dontaudit_rw_stream_socket(lsmd_plugin_t)
++
++logging_send_syslog_msg(lsmd_plugin_t)
++
++sysnet_read_config(lsmd_plugin_t)
diff --git a/mailman.fc b/mailman.fc
index 7fa381b..bbe6b01 100644
--- a/mailman.fc
@@ -37937,10 +40938,12 @@ index e08c55d..9e634bd 100644
+
+')
diff --git a/mandb.fc b/mandb.fc
-index 2de0f64..3c24286 100644
+index 2de0f64..c127555 100644
--- a/mandb.fc
+++ b/mandb.fc
-@@ -1 +1,10 @@
+@@ -1 +1,12 @@
++HOME_DIR/\.manpath -- gen_context(system_u:object_r:mandb_home_t,s0)
++
/etc/cron.daily/man-db\.cron -- gen_context(system_u:object_r:mandb_exec_t,s0)
+
+/usr/bin/mandb -- gen_context(system_u:object_r:mandb_exec_t,s0)
@@ -37950,7 +40953,7 @@ index 2de0f64..3c24286 100644
+
+/var/lock/man-db\.lock -- gen_context(system_u:object_r:mandb_lock_t,s0)
+
-+HOME_DIR/\.manpath -- gen_context(system_u:object_r:mandb_home_t,s0)
++/root/.manpath -- gen_context(system_u:object_r:mandb_home_t,s0)
diff --git a/mandb.if b/mandb.if
index 327f3f7..4f61561 100644
--- a/mandb.if
@@ -38190,10 +41193,10 @@ index 327f3f7..4f61561 100644
+ ')
')
diff --git a/mandb.te b/mandb.te
-index 5a414e0..7fee444 100644
+index 5a414e0..24f45a8 100644
--- a/mandb.te
+++ b/mandb.te
-@@ -10,28 +10,51 @@ roleattribute system_r mandb_roles;
+@@ -10,28 +10,52 @@ roleattribute system_r mandb_roles;
type mandb_t;
type mandb_exec_t;
@@ -38240,6 +41243,7 @@ index 5a414e0..7fee444 100644
-files_read_etc_files(mandb_t)
+files_search_locks(mandb_t)
++files_dontaudit_search_all_mountpoints(mandb_t)
miscfiles_manage_man_cache(mandb_t)
+miscfiles_setattr_man_pages(mandb_t)
@@ -38249,7 +41253,7 @@ index 5a414e0..7fee444 100644
')
+
diff --git a/mcelog.if b/mcelog.if
-index 9dbe694..ea89ab1 100644
+index 9dbe694..c73214d 100644
--- a/mcelog.if
+++ b/mcelog.if
@@ -19,6 +19,25 @@ interface(`mcelog_domtrans',`
@@ -38268,11 +41272,11 @@ index 9dbe694..ea89ab1 100644
+#
+interface(`mcelog_read_log',`
+ gen_require(`
-+ type mcelog_var_log_t;
++ type mcelog_log_t;
+ ')
+
+ logging_search_logs($1)
-+ read_files_pattern($1, mcelog_var_log_t, mcelog_var_log_t)
++ read_files_pattern($1, mcelog_log_t, mcelog_log_t)
+')
+
########################################
@@ -38287,7 +41291,7 @@ index 9dbe694..ea89ab1 100644
admin_pattern($1, mcelog_var_run_t)
')
diff --git a/mcelog.te b/mcelog.te
-index 13ea191..c146d9c 100644
+index 13ea191..2b4e761 100644
--- a/mcelog.te
+++ b/mcelog.te
@@ -36,13 +36,6 @@ gen_tunable(mcelog_foreground, false)
@@ -38304,7 +41308,7 @@ index 13ea191..c146d9c 100644
type mcelog_t;
type mcelog_exec_t;
init_daemon_domain(mcelog_t, mcelog_exec_t)
-@@ -84,17 +77,20 @@ files_pid_filetrans(mcelog_t, mcelog_var_run_t, { dir file sock_file })
+@@ -84,17 +77,21 @@ files_pid_filetrans(mcelog_t, mcelog_var_run_t, { dir file sock_file })
kernel_read_system_state(mcelog_t)
@@ -38314,9 +41318,10 @@ index 13ea191..c146d9c 100644
dev_read_raw_memory(mcelog_t)
dev_read_kmsg(mcelog_t)
dev_rw_sysfs(mcelog_t)
-
--files_read_etc_files(mcelog_t)
-
+-files_read_etc_files(mcelog_t)
++dev_rw_cpu_microcode(mcelog_t)
+
mls_file_read_all_levels(mcelog_t)
+auth_use_nsswitch(mcelog_t)
@@ -38328,7 +41333,7 @@ index 13ea191..c146d9c 100644
tunable_policy(`mcelog_client',`
allow mcelog_t self:unix_stream_socket connectto;
-@@ -114,9 +110,6 @@ tunable_policy(`mcelog_server',`
+@@ -114,9 +111,6 @@ tunable_policy(`mcelog_server',`
allow mcelog_t self:unix_stream_socket { listen accept };
')
@@ -38464,10 +41469,10 @@ index 0000000..3f433f1
+')
diff --git a/mcollective.te b/mcollective.te
new file mode 100644
-index 0000000..a04dd6b
+index 0000000..8bc27f4
--- /dev/null
+++ b/mcollective.te
-@@ -0,0 +1,29 @@
+@@ -0,0 +1,27 @@
+policy_module(mcollective, 1.0.0)
+
+########################################
@@ -38480,8 +41485,6 @@ index 0000000..a04dd6b
+init_daemon_domain(mcollective_t, mcollective_exec_t)
+cron_system_entry(mcollective_t, mcollective_exec_t)
+
-+permissive mcollective_t;
-+
+type mcollective_etc_rw_t;
+files_type(mcollective_etc_rw_t)
+
@@ -38913,10 +41916,10 @@ index cba62db..562833a 100644
+ delete_files_pattern($1, dkim_milter_data_t, dkim_milter_data_t)
+')
diff --git a/milter.te b/milter.te
-index 92508b2..db83591 100644
+index 92508b2..9c51c34 100644
--- a/milter.te
+++ b/milter.te
-@@ -1,77 +1,110 @@
+@@ -1,77 +1,121 @@
-policy_module(milter, 1.4.2)
+policy_module(milter, 1.4.0)
@@ -38936,6 +41939,9 @@ index 92508b2..db83591 100644
+type dkim_milter_private_key_t;
+files_type(dkim_milter_private_key_t)
+
++type dkim_milter_tmp_t;
++files_tmp_file(dkim_milter_tmp_t)
++
+# currently-supported milters are milter-greylist, milter-regex and spamass-milter
milter_template(greylist)
milter_template(regex)
@@ -38960,6 +41966,8 @@ index 92508b2..db83591 100644
allow milter_domains self:fifo_file rw_fifo_file_perms;
-allow milter_domains self:tcp_socket { accept listen };
+
++allow milter_domains self:process signull;
++
+# Allow communication with MTA over a TCP socket
+allow milter_domains self:tcp_socket create_stream_socket_perms;
@@ -38995,8 +42003,14 @@ index 92508b2..db83591 100644
-logging_send_syslog_msg(milter_domains)
+read_files_pattern(dkim_milter_t, dkim_milter_private_key_t, dkim_milter_private_key_t)
+
++manage_files_pattern(dkim_milter_t, dkim_milter_tmp_t, dkim_milter_tmp_t)
++manage_dirs_pattern(dkim_milter_t, dkim_milter_tmp_t, dkim_milter_tmp_t)
++files_tmp_filetrans(dkim_milter_t, dkim_milter_tmp_t, { dir file })
++
+kernel_read_kernel_sysctls(dkim_milter_t)
+
++corenet_udp_bind_all_ports(dkim_milter_t)
++
+auth_use_nsswitch(dkim_milter_t)
+
+sysnet_dns_name_resolve(dkim_milter_t)
@@ -39055,7 +42069,7 @@ index 92508b2..db83591 100644
optional_policy(`
mysql_stream_connect(greylist_milter_t)
-@@ -79,30 +112,45 @@ optional_policy(`
+@@ -79,30 +123,45 @@ optional_policy(`
########################################
#
@@ -39105,6 +42119,444 @@ index 92508b2..db83591 100644
optional_policy(`
spamassassin_domtrans_client(spamass_milter_t)
')
+diff --git a/mip6d.fc b/mip6d.fc
+new file mode 100644
+index 0000000..767bbad
+--- /dev/null
++++ b/mip6d.fc
+@@ -0,0 +1,3 @@
++/usr/lib/systemd/system/mip6d.* -- gen_context(system_u:object_r:mip6d_unit_file_t,s0)
++
++/usr/sbin/mip6d -- gen_context(system_u:object_r:mip6d_exec_t,s0)
+diff --git a/mip6d.if b/mip6d.if
+new file mode 100644
+index 0000000..8169129
+--- /dev/null
++++ b/mip6d.if
+@@ -0,0 +1,79 @@
++
++## Mobile IPv6 and NEMO Basic Support implementation
++
++########################################
++##
++## Execute TEMPLATE in the mip6d domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`mip6d_domtrans',`
++ gen_require(`
++ type mip6d_t, mip6d_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, mip6d_exec_t, mip6d_t)
++')
++########################################
++##
++## Execute mip6d server in the mip6d domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`mip6d_systemctl',`
++ gen_require(`
++ type mip6d_t;
++ type mip6d_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 mip6d_unit_file_t:file read_file_perms;
++ allow $1 mip6d_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, mip6d_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an mip6d environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`mip6d_admin',`
++ gen_require(`
++ type mip6d_t;
++ type mip6d_unit_file_t;
++ ')
++
++ allow $1 mip6d_t:process { signal_perms };
++ ps_process_pattern($1, mip6d_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 mip6d_t:process ptrace;
++ ')
++
++ mip6d_systemctl($1)
++ admin_pattern($1, mip6d_unit_file_t)
++ allow $1 mip6d_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/mip6d.te b/mip6d.te
+new file mode 100644
+index 0000000..1d34063
+--- /dev/null
++++ b/mip6d.te
+@@ -0,0 +1,33 @@
++policy_module(mip6d, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type mip6d_t;
++type mip6d_exec_t;
++init_daemon_domain(mip6d_t, mip6d_exec_t)
++
++type mip6d_unit_file_t;
++systemd_unit_file(mip6d_unit_file_t)
++
++########################################
++#
++# mip6d local policy
++#
++allow mip6d_t self:capability { net_admin net_raw };
++allow mip6d_t self:process { fork signal };
++allow mip6d_t self:netlink_route_socket create_netlink_socket_perms;
++allow mip6d_t self:netlink_xfrm_socket create_netlink_socket_perms;
++allow mip6d_t self:rawip_socket create_socket_perms;
++allow mip6d_t self:udp_socket create_socket_perms;
++allow mip6d_t self:fifo_file rw_fifo_file_perms;
++allow mip6d_t self:unix_stream_socket create_stream_socket_perms;
++
++kernel_rw_net_sysctls(mip6d_t)
++kernel_read_network_state(mip6d_t)
++kernel_request_load_module(mip6d_t)
++
++logging_send_syslog_msg(mip6d_t)
++
+diff --git a/mirrormanager.fc b/mirrormanager.fc
+new file mode 100644
+index 0000000..c713b27
+--- /dev/null
++++ b/mirrormanager.fc
+@@ -0,0 +1,7 @@
++/usr/share/mirrormanager/server/mirrormanager -- gen_context(system_u:object_r:mirrormanager_exec_t,s0)
++
++/var/lib/mirrormanager(/.*)? gen_context(system_u:object_r:mirrormanager_var_lib_t,s0)
++
++/var/log/mirrormanager(/.*)? gen_context(system_u:object_r:mirrormanager_log_t,s0)
++
++/var/run/mirrormanager(/.*)? gen_context(system_u:object_r:mirrormanager_var_run_t,s0)
+diff --git a/mirrormanager.if b/mirrormanager.if
+new file mode 100644
+index 0000000..fbb831d
+--- /dev/null
++++ b/mirrormanager.if
+@@ -0,0 +1,237 @@
++
++## policy for mirrormanager
++
++########################################
++##
++## Execute mirrormanager in the mirrormanager domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`mirrormanager_domtrans',`
++ gen_require(`
++ type mirrormanager_t, mirrormanager_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, mirrormanager_exec_t, mirrormanager_t)
++')
++
++########################################
++##
++## Read mirrormanager's log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`mirrormanager_read_log',`
++ gen_require(`
++ type mirrormanager_log_t;
++ ')
++
++ logging_search_logs($1)
++ read_files_pattern($1, mirrormanager_log_t, mirrormanager_log_t)
++')
++
++########################################
++##
++## Append to mirrormanager log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_append_log',`
++ gen_require(`
++ type mirrormanager_log_t;
++ ')
++
++ logging_search_logs($1)
++ append_files_pattern($1, mirrormanager_log_t, mirrormanager_log_t)
++')
++
++########################################
++##
++## Manage mirrormanager log files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_manage_log',`
++ gen_require(`
++ type mirrormanager_log_t;
++ ')
++
++ logging_search_logs($1)
++ manage_dirs_pattern($1, mirrormanager_log_t, mirrormanager_log_t)
++ manage_files_pattern($1, mirrormanager_log_t, mirrormanager_log_t)
++ manage_lnk_files_pattern($1, mirrormanager_log_t, mirrormanager_log_t)
++')
++
++########################################
++##
++## Search mirrormanager lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_search_lib',`
++ gen_require(`
++ type mirrormanager_var_lib_t;
++ ')
++
++ allow $1 mirrormanager_var_lib_t:dir search_dir_perms;
++ files_search_var_lib($1)
++')
++
++########################################
++##
++## Read mirrormanager lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_read_lib_files',`
++ gen_require(`
++ type mirrormanager_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ list_dirs_pattern($1, mirrormanager_var_lib_t, mirrormanager_var_lib_t)
++ read_files_pattern($1, mirrormanager_var_lib_t, mirrormanager_var_lib_t)
++')
++
++########################################
++##
++## Manage mirrormanager lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_manage_lib_files',`
++ gen_require(`
++ type mirrormanager_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_files_pattern($1, mirrormanager_var_lib_t, mirrormanager_var_lib_t)
++')
++
++########################################
++##
++## Manage mirrormanager lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_manage_lib_dirs',`
++ gen_require(`
++ type mirrormanager_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_dirs_pattern($1, mirrormanager_var_lib_t, mirrormanager_var_lib_t)
++')
++
++########################################
++##
++## Read mirrormanager PID files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_read_pid_files',`
++ gen_require(`
++ type mirrormanager_var_run_t;
++ ')
++
++ files_search_pids($1)
++ read_files_pattern($1, mirrormanager_var_run_t, mirrormanager_var_run_t)
++')
++
++########################################
++##
++## Manage mirrormanager PID files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_manage_pid_files',`
++ gen_require(`
++ type mirrormanager_var_run_t;
++ ')
++
++ files_search_pids($1)
++ manage_files_pattern($1, mirrormanager_var_run_t, mirrormanager_var_run_t)
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an mirrormanager environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mirrormanager_admin',`
++ gen_require(`
++ type mirrormanager_t;
++ type mirrormanager_log_t;
++ type mirrormanager_var_lib_t;
++ type mirrormanager_var_run_t;
++ ')
++
++ allow $1 mirrormanager_t:process { signal_perms };
++ ps_process_pattern($1, mirrormanager_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 mirrormanager_t:process ptrace;
++ ')
++
++ logging_search_logs($1)
++ admin_pattern($1, mirrormanager_log_t)
++
++ files_search_var_lib($1)
++ admin_pattern($1, mirrormanager_var_lib_t)
++
++ files_search_pids($1)
++ admin_pattern($1, mirrormanager_var_run_t)
++
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/mirrormanager.te b/mirrormanager.te
+new file mode 100644
+index 0000000..841b732
+--- /dev/null
++++ b/mirrormanager.te
+@@ -0,0 +1,43 @@
++policy_module(mirrormanager, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type mirrormanager_t;
++type mirrormanager_exec_t;
++cron_system_entry(mirrormanager_t, mirrormanager_exec_t)
++
++type mirrormanager_log_t;
++logging_log_file(mirrormanager_log_t)
++
++type mirrormanager_var_lib_t;
++files_type(mirrormanager_var_lib_t)
++
++type mirrormanager_var_run_t;
++files_pid_file(mirrormanager_var_run_t)
++
++########################################
++#
++# mirrormanager local policy
++#
++
++allow mirrormanager_t self:fifo_file rw_fifo_file_perms;
++allow mirrormanager_t self:unix_stream_socket create_stream_socket_perms;
++
++manage_dirs_pattern(mirrormanager_t, mirrormanager_log_t, mirrormanager_log_t)
++manage_files_pattern(mirrormanager_t, mirrormanager_log_t, mirrormanager_log_t)
++manage_lnk_files_pattern(mirrormanager_t, mirrormanager_log_t, mirrormanager_log_t)
++logging_log_filetrans(mirrormanager_t, mirrormanager_log_t, { dir })
++
++manage_dirs_pattern(mirrormanager_t, mirrormanager_var_lib_t, mirrormanager_var_lib_t)
++manage_files_pattern(mirrormanager_t, mirrormanager_var_lib_t, mirrormanager_var_lib_t)
++manage_lnk_files_pattern(mirrormanager_t, mirrormanager_var_lib_t, mirrormanager_var_lib_t)
++files_var_lib_filetrans(mirrormanager_t, mirrormanager_var_lib_t, { dir })
++
++manage_dirs_pattern(mirrormanager_t, mirrormanager_var_run_t, mirrormanager_var_run_t)
++manage_files_pattern(mirrormanager_t, mirrormanager_var_run_t, mirrormanager_var_run_t)
++manage_lnk_files_pattern(mirrormanager_t, mirrormanager_var_run_t, mirrormanager_var_run_t)
++files_pid_filetrans(mirrormanager_t, mirrormanager_var_run_t, { dir })
++
diff --git a/mock.fc b/mock.fc
new file mode 100644
index 0000000..8d0e473
@@ -39434,10 +42886,10 @@ index 0000000..6568bfe
+')
diff --git a/mock.te b/mock.te
new file mode 100644
-index 0000000..7245033
+index 0000000..fc64201
--- /dev/null
+++ b/mock.te
-@@ -0,0 +1,273 @@
+@@ -0,0 +1,276 @@
+policy_module(mock,1.0.0)
+
+##
@@ -39485,6 +42937,7 @@ index 0000000..7245033
+#
+
+allow mock_t self:capability { sys_admin sys_ptrace setfcap setuid sys_chroot chown audit_write dac_override sys_nice mknod fsetid setgid fowner };
++allow mock_t self:capability2 block_suspend;
+allow mock_t self:process { siginh noatsecure signal_perms transition rlimitinh setsched setpgid };
+# Needed because mock can run java and mono withing build environment
+allow mock_t self:process { execmem execstack };
@@ -39708,6 +43161,8 @@ index 0000000..7245033
+
+libs_exec_ldconfig(mock_build_t)
+
++userdom_use_inherited_user_ptys(mock_build_t)
++
+tunable_policy(`mock_enable_homedirs',`
+ userdom_read_user_home_content_files(mock_build_t)
+')
@@ -39790,7 +43245,7 @@ index b1ac8b5..9b22bea 100644
+ ')
+')
diff --git a/modemmanager.te b/modemmanager.te
-index cb4c13d..ab6fb25 100644
+index cb4c13d..9342be3 100644
--- a/modemmanager.te
+++ b/modemmanager.te
@@ -11,6 +11,9 @@ init_daemon_domain(modemmanager_t, modemmanager_exec_t)
@@ -39803,12 +43258,15 @@ index cb4c13d..ab6fb25 100644
########################################
#
# Local policy
-@@ -27,12 +30,12 @@ kernel_read_system_state(modemmanager_t)
+@@ -25,14 +28,14 @@ allow modemmanager_t self:netlink_kobject_uevent_socket create_socket_perms;
+ kernel_read_system_state(modemmanager_t)
+
dev_read_sysfs(modemmanager_t)
++dev_read_urand(modemmanager_t)
dev_rw_modem(modemmanager_t)
-files_read_etc_files(modemmanager_t)
-
+-
term_use_generic_ptys(modemmanager_t)
term_use_unallocated_ttys(modemmanager_t)
+term_use_usb_ttys(modemmanager_t)
@@ -39974,16 +43432,16 @@ index 0000000..7415106
+/var/motion(/.*)? gen_context(system_u:object_r:motion_data_t,s0)
diff --git a/motion.if b/motion.if
new file mode 100644
-index 0000000..1b1b04c
+index 0000000..39f4a04
--- /dev/null
+++ b/motion.if
-@@ -0,0 +1,193 @@
+@@ -0,0 +1,197 @@
+
+## Detect motion using a video4linux device
+
+########################################
+##
-+## Execute TEMPLATE in the motion domain.
++## Execute motion in the motion domain.
+##
+##
+##
@@ -40114,7 +43572,7 @@ index 0000000..1b1b04c
+ ')
+
+ systemd_exec_systemctl($1)
-+ systemd_read_fifo_file_password_run($1)
++ systemd_read_fifo_file_passwd_run($1)
+ allow $1 motion_unit_file_t:file read_file_perms;
+ allow $1 motion_unit_file_t:service manage_service_perms;
+
@@ -40154,12 +43612,16 @@ index 0000000..1b1b04c
+ gen_require(`
+ type motion_t;
+ type motion_log_t;
-+ type motion_unit_file_t;
++ type motion_unit_file_t;
+ ')
+
-+ allow $1 motion_t:process { ptrace signal_perms };
++ allow $1 motion_t:process { signal_perms };
+ ps_process_pattern($1, motion_t)
+
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 motion_t:process ptrace;
++ ')
++
+ logging_search_logs($1)
+ admin_pattern($1, motion_log_t)
+
@@ -40242,10 +43704,10 @@ index 0000000..b694afc
+')
+
diff --git a/mozilla.fc b/mozilla.fc
-index 6ffaba2..a4d75bf 100644
+index 6ffaba2..ab66d2f 100644
--- a/mozilla.fc
+++ b/mozilla.fc
-@@ -1,38 +1,69 @@
+@@ -1,38 +1,70 @@
-HOME_DIR/\.galeon(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
-HOME_DIR/\.mozilla(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
-HOME_DIR/\.mozilla/plugins(/.*)? gen_context(system_u:object_r:mozilla_plugin_home_t,s0)
@@ -40269,6 +43731,7 @@ index 6ffaba2..a4d75bf 100644
+HOME_DIR/\.java(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.mozilla(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.cache/mozilla(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
++HOME_DIR/\.cache/icedtea-web(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.thunderbird(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/POkemon.*(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.netscape(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
@@ -40287,8 +43750,6 @@ index 6ffaba2..a4d75bf 100644
+HOME_DIR/\.lyx(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.quakelive(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.spicec(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
-+HOME_DIR/\.texlive2012(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
-+HOME_DIR/\.texlive2013(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.ICAClient(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/\.IBMERS(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
+HOME_DIR/zimbrauserdata(/.*)? gen_context(system_u:object_r:mozilla_home_t,s0)
@@ -40305,7 +43766,7 @@ index 6ffaba2..a4d75bf 100644
-/usr/bin/netscape -- gen_context(system_u:object_r:mozilla_exec_t,s0)
-/usr/bin/nspluginscan -- gen_context(system_u:object_r:mozilla_plugin_exec_t,s0)
-/usr/bin/nspluginviewer -- gen_context(system_u:object_r:mozilla_plugin_exec_t,s0)
-
+-
-/usr/lib/[^/]*firefox[^/]*/firefox -- gen_context(system_u:object_r:mozilla_exec_t,s0)
-/usr/lib/[^/]*firefox[^/]*/firefox-bin -- gen_context(system_u:object_r:mozilla_exec_t,s0)
-/usr/lib/firefox[^/]*/mozilla-.* -- gen_context(system_u:object_r:mozilla_exec_t,s0)
@@ -40316,6 +43777,7 @@ index 6ffaba2..a4d75bf 100644
-/usr/lib/mozilla/plugins-wrapped(/.*)? gen_context(system_u:object_r:mozilla_plugin_rw_t,s0)
-/usr/lib/netscape/base-4/wrapper -- gen_context(system_u:object_r:mozilla_exec_t,s0)
-/usr/lib/netscape/.+/communicator/communicator-smotif\.real -- gen_context(system_u:object_r:mozilla_exec_t,s0)
++
+ifdef(`distro_redhat',`
+/usr/bin/nspluginscan -- gen_context(system_u:object_r:mozilla_plugin_exec_t,s0)
+/usr/bin/nspluginviewer -- gen_context(system_u:object_r:mozilla_plugin_exec_t,s0)
@@ -40343,13 +43805,15 @@ index 6ffaba2..a4d75bf 100644
+
+/usr/lib/xulrunner[^/]*/plugin-container -- gen_context(system_u:object_r:mozilla_plugin_exec_t,s0)
+
++/usr/lib/firefox/plugin-container -- gen_context(system_u:object_r:mozilla_plugin_exec_t,s0)
++
+/usr/lib/mozilla/plugins-wrapped(/.*)? gen_context(system_u:object_r:mozilla_plugin_rw_t,s0)
+
+ifdef(`distro_redhat',`
+/usr/lib/nspluginwrapper/plugin-config -- gen_context(system_u:object_r:mozilla_plugin_config_exec_t,s0)
+')
diff --git a/mozilla.if b/mozilla.if
-index 6194b80..ada96f0 100644
+index 6194b80..cafb2b0 100644
--- a/mozilla.if
+++ b/mozilla.if
@@ -1,146 +1,75 @@
@@ -40481,7 +43945,8 @@ index 6194b80..ada96f0 100644
- mozilla_run_plugin($2, $1)
- mozilla_run_plugin_config($2, $1)
--
++ mozilla_filetrans_home_content($2)
+
- allow $2 { mozilla_plugin_t mozilla_plugin_config_t }:process { ptrace signal_perms };
- ps_process_pattern($2, { mozilla_plugin_t mozilla_plugin_config_t })
-
@@ -40503,8 +43968,7 @@ index 6194b80..ada96f0 100644
- userdom_user_home_dir_filetrans($2, mozilla_home_t, dir, ".mozilla")
- userdom_user_home_dir_filetrans($2, mozilla_home_t, dir, ".netscape")
- userdom_user_home_dir_filetrans($2, mozilla_home_t, dir, ".phoenix")
-+ mozilla_filetrans_home_content($2)
-
+-
- allow $2 mozilla_plugin_tmp_t:dir { manage_dir_perms relabel_dir_perms };
- allow $2 mozilla_plugin_tmp_t:file { manage_file_perms relabel_file_perms };
- allow $2 mozilla_plugin_tmp_t:fifo_file { manage_fifo_file_perms relabel_fifo_file_perms };
@@ -40635,7 +44099,7 @@ index 6194b80..ada96f0 100644
##
##
##
-@@ -265,140 +173,153 @@ interface(`mozilla_exec_user_plugin_home_files',`
+@@ -265,140 +173,155 @@ interface(`mozilla_exec_user_plugin_home_files',`
##
#
interface(`mozilla_execmod_user_home_files',`
@@ -40735,6 +44199,8 @@ index 6194b80..ada96f0 100644
+ allow mozilla_plugin_t $1:unix_dgram_socket { sendto rw_socket_perms };
+ allow mozilla_plugin_t $1:shm { rw_shm_perms destroy };
+ allow mozilla_plugin_t $1:sem create_sem_perms;
++ allow $1 mozilla_plugin_t:sem rw_sem_perms;
++ allow $1 mozilla_plugin_t:shm rw_shm_perms;
+
+ ps_process_pattern($1, mozilla_plugin_t)
+ allow $1 mozilla_plugin_t:process signal_perms;
@@ -40849,7 +44315,7 @@ index 6194b80..ada96f0 100644
')
########################################
-@@ -424,8 +345,7 @@ interface(`mozilla_dbus_chat',`
+@@ -424,8 +347,7 @@ interface(`mozilla_dbus_chat',`
########################################
##
@@ -40859,7 +44325,7 @@ index 6194b80..ada96f0 100644
##
##
##
-@@ -433,76 +353,126 @@ interface(`mozilla_dbus_chat',`
+@@ -433,76 +355,144 @@ interface(`mozilla_dbus_chat',`
##
##
#
@@ -40962,7 +44428,25 @@ index 6194b80..ada96f0 100644
+ type mozilla_plugin_t;
+ ')
+
-+ allow $1 mozilla_plugin_t:sem { unix_read unix_write };
++ dontaudit $1 mozilla_plugin_t:sem { associate unix_read unix_write };
++')
++
++#######################################
++##
++## Allow generict ipc read/write to a mozilla_plugin
++##
++##
++##
++## Domain to not audit.
++##
++##
++#
++interface(`mozilla_plugin_rw_sem',`
++ gen_require(`
++ type mozilla_plugin_t;
++ ')
++
++ allow $1 mozilla_plugin_t:sem { associate unix_read unix_write };
')
########################################
@@ -41015,7 +44499,7 @@ index 6194b80..ada96f0 100644
##
##
##
-@@ -510,19 +480,18 @@ interface(`mozilla_plugin_read_tmpfs_files',`
+@@ -510,19 +500,18 @@ interface(`mozilla_plugin_read_tmpfs_files',`
##
##
#
@@ -41040,7 +44524,7 @@ index 6194b80..ada96f0 100644
##
##
##
-@@ -530,45 +499,58 @@ interface(`mozilla_plugin_delete_tmpfs_files',`
+@@ -530,45 +519,57 @@ interface(`mozilla_plugin_delete_tmpfs_files',`
##
##
#
@@ -41109,8 +44593,6 @@ index 6194b80..ada96f0 100644
+ userdom_user_home_dir_filetrans($1, mozilla_home_t, file, "abc")
+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, ".quakelive")
+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, ".spicec")
-+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, ".texlive2012")
-+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, ".texlive2013")
+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, ".ICAClient")
+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, "zimbrauserdata")
+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, ".juniper_networks")
@@ -41120,11 +44602,12 @@ index 6194b80..ada96f0 100644
+ userdom_user_home_dir_filetrans($1, mozilla_home_t, dir, ".webex")
+ optional_policy(`
+ gnome_cache_filetrans($1, mozilla_home_t, dir, "mozilla")
++ gnome_cache_filetrans($1, mozilla_home_t, dir, "icedtea-web")
+ ')
')
+
diff --git a/mozilla.te b/mozilla.te
-index 6a306ee..b236449 100644
+index 6a306ee..e76899c 100644
--- a/mozilla.te
+++ b/mozilla.te
@@ -1,4 +1,4 @@
@@ -41387,7 +44870,7 @@ index 6a306ee..b236449 100644
term_dontaudit_getattr_pty_dirs(mozilla_t)
-@@ -181,56 +196,73 @@ auth_use_nsswitch(mozilla_t)
+@@ -181,57 +196,76 @@ auth_use_nsswitch(mozilla_t)
logging_send_syslog_msg(mozilla_t)
miscfiles_read_fonts(mozilla_t)
@@ -41440,12 +44923,6 @@ index 6a306ee..b236449 100644
- fs_manage_nfs_dirs(mozilla_t)
- fs_manage_nfs_files(mozilla_t)
- fs_manage_nfs_symlinks(mozilla_t)
--')
--
--tunable_policy(`use_samba_home_dirs',`
-- fs_manage_cifs_dirs(mozilla_t)
-- fs_manage_cifs_files(mozilla_t)
-- fs_manage_cifs_symlinks(mozilla_t)
+userdom_home_manager(mozilla_t)
+
+# Uploads, local html
@@ -41497,8 +44974,16 @@ index 6a306ee..b236449 100644
+ userdom_dontaudit_read_user_home_content_files(mozilla_t)
')
+-tunable_policy(`use_samba_home_dirs',`
+- fs_manage_cifs_dirs(mozilla_t)
+- fs_manage_cifs_files(mozilla_t)
+- fs_manage_cifs_symlinks(mozilla_t)
+-')
++userdom_manage_home_texlive(mozilla_t)
+
optional_policy(`
-@@ -244,19 +276,12 @@ optional_policy(`
+ apache_read_user_scripts(mozilla_t)
+@@ -244,19 +278,12 @@ optional_policy(`
optional_policy(`
cups_read_rw_config(mozilla_t)
@@ -41520,7 +45005,7 @@ index 6a306ee..b236449 100644
optional_policy(`
networkmanager_dbus_chat(mozilla_t)
-@@ -265,33 +290,32 @@ optional_policy(`
+@@ -265,33 +292,32 @@ optional_policy(`
optional_policy(`
gnome_stream_connect_gconf(mozilla_t)
@@ -41568,7 +45053,7 @@ index 6a306ee..b236449 100644
')
optional_policy(`
-@@ -300,259 +324,236 @@ optional_policy(`
+@@ -300,259 +326,250 @@ optional_policy(`
########################################
#
@@ -41582,7 +45067,7 @@ index 6a306ee..b236449 100644
+dontaudit mozilla_plugin_t self:capability { sys_admin ipc_lock sys_nice sys_tty_config };
+dontaudit mozilla_plugin_t self:capability2 block_suspend;
+
-+allow mozilla_plugin_t self:process { setpgid getsched setsched signal_perms execmem execstack setrlimit transition };
++allow mozilla_plugin_t self:process { getsession setcap setpgid getsched setsched signal_perms execmem execstack setrlimit transition };
+allow mozilla_plugin_t self:netlink_route_socket r_netlink_socket_perms;
+allow mozilla_plugin_t self:netlink_socket create_socket_perms;
+allow mozilla_plugin_t self:tcp_socket create_stream_socket_perms;
@@ -41647,6 +45132,7 @@ index 6a306ee..b236449 100644
manage_sock_files_pattern(mozilla_plugin_t, mozilla_plugin_tmpfs_t, mozilla_plugin_tmpfs_t)
fs_tmpfs_filetrans(mozilla_plugin_t, mozilla_plugin_tmpfs_t, { file lnk_file sock_file fifo_file })
+userdom_tmpfs_filetrans_to(mozilla_plugin_t, mozilla_plugin_tmpfs_t, { file lnk_file sock_file fifo_file })
++userdom_manage_home_texlive(mozilla_plugin_t)
allow mozilla_plugin_t mozilla_plugin_rw_t:dir list_dir_perms;
-allow mozilla_plugin_t mozilla_plugin_rw_t:file read_file_perms;
@@ -41666,6 +45152,8 @@ index 6a306ee..b236449 100644
kernel_request_load_module(mozilla_plugin_t)
kernel_dontaudit_getattr_core_if(mozilla_plugin_t)
+files_dontaudit_read_root_files(mozilla_plugin_t)
++kernel_dontaudit_list_all_proc(mozilla_plugin_t)
++kernel_dontaudit_list_all_sysctls(mozilla_plugin_t)
corecmd_exec_bin(mozilla_plugin_t)
corecmd_exec_shell(mozilla_plugin_t)
@@ -41846,8 +45334,11 @@ index 6a306ee..b236449 100644
userdom_dontaudit_use_user_terminals(mozilla_plugin_t)
+userdom_manage_user_tmp_sockets(mozilla_plugin_t)
+userdom_manage_user_tmp_dirs(mozilla_plugin_t)
++userdom_manage_tmpfs_files(mozilla_plugin_t)
+userdom_rw_inherited_user_tmp_files(mozilla_plugin_t)
++userdom_rw_inherited_user_tmpfs_files(mozilla_plugin_t)
+userdom_delete_user_tmp_files(mozilla_plugin_t)
++userdom_delete_user_tmpfs_files(mozilla_plugin_t)
+userdom_rw_inherited_user_home_sock_files(mozilla_plugin_t)
+userdom_manage_home_certs(mozilla_plugin_t)
+userdom_read_user_tmp_symlinks(mozilla_plugin_t)
@@ -41857,28 +45348,33 @@ index 6a306ee..b236449 100644
-ifndef(`enable_mls',`
- fs_list_dos(mozilla_plugin_t)
- fs_read_dos_files(mozilla_plugin_t)
--
-- fs_search_removable(mozilla_plugin_t)
-- fs_read_removable_files(mozilla_plugin_t)
-- fs_read_removable_symlinks(mozilla_plugin_t)
+userdom_read_user_home_content_files(mozilla_plugin_t)
+userdom_read_user_home_content_symlinks(mozilla_plugin_t)
+userdom_read_home_certs(mozilla_plugin_t)
+userdom_read_home_audio_files(mozilla_plugin_t)
+userdom_exec_user_tmp_files(mozilla_plugin_t)
+- fs_search_removable(mozilla_plugin_t)
+- fs_read_removable_files(mozilla_plugin_t)
+- fs_read_removable_symlinks(mozilla_plugin_t)
++userdom_home_manager(mozilla_plugin_t)
+
- fs_read_iso9660_files(mozilla_plugin_t)
--')
--
++tunable_policy(`mozilla_plugin_can_network_connect',`
++ corenet_tcp_connect_all_ports(mozilla_plugin_t)
+ ')
+
-tunable_policy(`allow_execmem',`
- allow mozilla_plugin_t self:process execmem;
--')
-+userdom_home_manager(mozilla_plugin_t)
++optional_policy(`
++ abrt_stream_connect(mozilla_plugin_t)
+ ')
-tunable_policy(`mozilla_execstack',`
- allow mozilla_plugin_t self:process { execmem execstack };
-+tunable_policy(`mozilla_plugin_can_network_connect',`
-+ corenet_tcp_connect_all_ports(mozilla_plugin_t)
++optional_policy(`
++ alsa_read_rw_config(mozilla_plugin_t)
++ alsa_read_home_files(mozilla_plugin_t)
')
-tunable_policy(`use_nfs_home_dirs',`
@@ -41886,8 +45382,7 @@ index 6a306ee..b236449 100644
- fs_manage_nfs_files(mozilla_plugin_t)
- fs_manage_nfs_symlinks(mozilla_plugin_t)
+optional_policy(`
-+ alsa_read_rw_config(mozilla_plugin_t)
-+ alsa_read_home_files(mozilla_plugin_t)
++ apache_list_modules(mozilla_plugin_t)
')
-tunable_policy(`use_samba_home_dirs',`
@@ -41895,7 +45390,7 @@ index 6a306ee..b236449 100644
- fs_manage_cifs_files(mozilla_plugin_t)
- fs_manage_cifs_symlinks(mozilla_plugin_t)
+optional_policy(`
-+ apache_list_modules(mozilla_plugin_t)
++ bumblebee_stream_connect(mozilla_plugin_t)
')
optional_policy(`
@@ -41956,16 +45451,20 @@ index 6a306ee..b236449 100644
')
optional_policy(`
-@@ -560,7 +561,7 @@ optional_policy(`
+@@ -560,7 +577,11 @@ optional_policy(`
')
optional_policy(`
- pulseaudio_run(mozilla_plugin_t, mozilla_plugin_roles)
++ policykit_dbus_chat(mozilla_plugin_t)
++')
++
++optional_policy(`
+ rtkit_scheduled(mozilla_plugin_t)
')
optional_policy(`
-@@ -568,108 +569,130 @@ optional_policy(`
+@@ -568,108 +589,131 @@ optional_policy(`
')
optional_policy(`
@@ -42146,6 +45645,7 @@ index 6a306ee..b236449 100644
- automount_dontaudit_getattr_tmp_dirs(mozilla_plugin_config_t)
+tunable_policy(`mozilla_plugin_use_spice',`
+ dev_rw_generic_usb_dev(mozilla_plugin_t)
++ dev_setattr_generic_usb_dev(mozilla_plugin_t)
+ corenet_tcp_bind_vnc_port(mozilla_plugin_t)
')
@@ -42217,10 +45717,24 @@ index 5fa77c7..2e01c7d 100644
domain_system_change_exemption($1)
role_transition $2 mpd_initrc_exec_t system_r;
diff --git a/mpd.te b/mpd.te
-index 7c8afcc..33b18c8 100644
+index 7c8afcc..b8c9bf1 100644
--- a/mpd.te
+++ b/mpd.te
-@@ -62,18 +62,25 @@ files_type(mpd_var_lib_t)
+@@ -7,6 +7,13 @@ policy_module(mpd, 1.0.4)
+
+ ##
+ ##
++## Allow mpd execmem/execstack.
++##
++##
++gen_tunable(mpd_execmem, false)
++
++##
++##
+ ## Determine whether mpd can traverse
+ ## user home directories.
+ ##
+@@ -62,18 +69,25 @@ files_type(mpd_var_lib_t)
type mpd_user_data_t;
userdom_user_home_content(mpd_user_data_t) # customizable
@@ -42247,7 +45761,7 @@ index 7c8afcc..33b18c8 100644
allow mpd_t mpd_data_t:dir manage_dir_perms;
allow mpd_t mpd_data_t:file manage_file_perms;
-@@ -104,13 +111,22 @@ manage_files_pattern(mpd_t, mpd_var_lib_t, mpd_var_lib_t)
+@@ -104,13 +118,22 @@ manage_files_pattern(mpd_t, mpd_var_lib_t, mpd_var_lib_t)
manage_lnk_files_pattern(mpd_t, mpd_var_lib_t, mpd_var_lib_t)
files_var_lib_filetrans(mpd_t, mpd_var_lib_t, dir)
@@ -42271,7 +45785,7 @@ index 7c8afcc..33b18c8 100644
corenet_all_recvfrom_netlabel(mpd_t)
corenet_tcp_sendrecv_generic_if(mpd_t)
corenet_tcp_sendrecv_generic_node(mpd_t)
-@@ -139,9 +155,9 @@ dev_read_sound(mpd_t)
+@@ -139,9 +162,9 @@ dev_read_sound(mpd_t)
dev_write_sound(mpd_t)
dev_read_sysfs(mpd_t)
@@ -42282,12 +45796,16 @@ index 7c8afcc..33b18c8 100644
fs_list_inotifyfs(mpd_t)
fs_rw_anon_inodefs_files(mpd_t)
fs_search_auto_mountpoints(mpd_t)
-@@ -150,15 +166,26 @@ auth_use_nsswitch(mpd_t)
+@@ -150,15 +173,30 @@ auth_use_nsswitch(mpd_t)
logging_send_syslog_msg(mpd_t)
-miscfiles_read_localization(mpd_t)
+userdom_home_reader(mpd_t)
++
++tunable_policy(`mpd_execmem',`
++ allow mpd_t self:process { execstack execmem };
++')
tunable_policy(`mpd_enable_homedirs',`
- userdom_search_user_home_dirs(mpd_t)
@@ -42311,7 +45829,7 @@ index 7c8afcc..33b18c8 100644
')
tunable_policy(`mpd_enable_homedirs && use_samba_home_dirs',`
-@@ -191,7 +218,7 @@ optional_policy(`
+@@ -191,7 +229,7 @@ optional_policy(`
')
optional_policy(`
@@ -42320,7 +45838,7 @@ index 7c8afcc..33b18c8 100644
')
optional_policy(`
-@@ -199,6 +226,16 @@ optional_policy(`
+@@ -199,6 +237,16 @@ optional_policy(`
')
optional_policy(`
@@ -42461,6 +45979,36 @@ index 9aca704..f92829c 100644
allow mplayer_t mplayer_tmpfs_t:file execute;
')
+diff --git a/mrtg.if b/mrtg.if
+index c595094..2346458 100644
+--- a/mrtg.if
++++ b/mrtg.if
+@@ -2,6 +2,25 @@
+
+ ########################################
+ ##
++## Read mrtg lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`mrtg_read_lib_files',`
++ gen_require(`
++ type mrtg_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ read_files_pattern($1, mrtg_var_lib_t, mrtg_var_lib_t)
++')
++
++########################################
++##
+ ## Create and append mrtg log files.
+ ##
+ ##
diff --git a/mrtg.te b/mrtg.te
index c97c177..9411154 100644
--- a/mrtg.te
@@ -42559,7 +46107,7 @@ index f42896c..cb2791a 100644
-/var/spool/mail(/.*)? gen_context(system_u:object_r:mail_spool_t,s0)
+/var/spool/mail(/.*)? gen_context(system_u:object_r:mail_spool_t,s0)
diff --git a/mta.if b/mta.if
-index ed81cac..566684a 100644
+index ed81cac..e968c28 100644
--- a/mta.if
+++ b/mta.if
@@ -1,4 +1,4 @@
@@ -42610,7 +46158,7 @@ index ed81cac..566684a 100644
#
type $1_mail_t, user_mail_domain;
-@@ -43,17 +57,16 @@ template(`mta_base_mail_template',`
+@@ -43,17 +57,18 @@ template(`mta_base_mail_template',`
type $1_mail_tmp_t;
files_tmp_file($1_mail_tmp_t)
@@ -42625,6 +46173,8 @@ index ed81cac..566684a 100644
+ kernel_read_system_state($1_mail_t)
+
++ corenet_all_recvfrom_netlabel($1_mail_t)
++
auth_use_nsswitch($1_mail_t)
+ logging_send_syslog_msg($1_mail_t)
@@ -42632,7 +46182,7 @@ index ed81cac..566684a 100644
optional_policy(`
postfix_domtrans_user_mail_handler($1_mail_t)
')
-@@ -61,61 +74,41 @@ template(`mta_base_mail_template',`
+@@ -61,61 +76,41 @@ template(`mta_base_mail_template',`
########################################
##
@@ -42704,7 +46254,7 @@ index ed81cac..566684a 100644
')
')
-@@ -163,125 +156,23 @@ interface(`mta_agent_executable',`
+@@ -163,125 +158,23 @@ interface(`mta_agent_executable',`
application_executable_file($1)
')
@@ -42837,7 +46387,7 @@ index ed81cac..566684a 100644
')
########################################
-@@ -334,7 +225,6 @@ interface(`mta_sendmail_mailserver',`
+@@ -334,7 +227,6 @@ interface(`mta_sendmail_mailserver',`
')
init_system_domain($1, sendmail_exec_t)
@@ -42845,7 +46395,7 @@ index ed81cac..566684a 100644
typeattribute $1 mailserver_domain;
')
-@@ -374,6 +264,15 @@ interface(`mta_mailserver_delivery',`
+@@ -374,6 +266,15 @@ interface(`mta_mailserver_delivery',`
')
typeattribute $1 mailserver_delivery;
@@ -42861,7 +46411,7 @@ index ed81cac..566684a 100644
')
#######################################
-@@ -394,6 +293,12 @@ interface(`mta_mailserver_user_agent',`
+@@ -394,6 +295,12 @@ interface(`mta_mailserver_user_agent',`
')
typeattribute $1 mta_user_agent;
@@ -42874,7 +46424,7 @@ index ed81cac..566684a 100644
')
########################################
-@@ -408,14 +313,19 @@ interface(`mta_mailserver_user_agent',`
+@@ -408,14 +315,19 @@ interface(`mta_mailserver_user_agent',`
#
interface(`mta_send_mail',`
gen_require(`
@@ -42896,7 +46446,7 @@ index ed81cac..566684a 100644
')
########################################
-@@ -445,18 +355,24 @@ interface(`mta_send_mail',`
+@@ -445,18 +357,24 @@ interface(`mta_send_mail',`
#
interface(`mta_sendmail_domtrans',`
gen_require(`
@@ -42926,7 +46476,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -464,7 +380,6 @@ interface(`mta_sendmail_domtrans',`
+@@ -464,7 +382,6 @@ interface(`mta_sendmail_domtrans',`
##
##
#
@@ -42934,7 +46484,7 @@ index ed81cac..566684a 100644
interface(`mta_signal_system_mail',`
gen_require(`
type system_mail_t;
-@@ -475,7 +390,43 @@ interface(`mta_signal_system_mail',`
+@@ -475,7 +392,43 @@ interface(`mta_signal_system_mail',`
########################################
##
@@ -42979,7 +46529,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -506,13 +457,32 @@ interface(`mta_sendmail_exec',`
+@@ -506,13 +459,32 @@ interface(`mta_sendmail_exec',`
type sendmail_exec_t;
')
@@ -43014,7 +46564,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -528,13 +498,13 @@ interface(`mta_read_config',`
+@@ -528,13 +500,13 @@ interface(`mta_read_config',`
files_search_etc($1)
allow $1 etc_mail_t:dir list_dir_perms;
@@ -43031,7 +46581,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -548,33 +518,31 @@ interface(`mta_write_config',`
+@@ -548,33 +520,31 @@ interface(`mta_write_config',`
type etc_mail_t;
')
@@ -43071,7 +46621,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -582,84 +550,66 @@ interface(`mta_read_aliases',`
+@@ -582,84 +552,66 @@ interface(`mta_read_aliases',`
##
##
#
@@ -43172,7 +46722,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -674,14 +624,13 @@ interface(`mta_rw_aliases',`
+@@ -674,14 +626,13 @@ interface(`mta_rw_aliases',`
')
files_search_etc($1)
@@ -43190,7 +46740,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -697,6 +646,25 @@ interface(`mta_dontaudit_rw_delivery_tcp_sockets',`
+@@ -697,6 +648,25 @@ interface(`mta_dontaudit_rw_delivery_tcp_sockets',`
dontaudit $1 mailserver_delivery:tcp_socket { read write };
')
@@ -43216,7 +46766,7 @@ index ed81cac..566684a 100644
#######################################
##
## Connect to all mail servers over TCP. (Deprecated)
-@@ -713,8 +681,8 @@ interface(`mta_tcp_connect_all_mailservers',`
+@@ -713,8 +683,8 @@ interface(`mta_tcp_connect_all_mailservers',`
#######################################
##
@@ -43227,7 +46777,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -732,7 +700,7 @@ interface(`mta_dontaudit_read_spool_symlinks',`
+@@ -732,7 +702,7 @@ interface(`mta_dontaudit_read_spool_symlinks',`
########################################
##
@@ -43236,7 +46786,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -753,8 +721,8 @@ interface(`mta_getattr_spool',`
+@@ -753,8 +723,8 @@ interface(`mta_getattr_spool',`
########################################
##
@@ -43247,7 +46797,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -775,9 +743,8 @@ interface(`mta_dontaudit_getattr_spool_files',`
+@@ -775,9 +745,8 @@ interface(`mta_dontaudit_getattr_spool_files',`
#######################################
##
@@ -43259,7 +46809,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -811,7 +778,7 @@ interface(`mta_spool_filetrans',`
+@@ -811,7 +780,7 @@ interface(`mta_spool_filetrans',`
#######################################
##
@@ -43268,7 +46818,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -819,10 +786,10 @@ interface(`mta_spool_filetrans',`
+@@ -819,10 +788,10 @@ interface(`mta_spool_filetrans',`
##
##
#
@@ -43283,7 +46833,7 @@ index ed81cac..566684a 100644
files_search_spool($1)
read_files_pattern($1, mail_spool_t, mail_spool_t)
-@@ -830,7 +797,7 @@ interface(`mta_read_spool_files',`
+@@ -830,7 +799,7 @@ interface(`mta_read_spool_files',`
########################################
##
@@ -43292,7 +46842,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -845,13 +812,14 @@ interface(`mta_rw_spool',`
+@@ -845,13 +814,14 @@ interface(`mta_rw_spool',`
files_search_spool($1)
allow $1 mail_spool_t:dir list_dir_perms;
@@ -43310,7 +46860,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -866,13 +834,14 @@ interface(`mta_append_spool',`
+@@ -866,13 +836,14 @@ interface(`mta_append_spool',`
files_search_spool($1)
allow $1 mail_spool_t:dir list_dir_perms;
@@ -43328,7 +46878,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -891,8 +860,7 @@ interface(`mta_delete_spool',`
+@@ -891,8 +862,7 @@ interface(`mta_delete_spool',`
########################################
##
@@ -43338,7 +46888,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -911,45 +879,9 @@ interface(`mta_manage_spool',`
+@@ -911,45 +881,9 @@ interface(`mta_manage_spool',`
manage_lnk_files_pattern($1, mail_spool_t, mail_spool_t)
')
@@ -43385,7 +46935,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -968,7 +900,7 @@ interface(`mta_search_queue',`
+@@ -968,7 +902,7 @@ interface(`mta_search_queue',`
#######################################
##
@@ -43394,7 +46944,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -981,13 +913,13 @@ interface(`mta_list_queue',`
+@@ -981,13 +915,13 @@ interface(`mta_list_queue',`
type mqueue_spool_t;
')
@@ -43410,7 +46960,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -1000,14 +932,14 @@ interface(`mta_read_queue',`
+@@ -1000,14 +934,14 @@ interface(`mta_read_queue',`
type mqueue_spool_t;
')
@@ -43427,7 +46977,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -1027,7 +959,7 @@ interface(`mta_dontaudit_rw_queue',`
+@@ -1027,7 +961,7 @@ interface(`mta_dontaudit_rw_queue',`
########################################
##
## Create, read, write, and delete
@@ -43436,7 +46986,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -1047,6 +979,41 @@ interface(`mta_manage_queue',`
+@@ -1047,6 +981,41 @@ interface(`mta_manage_queue',`
#######################################
##
@@ -43478,7 +47028,7 @@ index ed81cac..566684a 100644
## Read sendmail binary.
##
##
-@@ -1055,6 +1022,7 @@ interface(`mta_manage_queue',`
+@@ -1055,6 +1024,7 @@ interface(`mta_manage_queue',`
##
##
#
@@ -43486,7 +47036,7 @@ index ed81cac..566684a 100644
interface(`mta_read_sendmail_bin',`
gen_require(`
type sendmail_exec_t;
-@@ -1065,8 +1033,8 @@ interface(`mta_read_sendmail_bin',`
+@@ -1065,8 +1035,8 @@ interface(`mta_read_sendmail_bin',`
#######################################
##
@@ -43497,7 +47047,7 @@ index ed81cac..566684a 100644
##
##
##
-@@ -1081,3 +1049,175 @@ interface(`mta_rw_user_mail_stream_sockets',`
+@@ -1081,3 +1051,175 @@ interface(`mta_rw_user_mail_stream_sockets',`
allow $1 user_mail_domain:unix_stream_socket rw_socket_perms;
')
@@ -43666,7 +47216,7 @@ index ed81cac..566684a 100644
+ type etc_mail_t;
+ ')
+
-+ filetrans_pattern($1, etc_mail_t, etc_aliases_t, { dir file })
++ #filetrans_pattern($1, etc_mail_t, etc_aliases_t, { dir file })
+ mta_etc_filetrans_aliases($1, "aliases")
+ mta_etc_filetrans_aliases($1, "aliases.db")
+ mta_etc_filetrans_aliases($1, "aliasesdb-stamp")
@@ -43674,7 +47224,7 @@ index ed81cac..566684a 100644
+ mta_filetrans_admin_home_content($1)
+')
diff --git a/mta.te b/mta.te
-index afd2fad..09ebbbe 100644
+index afd2fad..b995f01 100644
--- a/mta.te
+++ b/mta.te
@@ -1,4 +1,4 @@
@@ -43878,14 +47428,14 @@ index afd2fad..09ebbbe 100644
+
+manage_dirs_pattern(system_mail_t, mail_home_rw_t, mail_home_rw_t)
+manage_files_pattern(system_mail_t, mail_home_rw_t, mail_home_rw_t)
-+
+
+-userdom_use_user_terminals(system_mail_t)
+allow system_mail_t mail_home_t:file manage_file_perms;
+userdom_admin_home_dir_filetrans(system_mail_t, mail_home_t, file)
+
+
+logging_append_all_logs(system_mail_t)
-
--userdom_use_user_terminals(system_mail_t)
++
+logging_send_syslog_msg(system_mail_t)
optional_policy(`
@@ -43942,7 +47492,7 @@ index afd2fad..09ebbbe 100644
courier_manage_spool_dirs(system_mail_t)
courier_manage_spool_files(system_mail_t)
courier_rw_spool_pipes(system_mail_t)
-@@ -245,13 +146,8 @@ optional_policy(`
+@@ -245,14 +146,10 @@ optional_policy(`
')
optional_policy(`
@@ -43952,12 +47502,16 @@ index afd2fad..09ebbbe 100644
-
-optional_policy(`
- fail2ban_dontaudit_rw_stream_sockets(system_mail_t)
- fail2ban_append_log(system_mail_t)
-+ fail2ban_dontaudit_leaks(system_mail_t)
- fail2ban_rw_inherited_tmp_files(system_mail_t)
+- fail2ban_append_log(system_mail_t)
+- fail2ban_rw_inherited_tmp_files(system_mail_t)
++ fail2ban_append_log(user_mail_domain)
++ fail2ban_dontaudit_leaks(user_mail_domain)
++ fail2ban_rw_inherited_tmp_files(mta_user_agent)
++ fail2ban_rw_inherited_tmp_files(user_mail_domain)
')
-@@ -264,10 +160,15 @@ optional_policy(`
+ optional_policy(`
+@@ -264,10 +161,15 @@ optional_policy(`
')
optional_policy(`
@@ -43973,7 +47527,7 @@ index afd2fad..09ebbbe 100644
nagios_read_tmp_files(system_mail_t)
')
-@@ -278,6 +179,15 @@ optional_policy(`
+@@ -278,6 +180,19 @@ optional_policy(`
manage_fifo_files_pattern(system_mail_t, etc_aliases_t, etc_aliases_t)
manage_sock_files_pattern(system_mail_t, etc_aliases_t, etc_aliases_t)
files_etc_filetrans(system_mail_t, etc_aliases_t, { file lnk_file sock_file fifo_file })
@@ -43982,6 +47536,10 @@ index afd2fad..09ebbbe 100644
+')
+
+optional_policy(`
++ postfix_domtrans_postdrop(system_mail_t)
++')
++
++optional_policy(`
+ qmail_domtrans_inject(system_mail_t)
+ qmail_manage_spool_dirs(system_mail_t)
+ qmail_manage_spool_files(system_mail_t)
@@ -43989,7 +47547,7 @@ index afd2fad..09ebbbe 100644
')
optional_policy(`
-@@ -293,42 +203,36 @@ optional_policy(`
+@@ -293,42 +208,36 @@ optional_policy(`
')
optional_policy(`
@@ -44042,7 +47600,7 @@ index afd2fad..09ebbbe 100644
allow mailserver_delivery mail_spool_t:dir list_dir_perms;
create_files_pattern(mailserver_delivery, mail_spool_t, mail_spool_t)
-@@ -337,40 +241,26 @@ append_files_pattern(mailserver_delivery, mail_spool_t, mail_spool_t)
+@@ -337,40 +246,26 @@ append_files_pattern(mailserver_delivery, mail_spool_t, mail_spool_t)
create_lnk_files_pattern(mailserver_delivery, mail_spool_t, mail_spool_t)
read_lnk_files_pattern(mailserver_delivery, mail_spool_t, mail_spool_t)
@@ -44091,7 +47649,18 @@ index afd2fad..09ebbbe 100644
files_search_var_lib(mailserver_delivery)
mailman_domtrans(mailserver_delivery)
-@@ -387,24 +277,173 @@ optional_policy(`
+@@ -378,6 +273,10 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ pcp_read_lib_files(mailserver_delivery)
++')
++
++optional_policy(`
+ postfix_rw_inherited_master_pipes(mailserver_delivery)
+ ')
+
+@@ -387,24 +286,177 @@ optional_policy(`
########################################
#
@@ -44209,6 +47778,9 @@ index afd2fad..09ebbbe 100644
+# Check available space.
+fs_getattr_xattr_fs(user_mail_domain)
+
++mta_filetrans_admin_home_content(user_mail_domain)
++mta_filetrans_home_content(user_mail_domain)
++
+init_dontaudit_rw_utmp(user_mail_domain)
+
+optional_policy(`
@@ -44240,6 +47812,7 @@ index afd2fad..09ebbbe 100644
+
+optional_policy(`
+ openshift_rw_inherited_content(mta_user_agent)
++ openshift_dontaudit_rw_inherited_fifo_files(mta_user_agent)
+')
+
+optional_policy(`
@@ -44564,10 +48137,10 @@ index b744fe3..4c1b6a8 100644
init_labeled_script_domtrans($1, munin_initrc_exec_t)
domain_system_change_exemption($1)
diff --git a/munin.te b/munin.te
-index 97370e4..3549b8f 100644
+index 97370e4..e53abbb 100644
--- a/munin.te
+++ b/munin.te
-@@ -37,15 +37,22 @@ munin_plugin_template(disk)
+@@ -37,44 +37,47 @@ munin_plugin_template(disk)
munin_plugin_template(mail)
munin_plugin_template(selinux)
munin_plugin_template(services)
@@ -44591,7 +48164,14 @@ index 97370e4..3549b8f 100644
allow munin_plugin_domain self:fifo_file rw_fifo_file_perms;
allow munin_plugin_domain munin_t:tcp_socket rw_socket_perms;
-@@ -58,23 +65,17 @@ allow munin_plugin_domain munin_var_lib_t:dir search_dir_perms;
+
+ read_lnk_files_pattern(munin_plugin_domain, munin_etc_t, munin_etc_t)
+
++allow munin_plugin_domain munin_unconfined_plugin_exec_t:file read_file_perms;
++
+ allow munin_plugin_domain munin_exec_t:file read_file_perms;
+
+ allow munin_plugin_domain munin_var_lib_t:dir search_dir_perms;
manage_files_pattern(munin_plugin_domain, munin_plugin_state_t, munin_plugin_state_t)
@@ -44616,7 +48196,7 @@ index 97370e4..3549b8f 100644
optional_policy(`
nscd_use(munin_plugin_domain)
-@@ -114,7 +115,7 @@ manage_dirs_pattern(munin_t, munin_var_lib_t, munin_var_lib_t)
+@@ -114,7 +117,7 @@ manage_dirs_pattern(munin_t, munin_var_lib_t, munin_var_lib_t)
manage_files_pattern(munin_t, munin_var_lib_t, munin_var_lib_t)
manage_lnk_files_pattern(munin_t, munin_var_lib_t, munin_var_lib_t)
@@ -44625,7 +48205,7 @@ index 97370e4..3549b8f 100644
manage_dirs_pattern(munin_t, munin_var_run_t, munin_var_run_t)
manage_files_pattern(munin_t, munin_var_run_t, munin_var_run_t)
-@@ -130,7 +131,6 @@ kernel_read_all_sysctls(munin_t)
+@@ -130,7 +133,6 @@ kernel_read_all_sysctls(munin_t)
corecmd_exec_bin(munin_t)
corecmd_exec_shell(munin_t)
@@ -44633,7 +48213,7 @@ index 97370e4..3549b8f 100644
corenet_all_recvfrom_netlabel(munin_t)
corenet_tcp_sendrecv_generic_if(munin_t)
corenet_tcp_sendrecv_generic_node(munin_t)
-@@ -153,7 +153,6 @@ domain_use_interactive_fds(munin_t)
+@@ -153,7 +155,6 @@ domain_use_interactive_fds(munin_t)
domain_read_all_domains_state(munin_t)
files_read_etc_runtime_files(munin_t)
@@ -44641,7 +48221,7 @@ index 97370e4..3549b8f 100644
files_list_spool(munin_t)
fs_getattr_all_fs(munin_t)
-@@ -165,7 +164,6 @@ logging_send_syslog_msg(munin_t)
+@@ -165,7 +166,6 @@ logging_send_syslog_msg(munin_t)
logging_read_all_logs(munin_t)
miscfiles_read_fonts(munin_t)
@@ -44649,7 +48229,7 @@ index 97370e4..3549b8f 100644
miscfiles_setattr_fonts_cache_dirs(munin_t)
sysnet_exec_ifconfig(munin_t)
-@@ -173,13 +171,6 @@ sysnet_exec_ifconfig(munin_t)
+@@ -173,13 +173,6 @@ sysnet_exec_ifconfig(munin_t)
userdom_dontaudit_use_unpriv_user_fds(munin_t)
userdom_dontaudit_search_user_home_dirs(munin_t)
@@ -44663,7 +48243,7 @@ index 97370e4..3549b8f 100644
optional_policy(`
cron_system_entry(munin_t, munin_exec_t)
-@@ -213,7 +204,6 @@ optional_policy(`
+@@ -213,7 +206,6 @@ optional_policy(`
optional_policy(`
postfix_list_spool(munin_t)
@@ -44671,7 +48251,7 @@ index 97370e4..3549b8f 100644
')
optional_policy(`
-@@ -242,21 +232,23 @@ allow disk_munin_plugin_t self:tcp_socket create_stream_socket_perms;
+@@ -242,21 +234,23 @@ allow disk_munin_plugin_t self:tcp_socket create_stream_socket_perms;
rw_files_pattern(disk_munin_plugin_t, munin_var_lib_t, munin_var_lib_t)
@@ -44699,7 +48279,7 @@ index 97370e4..3549b8f 100644
sysnet_read_config(disk_munin_plugin_t)
-@@ -268,6 +260,10 @@ optional_policy(`
+@@ -268,6 +262,10 @@ optional_policy(`
fstools_exec(disk_munin_plugin_t)
')
@@ -44710,7 +48290,7 @@ index 97370e4..3549b8f 100644
####################################
#
# Mail local policy
-@@ -275,27 +271,36 @@ optional_policy(`
+@@ -275,27 +273,38 @@ optional_policy(`
allow mail_munin_plugin_t self:capability dac_override;
@@ -44719,6 +48299,8 @@ index 97370e4..3549b8f 100644
+
rw_files_pattern(mail_munin_plugin_t, munin_var_lib_t, munin_var_lib_t)
++kernel_read_net_sysctls(mail_munin_plugin_t)
++
dev_read_urand(mail_munin_plugin_t)
logging_read_generic_logs(mail_munin_plugin_t)
@@ -44751,7 +48333,7 @@ index 97370e4..3549b8f 100644
')
optional_policy(`
-@@ -320,6 +325,9 @@ allow services_munin_plugin_t self:tcp_socket create_stream_socket_perms;
+@@ -320,6 +329,9 @@ allow services_munin_plugin_t self:tcp_socket create_stream_socket_perms;
allow services_munin_plugin_t self:udp_socket create_socket_perms;
allow services_munin_plugin_t self:netlink_route_socket r_netlink_socket_perms;
@@ -44761,7 +48343,7 @@ index 97370e4..3549b8f 100644
corenet_sendrecv_all_client_packets(services_munin_plugin_t)
corenet_tcp_connect_all_ports(services_munin_plugin_t)
corenet_tcp_connect_http_port(services_munin_plugin_t)
-@@ -331,7 +339,7 @@ dev_read_rand(services_munin_plugin_t)
+@@ -331,7 +343,7 @@ dev_read_rand(services_munin_plugin_t)
sysnet_read_config(services_munin_plugin_t)
optional_policy(`
@@ -44770,7 +48352,7 @@ index 97370e4..3549b8f 100644
')
optional_policy(`
-@@ -353,7 +361,11 @@ optional_policy(`
+@@ -353,7 +365,11 @@ optional_policy(`
')
optional_policy(`
@@ -44783,7 +48365,7 @@ index 97370e4..3549b8f 100644
')
optional_policy(`
-@@ -385,6 +397,7 @@ read_files_pattern(system_munin_plugin_t, munin_log_t, munin_log_t)
+@@ -385,6 +401,7 @@ read_files_pattern(system_munin_plugin_t, munin_log_t, munin_log_t)
kernel_read_network_state(system_munin_plugin_t)
kernel_read_all_sysctls(system_munin_plugin_t)
@@ -44791,7 +48373,7 @@ index 97370e4..3549b8f 100644
dev_read_sysfs(system_munin_plugin_t)
dev_read_urand(system_munin_plugin_t)
-@@ -413,3 +426,31 @@ optional_policy(`
+@@ -413,3 +430,31 @@ optional_policy(`
optional_policy(`
unconfined_domain(unconfined_munin_plugin_t)
')
@@ -44824,10 +48406,10 @@ index 97370e4..3549b8f 100644
+ apache_search_sys_content(munin_t)
+')
diff --git a/mysql.fc b/mysql.fc
-index c48dc17..43d56e3 100644
+index c48dc17..297f831 100644
--- a/mysql.fc
+++ b/mysql.fc
-@@ -1,11 +1,24 @@
+@@ -1,11 +1,25 @@
-HOME_DIR/\.my\.cnf -- gen_context(system_u:object_r:mysqld_home_t,s0)
-
-/etc/my\.cnf -- gen_context(system_u:object_r:mysqld_etc_t,s0)
@@ -44845,6 +48427,7 @@ index c48dc17..43d56e3 100644
+/root/\.my\.cnf -- gen_context(system_u:object_r:mysqld_home_t, s0)
+
+/usr/lib/systemd/system/mysqld.* -- gen_context(system_u:object_r:mysqld_unit_file_t,s0)
++/usr/lib/systemd/system/mariadb.* -- gen_context(system_u:object_r:mysqld_unit_file_t,s0)
+
+#
+# /etc
@@ -44860,7 +48443,7 @@ index c48dc17..43d56e3 100644
/usr/bin/mysqld_safe -- gen_context(system_u:object_r:mysqld_safe_exec_t,s0)
/usr/bin/mysql_upgrade -- gen_context(system_u:object_r:mysqld_exec_t,s0)
-@@ -13,13 +26,17 @@ HOME_DIR/\.my\.cnf -- gen_context(system_u:object_r:mysqld_home_t,s0)
+@@ -13,13 +27,17 @@ HOME_DIR/\.my\.cnf -- gen_context(system_u:object_r:mysqld_home_t,s0)
/usr/sbin/mysqld(-max)? -- gen_context(system_u:object_r:mysqld_exec_t,s0)
/usr/sbin/mysqlmanager -- gen_context(system_u:object_r:mysqlmanagerd_exec_t,s0)
@@ -45417,7 +49000,7 @@ index 687af38..404ed6d 100644
+ mysql_stream_connect($1)
')
diff --git a/mysql.te b/mysql.te
-index 9f6179e..4383f87 100644
+index 9f6179e..699587e 100644
--- a/mysql.te
+++ b/mysql.te
@@ -1,4 +1,4 @@
@@ -45590,7 +49173,7 @@ index 9f6179e..4383f87 100644
seutil_sigchld_newrole(mysqld_t)
')
-@@ -153,29 +160,24 @@ optional_policy(`
+@@ -153,29 +160,25 @@ optional_policy(`
#######################################
#
@@ -45600,6 +49183,7 @@ index 9f6179e..4383f87 100644
-allow mysqld_safe_t self:capability { chown dac_override fowner kill };
+allow mysqld_safe_t self:capability { chown dac_override fowner kill sys_nice sys_resource };
++dontaudit mysqld_safe_t self:capability sys_ptrace;
allow mysqld_safe_t self:process { setsched getsched setrlimit };
allow mysqld_safe_t self:fifo_file rw_fifo_file_perms;
@@ -45628,7 +49212,7 @@ index 9f6179e..4383f87 100644
kernel_read_system_state(mysqld_safe_t)
kernel_read_kernel_sysctls(mysqld_safe_t)
-@@ -183,21 +185,27 @@ kernel_read_kernel_sysctls(mysqld_safe_t)
+@@ -183,21 +186,29 @@ kernel_read_kernel_sysctls(mysqld_safe_t)
corecmd_exec_bin(mysqld_safe_t)
corecmd_exec_shell(mysqld_safe_t)
@@ -45641,10 +49225,12 @@ index 9f6179e..4383f87 100644
-files_read_usr_files(mysqld_safe_t)
-files_search_pids(mysqld_safe_t)
-files_dontaudit_getattr_all_dirs(mysqld_safe_t)
++files_dontaudit_access_check_root(mysqld_safe_t)
files_dontaudit_search_all_mountpoints(mysqld_safe_t)
+files_dontaudit_getattr_all_dirs(mysqld_safe_t)
-+files_dontaudit_write_root_dirs(mysqld_safe_t)
++files_write_root_dirs(mysqld_safe_t)
++
+logging_log_filetrans(mysqld_safe_t, mysqld_log_t, file)
logging_send_syslog_msg(mysqld_safe_t)
@@ -45662,7 +49248,7 @@ index 9f6179e..4383f87 100644
optional_policy(`
hostname_exec(mysqld_safe_t)
-@@ -205,7 +213,7 @@ optional_policy(`
+@@ -205,7 +216,7 @@ optional_policy(`
########################################
#
@@ -45671,7 +49257,7 @@ index 9f6179e..4383f87 100644
#
allow mysqlmanagerd_t self:capability { dac_override kill };
-@@ -214,11 +222,12 @@ allow mysqlmanagerd_t self:fifo_file rw_fifo_file_perms;
+@@ -214,11 +225,12 @@ allow mysqlmanagerd_t self:fifo_file rw_fifo_file_perms;
allow mysqlmanagerd_t self:tcp_socket create_stream_socket_perms;
allow mysqlmanagerd_t self:unix_stream_socket create_stream_socket_perms;
@@ -45689,7 +49275,7 @@ index 9f6179e..4383f87 100644
domtrans_pattern(mysqlmanagerd_t, mysqld_exec_t, mysqld_t)
-@@ -226,31 +235,20 @@ manage_files_pattern(mysqlmanagerd_t, mysqld_var_run_t, mysqlmanagerd_var_run_t)
+@@ -226,31 +238,20 @@ manage_files_pattern(mysqlmanagerd_t, mysqld_var_run_t, mysqlmanagerd_var_run_t)
manage_sock_files_pattern(mysqlmanagerd_t, mysqld_var_run_t, mysqlmanagerd_var_run_t)
filetrans_pattern(mysqlmanagerd_t, mysqld_var_run_t, mysqlmanagerd_var_run_t, { file sock_file })
@@ -45900,10 +49486,10 @@ index 0000000..171f666
+')
diff --git a/mythtv.te b/mythtv.te
new file mode 100644
-index 0000000..90129ac
+index 0000000..395c2fd
--- /dev/null
+++ b/mythtv.te
-@@ -0,0 +1,41 @@
+@@ -0,0 +1,46 @@
+policy_module(mythtv, 1.0.0)
+
+########################################
@@ -45923,6 +49509,9 @@ index 0000000..90129ac
+#
+# httpd_mythtv_script local policy
+#
++#============= httpd_mythtv_script_t ==============
++allow httpd_mythtv_script_t self:process setpgid;
++dev_list_sysfs(httpd_mythtv_script_t)
+
+manage_files_pattern(httpd_mythtv_script_t, mythtv_var_lib_t, mythtv_var_lib_t)
+manage_dirs_pattern(httpd_mythtv_script_t, mythtv_var_lib_t, mythtv_var_lib_t)
@@ -45938,6 +49527,8 @@ index 0000000..90129ac
+
+fs_read_nfs_files(httpd_mythtv_script_t)
+
++auth_read_passwd(httpd_mythtv_script_t)
++
+miscfiles_read_localization(httpd_mythtv_script_t)
+
+optional_policy(`
@@ -45946,41 +49537,51 @@ index 0000000..90129ac
+ mysql_tcp_connect(httpd_mythtv_script_t)
+')
diff --git a/nagios.fc b/nagios.fc
-index d78dfc3..a00cc2d 100644
+index d78dfc3..1c81436 100644
--- a/nagios.fc
+++ b/nagios.fc
-@@ -1,88 +1,97 @@
+@@ -1,88 +1,109 @@
-/etc/nagios(/.*)? gen_context(system_u:object_r:nagios_etc_t,s0)
-/etc/nagios/nrpe\.cfg -- gen_context(system_u:object_r:nrpe_etc_t,s0)
+/etc/nagios(/.*)? gen_context(system_u:object_r:nagios_etc_t,s0)
++/etc/icinga(/.*)? gen_context(system_u:object_r:nagios_etc_t,s0)
+/etc/nagios/nrpe\.cfg -- gen_context(system_u:object_r:nrpe_etc_t,s0)
+/etc/rc\.d/init\.d/nagios -- gen_context(system_u:object_r:nagios_initrc_exec_t,s0)
+/etc/rc\.d/init\.d/nrpe -- gen_context(system_u:object_r:nagios_initrc_exec_t,s0)
-/etc/rc\.d/init\.d/nagios -- gen_context(system_u:object_r:nagios_initrc_exec_t,s0)
-/etc/rc\.d/init\.d/nrpe -- gen_context(system_u:object_r:nagios_initrc_exec_t,s0)
-+/usr/s?bin/nagios -- gen_context(system_u:object_r:nagios_exec_t,s0)
-+/usr/s?bin/nrpe -- gen_context(system_u:object_r:nrpe_exec_t,s0)
-/usr/bin/nagios -- gen_context(system_u:object_r:nagios_exec_t,s0)
-/usr/bin/nrpe -- gen_context(system_u:object_r:nrpe_exec_t,s0)
-+/usr/lib/cgi-bin/netsaint(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
-+/usr/lib/nagios/cgi(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
++/usr/bin/nagios -- gen_context(system_u:object_r:nagios_exec_t,s0)
++/usr/bin/icinga -- gen_context(system_u:object_r:nagios_exec_t,s0)
++/usr/bin/nrpe -- gen_context(system_u:object_r:nrpe_exec_t,s0)
-/usr/sbin/nagios -- gen_context(system_u:object_r:nagios_exec_t,s0)
-/usr/sbin/nrpe -- gen_context(system_u:object_r:nrpe_exec_t,s0)
-+/var/log/nagios(/.*)? gen_context(system_u:object_r:nagios_log_t,s0)
-+/var/log/netsaint(/.*)? gen_context(system_u:object_r:nagios_log_t,s0)
++/usr/sbin/nagios -- gen_context(system_u:object_r:nagios_exec_t,s0)
++/usr/sbin/icinga -- gen_context(system_u:object_r:nagios_exec_t,s0)
++/usr/sbin/nrpe -- gen_context(system_u:object_r:nrpe_exec_t,s0)
-/usr/lib/cgi-bin/nagios(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
-/usr/lib/cgi-bin/netsaint(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
-+/var/run/nagios.* gen_context(system_u:object_r:nagios_var_run_t,s0)
++/usr/lib/cgi-bin/netsaint(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
++/usr/lib/nagios/cgi(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
++/usr/lib/icinga/cgi(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
-/usr/lib/nagios/cgi(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
-/usr/lib/nagios/cgi-bin(/.*)? gen_context(system_u:object_r:httpd_nagios_script_exec_t,s0)
-+/var/spool/nagios(/.*)? gen_context(system_u:object_r:nagios_spool_t,s0)
++/var/log/nagios(/.*)? gen_context(system_u:object_r:nagios_log_t,s0)
++/var/log/icinga(/.*)? gen_context(system_u:object_r:nagios_log_t,s0)
++/var/log/netsaint(/.*)? gen_context(system_u:object_r:nagios_log_t,s0)
-/usr/lib/nagios/plugins/eventhandlers(/.*) gen_context(system_u:object_r:nagios_eventhandler_plugin_exec_t,s0)
++/var/run/nagios.* gen_context(system_u:object_r:nagios_var_run_t,s0)
++
++/var/spool/nagios(/.*)? gen_context(system_u:object_r:nagios_spool_t,s0)
++/var/spool/icinga(/.*)? gen_context(system_u:object_r:nagios_spool_t,s0)
++
+ifdef(`distro_debian',`
+/usr/sbin/nagios -- gen_context(system_u:object_r:nagios_exec_t,s0)
+')
@@ -46000,9 +49601,9 @@ index d78dfc3..a00cc2d 100644
-/usr/lib/nagios/plugins/check_mailq -- gen_context(system_u:object_r:nagios_mail_plugin_exec_t,s0)
+# mail plugins
+/usr/lib/nagios/plugins/check_mailq -- gen_context(system_u:object_r:nagios_mail_plugin_exec_t,s0)
-+
-+/usr/lib/pnp4nagios(/.*)? gen_context(system_u:object_r:nagios_var_lib_t,s0)
++/usr/lib/pnp4nagios(/.*)? gen_context(system_u:object_r:nagios_var_lib_t,s0)
++
+# system plugins
/usr/lib/nagios/plugins/check_breeze -- gen_context(system_u:object_r:nagios_services_plugin_exec_t,s0)
/usr/lib/nagios/plugins/check_dummy -- gen_context(system_u:object_r:nagios_services_plugin_exec_t,s0)
@@ -46093,10 +49694,11 @@ index d78dfc3..a00cc2d 100644
-/var/run/nagios.* -- gen_context(system_u:object_r:nagios_var_run_t,s0)
-/var/run/nrpe.* -- gen_context(system_u:object_r:nrpe_var_run_t,s0)
--
--/var/spool/nagios(/.*)? gen_context(system_u:object_r:nagios_spool_t,s0)
+# eventhandlers
+/usr/lib/nagios/plugins/eventhandlers(/.*) gen_context(system_u:object_r:nagios_eventhandler_plugin_exec_t,s0)
++/usr/lib/icinga/plugins/eventhandlers(/.*) gen_context(system_u:object_r:nagios_eventhandler_plugin_exec_t,s0)
+
+-/var/spool/nagios(/.*)? gen_context(system_u:object_r:nagios_spool_t,s0)
diff --git a/nagios.if b/nagios.if
index 0641e97..d7d9a79 100644
--- a/nagios.if
@@ -46337,7 +49939,7 @@ index 0641e97..d7d9a79 100644
+ admin_pattern($1, nrpe_etc_t)
')
diff --git a/nagios.te b/nagios.te
-index 44ad3b7..a0488ea 100644
+index 44ad3b7..39bcd98 100644
--- a/nagios.te
+++ b/nagios.te
@@ -27,7 +27,7 @@ type nagios_var_run_t;
@@ -46551,7 +50153,7 @@ index 44ad3b7..a0488ea 100644
kernel_read_kernel_sysctls(nagios_system_plugin_t)
corecmd_exec_bin(nagios_system_plugin_t)
-@@ -420,10 +435,10 @@ dev_read_sysfs(nagios_system_plugin_t)
+@@ -420,14 +435,18 @@ dev_read_sysfs(nagios_system_plugin_t)
domain_read_all_domains_state(nagios_system_plugin_t)
@@ -46564,7 +50166,15 @@ index 44ad3b7..a0488ea 100644
optional_policy(`
init_read_utmp(nagios_system_plugin_t)
')
-@@ -442,11 +457,44 @@ corecmd_exec_shell(nagios_eventhandler_plugin_t)
+
++optional_policy(`
++ mrtg_read_lib_files(nagios_system_plugin_t)
++')
++
+ #######################################
+ #
+ # Event local policy
+@@ -442,11 +461,44 @@ corecmd_exec_shell(nagios_eventhandler_plugin_t)
init_domtrans_script(nagios_eventhandler_plugin_t)
@@ -46675,10 +50285,10 @@ index 0000000..8d7c751
+')
diff --git a/namespace.te b/namespace.te
new file mode 100644
-index 0000000..c674894
+index 0000000..e289f2d
--- /dev/null
+++ b/namespace.te
-@@ -0,0 +1,39 @@
+@@ -0,0 +1,41 @@
+policy_module(namespace,1.0.0)
+
+########################################
@@ -46710,6 +50320,8 @@ index 0000000..c674894
+
+files_polyinstantiate_all(namespace_init_t)
+
++fs_getattr_xattr_fs(namespace_init_t)
++
+auth_use_nsswitch(namespace_init_t)
+
+term_use_console(namespace_init_t)
@@ -46815,10 +50427,10 @@ index 56c0fbd..173a2c0 100644
userdom_dontaudit_use_unpriv_user_fds(nessusd_t)
diff --git a/networkmanager.fc b/networkmanager.fc
-index a1fb3c3..2b818b9 100644
+index a1fb3c3..dfb99d2 100644
--- a/networkmanager.fc
+++ b/networkmanager.fc
-@@ -1,43 +1,45 @@
+@@ -1,43 +1,47 @@
-/etc/rc\.d/init\.d/wicd -- gen_context(system_u:object_r:NetworkManager_initrc_exec_t,s0)
+/etc/rc\.d/init\.d/wicd -- gen_context(system_u:object_r:NetworkManager_initrc_exec_t,s0)
@@ -46847,7 +50459,7 @@ index a1fb3c3..2b818b9 100644
-/sbin/wpa_cli -- gen_context(system_u:object_r:wpa_cli_exec_t,s0)
-/sbin/wpa_supplicant -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
-+/usr/libexec/nm-dispatcher.action -- gen_context(system_u:object_r:NetworkManager_initrc_exec_t,s0)
++/usr/libexec/nm-dispatcher.action -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
-/usr/bin/NetworkManager -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
-/usr/bin/wpa_supplicant -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
@@ -46862,6 +50474,7 @@ index a1fb3c3..2b818b9 100644
/usr/sbin/nm-system-settings -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
-/usr/sbin/wicd -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
-/usr/sbin/wpa_cli -- gen_context(system_u:object_r:wpa_cli_exec_t,s0)
++/usr/bin/teamd -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
+/usr/sbin/wicd -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
+/usr/sbin/wpa_cli -- gen_context(system_u:object_r:wpa_cli_exec_t,s0)
/usr/sbin/wpa_supplicant -- gen_context(system_u:object_r:NetworkManager_exec_t,s0)
@@ -46884,11 +50497,12 @@ index a1fb3c3..2b818b9 100644
/var/run/nm-dns-dnsmasq\.conf -- gen_context(system_u:object_r:NetworkManager_var_run_t,s0)
-/var/run/wpa_supplicant(/.*)? gen_context(system_u:object_r:NetworkManager_var_run_t,s0)
+/var/run/nm-xl2tpd.conf.* -- gen_context(system_u:object_r:NetworkManager_var_run_t,s0)
++/var/run/teamd(/.*)? gen_context(system_u:object_r:NetworkManager_var_run_t,s0)
+/var/run/wicd\.pid -- gen_context(system_u:object_r:NetworkManager_var_run_t,s0)
+/var/run/wpa_supplicant(/.*)? gen_context(system_u:object_r:NetworkManager_var_run_t,s0)
/var/run/wpa_supplicant-global -s gen_context(system_u:object_r:NetworkManager_var_run_t,s0)
diff --git a/networkmanager.if b/networkmanager.if
-index 0e8508c..ee2e3de 100644
+index 0e8508c..9a7332c 100644
--- a/networkmanager.if
+++ b/networkmanager.if
@@ -2,7 +2,7 @@
@@ -46968,28 +50582,10 @@ index 0e8508c..ee2e3de 100644
##
##
##
-@@ -95,8 +98,7 @@ interface(`networkmanager_domtrans',`
+@@ -93,10 +96,27 @@ interface(`networkmanager_domtrans',`
+ domtrans_pattern($1, NetworkManager_exec_t, NetworkManager_t)
+ ')
- ########################################
- ##
--## Execute networkmanager scripts with
--## an automatic domain transition to initrc.
-+## Execute NetworkManager scripts with an automatic domain transition to NetworkManagerrc.
- ##
- ##
- ##
-@@ -104,18 +106,59 @@ interface(`networkmanager_domtrans',`
- ##
- ##
- #
-+interface(`networkmanager_NetworkManagerrc_domtrans',`
-+ gen_require(`
-+ type NetworkManager_NetworkManagerrc_exec_t;
-+ ')
-+
-+ NetworkManager_labeled_script_domtrans($1, NetworkManager_NetworkManagerrc_exec_t)
-+')
-+
+#######################################
+##
+## Execute NetworkManager scripts with an automatic domain transition to initrc.
@@ -47000,7 +50596,7 @@ index 0e8508c..ee2e3de 100644
+##
+##
+#
- interface(`networkmanager_initrc_domtrans',`
++interface(`networkmanager_initrc_domtrans',`
+ gen_require(`
+ type NetworkManager_initrc_exec_t;
+ ')
@@ -47008,16 +50604,19 @@ index 0e8508c..ee2e3de 100644
+ init_labeled_script_domtrans($1, NetworkManager_initrc_exec_t)
+')
+
-+########################################
-+##
+ ########################################
+ ##
+-## Execute networkmanager scripts with
+-## an automatic domain transition to initrc.
+## Execute NetworkManager server in the NetworkManager domain.
-+##
-+##
-+##
-+## Domain allowed to transition.
-+##
-+##
-+#
+ ##
+ ##
+ ##
+@@ -104,18 +124,23 @@ interface(`networkmanager_domtrans',`
+ ##
+ ##
+ #
+-interface(`networkmanager_initrc_domtrans',`
+interface(`networkmanager_systemctl',`
gen_require(`
- type NetworkManager_initrc_exec_t;
@@ -47041,7 +50640,7 @@ index 0e8508c..ee2e3de 100644
##
##
##
-@@ -135,7 +178,29 @@ interface(`networkmanager_dbus_chat',`
+@@ -135,7 +160,29 @@ interface(`networkmanager_dbus_chat',`
########################################
##
@@ -47072,7 +50671,7 @@ index 0e8508c..ee2e3de 100644
##
##
##
-@@ -153,7 +218,7 @@ interface(`networkmanager_signal',`
+@@ -153,7 +200,7 @@ interface(`networkmanager_signal',`
########################################
##
@@ -47081,7 +50680,7 @@ index 0e8508c..ee2e3de 100644
##
##
##
-@@ -171,9 +236,28 @@ interface(`networkmanager_read_lib_files',`
+@@ -171,9 +218,28 @@ interface(`networkmanager_read_lib_files',`
read_files_pattern($1, NetworkManager_var_lib_t, NetworkManager_var_lib_t)
')
@@ -47111,7 +50710,7 @@ index 0e8508c..ee2e3de 100644
##
##
##
-@@ -181,19 +265,18 @@ interface(`networkmanager_read_lib_files',`
+@@ -181,19 +247,18 @@ interface(`networkmanager_read_lib_files',`
##
##
#
@@ -47132,11 +50731,11 @@ index 0e8508c..ee2e3de 100644
########################################
##
-## Read networkmanager pid files.
-+## Read NetworkManager PID files.
++## Manage NetworkManager PID files.
##
##
##
-@@ -201,23 +284,23 @@ interface(`networkmanager_append_log_files',`
+@@ -201,25 +266,44 @@ interface(`networkmanager_append_log_files',`
##
##
#
@@ -47155,17 +50754,37 @@ index 0e8508c..ee2e3de 100644
##
-## All of the rules required to
-## administrate an networkmanager environment.
-+## Execute NetworkManager in the NetworkManager domain, and
-+## allow the specified role the NetworkManager domain.
++## Delete NetworkManager PID files.
##
##
##
--## Domain allowed access.
-+## Domain allowed to transition.
+ ## Domain allowed access.
##
##
++#
++interface(`networkmanager_delete_pid_files',`
++ gen_require(`
++ type NetworkManager_var_run_t;
++ ')
++
++ files_search_pids($1)
++ delete_files_pattern($1, NetworkManager_var_run_t, NetworkManager_var_run_t)
++')
++
++########################################
++##
++## Execute NetworkManager in the NetworkManager domain, and
++## allow the specified role the NetworkManager domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
##
-@@ -227,33 +310,133 @@ interface(`networkmanager_read_pid_files',`
+ ##
+ ## Role allowed access.
+@@ -227,33 +311,152 @@ interface(`networkmanager_read_pid_files',`
##
##
#
@@ -47230,9 +50849,7 @@ index 0e8508c..ee2e3de 100644
+ gen_require(`
+ type NetworkManager_var_lib_t;
+ ')
-
-- files_search_pids($1)
-- admin_pattern($1, NetworkManager_var_run_t)
++
+ manage_files_pattern($1, NetworkManager_var_lib_t, NetworkManager_var_lib_t)
+')
+
@@ -47276,6 +50893,26 @@ index 0e8508c..ee2e3de 100644
+ allow $1 NetworkManager_t:lnk_file read_lnk_file_perms;
+')
+
++#######################################
++##
++## Send to NetworkManager with a unix dgram socket.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`networkmanager_dgram_send',`
++ gen_require(`
++ type NetworkManager_t, NetworkManager_var_run_t;
++ ')
+
+ files_search_pids($1)
+- admin_pattern($1, NetworkManager_var_run_t)
++ dgram_send_pattern($1, NetworkManager_var_run_t, NetworkManager_var_run_t, NetworkManager_t)
++')
++
+########################################
+##
+## Transition to networkmanager named content
@@ -47320,7 +50957,7 @@ index 0e8508c..ee2e3de 100644
+ logging_log_filetrans($1, NetworkManager_var_lib_t, file, "wpa_supplicant.log")
')
diff --git a/networkmanager.te b/networkmanager.te
-index 0b48a30..b5c140b 100644
+index 0b48a30..9e9b2dc 100644
--- a/networkmanager.te
+++ b/networkmanager.te
@@ -1,4 +1,4 @@
@@ -47351,7 +50988,7 @@ index 0b48a30..b5c140b 100644
type NetworkManager_log_t;
logging_log_file(NetworkManager_log_t)
-@@ -39,25 +42,44 @@ init_system_domain(wpa_cli_t, wpa_cli_exec_t)
+@@ -39,25 +42,51 @@ init_system_domain(wpa_cli_t, wpa_cli_exec_t)
# Local policy
#
@@ -47360,13 +50997,17 @@ index 0b48a30..b5c140b 100644
-allow NetworkManager_t self:process { ptrace getcap setcap setpgid getsched setsched signal_perms };
+# networkmanager will ptrace itself if gdb is installed
+# and it receives a unexpected signal (rh bug #204161)
-+allow NetworkManager_t self:capability { fowner chown fsetid kill setgid setuid sys_admin sys_nice dac_override net_admin net_raw net_bind_service ipc_lock };
++allow NetworkManager_t self:capability { fowner chown fsetid kill setgid setuid sys_admin sys_nice dac_override net_admin net_raw net_bind_service ipc_lock sys_chroot };
+dontaudit NetworkManager_t self:capability sys_tty_config;
+ifdef(`hide_broken_symptoms',`
+ # caused by some bogus kernel code
+ dontaudit NetworkManager_t self:capability sys_module;
+')
+allow NetworkManager_t self:process { getcap setcap setpgid getsched setsched signal_perms };
++
++allow NetworkManager_t self:process setfscreate;
++selinux_validate_context(NetworkManager_t)
++
+tunable_policy(`deny_ptrace',`',`
+ allow NetworkManager_t self:capability sys_ptrace;
+ allow NetworkManager_t self:process ptrace;
@@ -47376,7 +51017,7 @@ index 0b48a30..b5c140b 100644
-allow NetworkManager_t self:unix_dgram_socket sendto;
-allow NetworkManager_t self:unix_stream_socket { accept listen };
+allow NetworkManager_t self:unix_dgram_socket { sendto create_socket_perms };
-+allow NetworkManager_t self:unix_stream_socket create_stream_socket_perms;
++allow NetworkManager_t self:unix_stream_socket{ create_stream_socket_perms connectto };
allow NetworkManager_t self:netlink_route_socket create_netlink_socket_perms;
+allow NetworkManager_t self:netlink_xfrm_socket create_netlink_socket_perms;
allow NetworkManager_t self:netlink_socket create_socket_perms;
@@ -47396,16 +51037,19 @@ index 0b48a30..b5c140b 100644
+can_exec(NetworkManager_t, NetworkManager_exec_t)
+#wicd
+can_exec(NetworkManager_t, wpa_cli_exec_t)
-
++
++list_dirs_pattern(NetworkManager_t, NetworkManager_initrc_exec_t, NetworkManager_initrc_exec_t)
++read_files_pattern(NetworkManager_t, NetworkManager_initrc_exec_t, NetworkManager_initrc_exec_t)
++
+list_dirs_pattern(NetworkManager_t, NetworkManager_etc_t, NetworkManager_etc_t)
+read_files_pattern(NetworkManager_t, NetworkManager_etc_t, NetworkManager_etc_t)
+read_lnk_files_pattern(NetworkManager_t, NetworkManager_etc_t, NetworkManager_etc_t)
-+
+
+read_lnk_files_pattern(NetworkManager_t, NetworkManager_etc_rw_t, NetworkManager_etc_rw_t)
manage_dirs_pattern(NetworkManager_t, NetworkManager_etc_rw_t, NetworkManager_etc_rw_t)
manage_files_pattern(NetworkManager_t, NetworkManager_etc_rw_t, NetworkManager_etc_rw_t)
filetrans_pattern(NetworkManager_t, NetworkManager_etc_t, NetworkManager_etc_rw_t, { dir file })
-@@ -68,6 +90,7 @@ create_files_pattern(NetworkManager_t, NetworkManager_log_t, NetworkManager_log_
+@@ -68,6 +97,7 @@ create_files_pattern(NetworkManager_t, NetworkManager_log_t, NetworkManager_log_
setattr_files_pattern(NetworkManager_t, NetworkManager_log_t, NetworkManager_log_t)
logging_log_filetrans(NetworkManager_t, NetworkManager_log_t, file)
@@ -47413,7 +51057,7 @@ index 0b48a30..b5c140b 100644
manage_files_pattern(NetworkManager_t, NetworkManager_tmp_t, NetworkManager_tmp_t)
manage_sock_files_pattern(NetworkManager_t, NetworkManager_tmp_t, NetworkManager_tmp_t)
files_tmp_filetrans(NetworkManager_t, NetworkManager_tmp_t, { sock_file file })
-@@ -81,17 +104,14 @@ manage_files_pattern(NetworkManager_t, NetworkManager_var_run_t, NetworkManager_
+@@ -81,17 +111,14 @@ manage_files_pattern(NetworkManager_t, NetworkManager_var_run_t, NetworkManager_
manage_sock_files_pattern(NetworkManager_t, NetworkManager_var_run_t, NetworkManager_var_run_t)
files_pid_filetrans(NetworkManager_t, NetworkManager_var_run_t, { dir file sock_file })
@@ -47432,7 +51076,7 @@ index 0b48a30..b5c140b 100644
corenet_all_recvfrom_netlabel(NetworkManager_t)
corenet_tcp_sendrecv_generic_if(NetworkManager_t)
corenet_udp_sendrecv_generic_if(NetworkManager_t)
-@@ -102,22 +122,15 @@ corenet_raw_sendrecv_generic_node(NetworkManager_t)
+@@ -102,22 +129,15 @@ corenet_raw_sendrecv_generic_node(NetworkManager_t)
corenet_tcp_sendrecv_all_ports(NetworkManager_t)
corenet_udp_sendrecv_all_ports(NetworkManager_t)
corenet_udp_bind_generic_node(NetworkManager_t)
@@ -47458,7 +51102,7 @@ index 0b48a30..b5c140b 100644
dev_rw_sysfs(NetworkManager_t)
dev_read_rand(NetworkManager_t)
dev_read_urand(NetworkManager_t)
-@@ -125,13 +138,6 @@ dev_dontaudit_getattr_generic_blk_files(NetworkManager_t)
+@@ -125,13 +145,6 @@ dev_dontaudit_getattr_generic_blk_files(NetworkManager_t)
dev_getattr_all_chr_files(NetworkManager_t)
dev_rw_wireless(NetworkManager_t)
@@ -47472,7 +51116,7 @@ index 0b48a30..b5c140b 100644
fs_getattr_all_fs(NetworkManager_t)
fs_search_auto_mountpoints(NetworkManager_t)
fs_list_inotifyfs(NetworkManager_t)
-@@ -140,6 +146,17 @@ mls_file_read_all_levels(NetworkManager_t)
+@@ -140,18 +153,33 @@ mls_file_read_all_levels(NetworkManager_t)
selinux_dontaudit_search_fs(NetworkManager_t)
@@ -47490,7 +51134,11 @@ index 0b48a30..b5c140b 100644
storage_getattr_fixed_disk_dev(NetworkManager_t)
init_read_utmp(NetworkManager_t)
-@@ -148,10 +165,11 @@ init_domtrans_script(NetworkManager_t)
+ init_dontaudit_write_utmp(NetworkManager_t)
+ init_domtrans_script(NetworkManager_t)
++init_signull_script(NetworkManager_t)
++init_signal_script(NetworkManager_t)
++init_sigkill_script(NetworkManager_t)
auth_use_nsswitch(NetworkManager_t)
@@ -47503,7 +51151,7 @@ index 0b48a30..b5c140b 100644
seutil_read_config(NetworkManager_t)
-@@ -166,21 +184,32 @@ sysnet_kill_dhcpc(NetworkManager_t)
+@@ -166,21 +194,32 @@ sysnet_kill_dhcpc(NetworkManager_t)
sysnet_read_dhcpc_state(NetworkManager_t)
sysnet_delete_dhcpc_state(NetworkManager_t)
sysnet_search_dhcp_state(NetworkManager_t)
@@ -47540,7 +51188,7 @@ index 0b48a30..b5c140b 100644
')
optional_policy(`
-@@ -196,10 +225,6 @@ optional_policy(`
+@@ -196,10 +235,6 @@ optional_policy(`
')
optional_policy(`
@@ -47551,7 +51199,7 @@ index 0b48a30..b5c140b 100644
consoletype_exec(NetworkManager_t)
')
-@@ -210,16 +235,11 @@ optional_policy(`
+@@ -210,16 +245,11 @@ optional_policy(`
optional_policy(`
dbus_system_domain(NetworkManager_t, NetworkManager_exec_t)
@@ -47570,7 +51218,7 @@ index 0b48a30..b5c140b 100644
')
')
-@@ -231,18 +251,19 @@ optional_policy(`
+@@ -231,10 +261,11 @@ optional_policy(`
dnsmasq_kill(NetworkManager_t)
dnsmasq_signal(NetworkManager_t)
dnsmasq_signull(NetworkManager_t)
@@ -47579,21 +51227,27 @@ index 0b48a30..b5c140b 100644
optional_policy(`
- gnome_stream_connect_all_gkeyringd(NetworkManager_t)
-+ hal_write_log(NetworkManager_t)
++ fcoe_dgram_send_fcoemon(NetworkManager_t)
')
optional_policy(`
-- hal_write_log(NetworkManager_t)
-+ howl_signal(NetworkManager_t)
+@@ -246,10 +277,26 @@ optional_policy(`
')
optional_policy(`
-- howl_signal(NetworkManager_t)
+ gnome_dontaudit_search_config(NetworkManager_t)
- ')
-
- optional_policy(`
-@@ -250,6 +271,10 @@ optional_policy(`
++')
++
++optional_policy(`
++ iscsid_domtrans(NetworkManager_t)
++')
++
++optional_policy(`
++ iodined_domtrans(NetworkManager_t)
++')
++
++optional_policy(`
+ ipsec_domtrans_mgmt(NetworkManager_t)
ipsec_kill_mgmt(NetworkManager_t)
ipsec_signal_mgmt(NetworkManager_t)
ipsec_signull_mgmt(NetworkManager_t)
@@ -47604,15 +51258,11 @@ index 0b48a30..b5c140b 100644
')
optional_policy(`
-@@ -257,11 +282,10 @@ optional_policy(`
+@@ -257,15 +304,19 @@ optional_policy(`
')
optional_policy(`
- libs_exec_ldconfig(NetworkManager_t)
--')
--
--optional_policy(`
-- modutils_domtrans_insmod(NetworkManager_t)
+ l2tpd_domtrans(NetworkManager_t)
+ l2tpd_sigkill(NetworkManager_t)
+ l2tpd_signal(NetworkManager_t)
@@ -47620,7 +51270,17 @@ index 0b48a30..b5c140b 100644
')
optional_policy(`
-@@ -274,10 +298,17 @@ optional_policy(`
+- modutils_domtrans_insmod(NetworkManager_t)
++ lldpad_dgram_send(NetworkManager_t)
+ ')
+
+ optional_policy(`
+ netutils_exec_ping(NetworkManager_t)
++ netutils_exec(NetworkManager_t)
+ ')
+
+ optional_policy(`
+@@ -274,10 +325,17 @@ optional_policy(`
nscd_signull(NetworkManager_t)
nscd_kill(NetworkManager_t)
nscd_initrc_domtrans(NetworkManager_t)
@@ -47638,7 +51298,7 @@ index 0b48a30..b5c140b 100644
')
optional_policy(`
-@@ -289,6 +320,7 @@ optional_policy(`
+@@ -289,6 +347,7 @@ optional_policy(`
')
optional_policy(`
@@ -47646,7 +51306,7 @@ index 0b48a30..b5c140b 100644
policykit_domtrans_auth(NetworkManager_t)
policykit_read_lib(NetworkManager_t)
policykit_read_reload(NetworkManager_t)
-@@ -296,7 +328,7 @@ optional_policy(`
+@@ -296,7 +355,7 @@ optional_policy(`
')
optional_policy(`
@@ -47655,7 +51315,7 @@ index 0b48a30..b5c140b 100644
')
optional_policy(`
-@@ -307,6 +339,7 @@ optional_policy(`
+@@ -307,6 +366,7 @@ optional_policy(`
ppp_signal(NetworkManager_t)
ppp_signull(NetworkManager_t)
ppp_read_config(NetworkManager_t)
@@ -47663,7 +51323,7 @@ index 0b48a30..b5c140b 100644
')
optional_policy(`
-@@ -320,13 +353,19 @@ optional_policy(`
+@@ -320,13 +380,19 @@ optional_policy(`
')
optional_policy(`
@@ -47672,28 +51332,166 @@ index 0b48a30..b5c140b 100644
+ systemd_write_inhibit_pipes(NetworkManager_t)
+ systemd_read_logind_sessions_files(NetworkManager_t)
+ systemd_dbus_chat_logind(NetworkManager_t)
-+ systemd_hostnamed_read_config(NetworkManager_t)
++ systemd_hostnamed_manage_config(NetworkManager_t)
++')
++
++optional_policy(`
++ ssh_exec(NetworkManager_t)
')
optional_policy(`
- # unconfined_dgram_send(NetworkManager_t)
- unconfined_stream_connect(NetworkManager_t)
-+ ssh_exec(NetworkManager_t)
-+')
-+
-+optional_policy(`
+ udev_exec(NetworkManager_t)
+ udev_read_db(NetworkManager_t)
')
optional_policy(`
-@@ -356,6 +395,4 @@ rw_sock_files_pattern(wpa_cli_t, NetworkManager_var_run_t, NetworkManager_var_ru
+@@ -356,6 +422,4 @@ rw_sock_files_pattern(wpa_cli_t, NetworkManager_var_run_t, NetworkManager_var_ru
init_dontaudit_use_fds(wpa_cli_t)
init_use_script_ptys(wpa_cli_t)
-miscfiles_read_localization(wpa_cli_t)
-
term_dontaudit_use_console(wpa_cli_t)
+diff --git a/ninfod.fc b/ninfod.fc
+new file mode 100644
+index 0000000..cc31b9f
+--- /dev/null
++++ b/ninfod.fc
+@@ -0,0 +1,6 @@
++/usr/lib/systemd/system/ninfod.* -- gen_context(system_u:object_r:ninfod_unit_file_t,s0)
++
++/usr/sbin/ninfod -- gen_context(system_u:object_r:ninfod_exec_t,s0)
++
++/var/run/ninfod.* -- gen_context(system_u:object_r:ninfod_run_t,s0)
++
+diff --git a/ninfod.if b/ninfod.if
+new file mode 100644
+index 0000000..a7f57d9
+--- /dev/null
++++ b/ninfod.if
+@@ -0,0 +1,79 @@
++
++## Respond to IPv6 Node Information Queries
++
++########################################
++##
++## Execute ninfod in the ninfod domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`ninfod_domtrans',`
++ gen_require(`
++ type ninfod_t, ninfod_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, ninfod_exec_t, ninfod_t)
++')
++########################################
++##
++## Execute ninfod server in the ninfod domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`ninfod_systemctl',`
++ gen_require(`
++ type ninfod_t;
++ type ninfod_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 ninfod_unit_file_t:file read_file_perms;
++ allow $1 ninfod_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, ninfod_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an ninfod environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`ninfod_admin',`
++ gen_require(`
++ type ninfod_t;
++ type ninfod_unit_file_t;
++ ')
++
++ allow $1 ninfod_t:process { signal_perms };
++ ps_process_pattern($1, ninfod_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 ninfod_t:process ptrace;
++ ')
++
++ ninfod_systemctl($1)
++ admin_pattern($1, ninfod_unit_file_t)
++ allow $1 ninfod_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/ninfod.te b/ninfod.te
+new file mode 100644
+index 0000000..d75c408
+--- /dev/null
++++ b/ninfod.te
+@@ -0,0 +1,35 @@
++policy_module(ninfod, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type ninfod_t;
++type ninfod_exec_t;
++init_daemon_domain(ninfod_t, ninfod_exec_t)
++
++type ninfod_run_t;
++files_pid_file(ninfod_run_t)
++
++type ninfod_unit_file_t;
++systemd_unit_file(ninfod_unit_file_t)
++
++########################################
++#
++# ninfod local policy
++#
++allow ninfod_t self:capability { net_raw setuid };
++allow ninfod_t self:process setcap;
++allow ninfod_t self:fifo_file rw_fifo_file_perms;
++allow ninfod_t self:rawip_socket { create setopt };
++allow ninfod_t self:unix_stream_socket create_stream_socket_perms;
++
++manage_files_pattern(ninfod_t, ninfod_run_t, ninfod_run_t)
++files_pid_filetrans(ninfod_t,ninfod_run_t, { file })
++
++auth_use_nsswitch(ninfod_t)
++
++logging_send_syslog_msg(ninfod_t)
++
++sysnet_dns_name_resolve(ninfod_t)
diff --git a/nis.fc b/nis.fc
index 8aa1bfa..cd0e015 100644
--- a/nis.fc
@@ -47998,7 +51796,7 @@ index 46e55c3..6e4e061 100644
+ allow $1 nis_unit_file_t:service all_service_perms;
')
diff --git a/nis.te b/nis.te
-index 3e4a31c..eea788e 100644
+index 3e4a31c..6aeb9dd 100644
--- a/nis.te
+++ b/nis.te
@@ -1,12 +1,10 @@
@@ -48169,11 +51967,12 @@ index 3e4a31c..eea788e 100644
dev_read_sysfs(yppasswdd_t)
fs_getattr_all_fs(yppasswdd_t)
-@@ -203,11 +192,19 @@ selinux_get_fs_mount(yppasswdd_t)
+@@ -202,12 +191,20 @@ fs_search_auto_mountpoints(yppasswdd_t)
+ selinux_get_fs_mount(yppasswdd_t)
auth_manage_shadow(yppasswdd_t)
++auth_manage_passwd(yppasswdd_t)
auth_relabel_shadow(yppasswdd_t)
-+auth_read_passwd(yppasswdd_t)
auth_etc_filetrans_shadow(yppasswdd_t)
+corecmd_exec_bin(yppasswdd_t)
@@ -48759,7 +52558,7 @@ index ba64485..429bd79 100644
+
+/usr/lib/systemd/system/nscd\.service -- gen_context(system_u:object_r:nscd_unit_file_t,s0)
diff --git a/nscd.if b/nscd.if
-index 8f2ab09..6ab4ea1 100644
+index 8f2ab09..bc2c7fe 100644
--- a/nscd.if
+++ b/nscd.if
@@ -1,8 +1,8 @@
@@ -48915,7 +52714,7 @@ index 8f2ab09..6ab4ea1 100644
+interface(`nscd_shm_use',`
+ gen_require(`
+ type nscd_t, nscd_var_run_t;
-+ class nscd { getpwd getgrp gethost shmempwd shmemgrp shmemhost };
++ class nscd { getserv getpwd getgrp gethost shmempwd shmemgrp shmemhost shmemserv };
')
+
+ allow $1 nscd_var_run_t:dir list_dir_perms;
@@ -49057,7 +52856,7 @@ index 8f2ab09..6ab4ea1 100644
+ allow $1 nscd_unit_file_t:service all_service_perms;
')
diff --git a/nscd.te b/nscd.te
-index df4c10f..8c09c68 100644
+index df4c10f..2bbc3a6 100644
--- a/nscd.te
+++ b/nscd.te
@@ -1,36 +1,37 @@
@@ -49109,7 +52908,11 @@ index df4c10f..8c09c68 100644
type nscd_log_t;
logging_log_file(nscd_log_t)
-@@ -43,53 +44,54 @@ allow nscd_t self:capability { kill setgid setuid };
+@@ -40,56 +41,58 @@ logging_log_file(nscd_log_t)
+ #
+
+ allow nscd_t self:capability { kill setgid setuid };
++allow nscd_t self:capability2 block_suspend;
dontaudit nscd_t self:capability sys_tty_config;
allow nscd_t self:process { getattr getcap setcap setsched signal_perms };
allow nscd_t self:fifo_file read_fifo_file_perms;
@@ -49182,7 +52985,7 @@ index df4c10f..8c09c68 100644
corenet_rw_tun_tap_dev(nscd_t)
selinux_get_fs_mount(nscd_t)
-@@ -98,16 +100,23 @@ selinux_compute_access_vector(nscd_t)
+@@ -98,16 +101,23 @@ selinux_compute_access_vector(nscd_t)
selinux_compute_create_context(nscd_t)
selinux_compute_relabel_context(nscd_t)
selinux_compute_user_contexts(nscd_t)
@@ -49207,44 +53010,45 @@ index df4c10f..8c09c68 100644
userdom_dontaudit_use_user_terminals(nscd_t)
userdom_dontaudit_use_unpriv_user_fds(nscd_t)
userdom_dontaudit_search_user_home_dirs(nscd_t)
-@@ -121,20 +130,31 @@ optional_policy(`
+@@ -121,13 +131,11 @@ optional_policy(`
')
optional_policy(`
+- tunable_policy(`samba_domain_controller',`
+- samba_append_log(nscd_t)
+- samba_dontaudit_use_fds(nscd_t)
+- ')
+ kerberos_use(nscd_t)
+')
-+
+
+- samba_read_config(nscd_t)
+- samba_read_var_files(nscd_t)
+optional_policy(`
-+ udev_read_db(nscd_t)
-+')
++ nis_authenticate(nscd_t)
+ ')
+
+ optional_policy(`
+@@ -138,3 +146,20 @@ optional_policy(`
+ xen_dontaudit_rw_unix_stream_sockets(nscd_t)
+ xen_append_log(nscd_t)
+ ')
+
+optional_policy(`
-+ xen_dontaudit_rw_unix_stream_sockets(nscd_t)
-+ xen_append_log(nscd_t)
++ tunable_policy(`samba_domain_controller',`
++ samba_append_log(nscd_t)
++ samba_dontaudit_use_fds(nscd_t)
++ ')
+')
+
+optional_policy(`
- tunable_policy(`samba_domain_controller',`
- samba_append_log(nscd_t)
- samba_dontaudit_use_fds(nscd_t)
- ')
--
-- samba_read_config(nscd_t)
-- samba_read_var_files(nscd_t)
- ')
-
- optional_policy(`
-- udev_read_db(nscd_t)
+ samba_read_config(nscd_t)
+ samba_read_var_files(nscd_t)
+ samba_stream_connect_nmbd(nscd_t)
- ')
-
- optional_policy(`
-- xen_dontaudit_rw_unix_stream_sockets(nscd_t)
-- xen_append_log(nscd_t)
++')
++
++optional_policy(`
+ unconfined_dontaudit_rw_packet_sockets(nscd_t)
- ')
++')
diff --git a/nsd.fc b/nsd.fc
index 4f2b1b6..5348e92 100644
--- a/nsd.fc
@@ -49662,7 +53466,7 @@ index 97df768..852d1c6 100644
+ admin_pattern($1, nslcd_var_run_t, nslcd_var_run_t)
')
diff --git a/nslcd.te b/nslcd.te
-index a3e56f0..2c5b389 100644
+index a3e56f0..c37998e 100644
--- a/nslcd.te
+++ b/nslcd.te
@@ -1,4 +1,4 @@
@@ -49682,7 +53486,7 @@ index a3e56f0..2c5b389 100644
-allow nslcd_t self:capability { setgid setuid dac_override };
-allow nslcd_t self:process signal;
-allow nslcd_t self:unix_stream_socket { accept listen };
-+allow nslcd_t self:capability { dac_override setgid setuid sys_nice };
++allow nslcd_t self:capability { chown dac_override setgid setuid sys_nice };
+allow nslcd_t self:process { setsched signal signull };
+allow nslcd_t self:unix_stream_socket create_stream_socket_perms;
@@ -50590,7 +54394,7 @@ index af3c91e..6882a3f 100644
/var/lib/sntp-kod(/.*)? gen_context(system_u:object_r:ntp_drift_t,s0)
diff --git a/ntp.if b/ntp.if
-index b59196f..017b36f 100644
+index b59196f..24f45be 100644
--- a/ntp.if
+++ b/ntp.if
@@ -1,4 +1,4 @@
@@ -50755,7 +54559,7 @@ index b59196f..017b36f 100644
logging_list_logs($1)
admin_pattern($1, ntpd_log_t)
-@@ -164,5 +246,28 @@ interface(`ntp_admin',`
+@@ -164,5 +246,30 @@ interface(`ntp_admin',`
files_list_pids($1)
admin_pattern($1, ntpd_var_run_t)
@@ -50780,13 +54584,15 @@ index b59196f..017b36f 100644
+interface(`ntp_filetrans_named_content',`
+ gen_require(`
+ type ntp_conf_t;
++ type ntp_drift_t;
+ ')
+
+ files_etc_filetrans($1, ntp_conf_t, file, "ntpd.conf")
+ files_etc_filetrans($1, ntp_conf_t, dir, "ntp")
++ files_var_lib_filetrans($1, ntp_drift_t, file, "sntp-kod")
')
diff --git a/ntp.te b/ntp.te
-index b90e343..8369b61 100644
+index b90e343..ae081d4 100644
--- a/ntp.te
+++ b/ntp.te
@@ -18,6 +18,9 @@ role ntpd_roles types ntpd_t;
@@ -50799,7 +54605,15 @@ index b90e343..8369b61 100644
type ntp_conf_t;
files_config_file(ntp_conf_t)
-@@ -60,9 +63,7 @@ read_files_pattern(ntpd_t, ntpd_key_t, ntpd_key_t)
+@@ -53,6 +56,7 @@ allow ntpd_t self:tcp_socket { accept listen };
+
+ manage_dirs_pattern(ntpd_t, ntp_drift_t, ntp_drift_t)
+ manage_files_pattern(ntpd_t, ntp_drift_t, ntp_drift_t)
++files_var_lib_filetrans(ntpd_t, ntp_drift_t, dir, "sntp-kod")
+
+ allow ntpd_t ntp_conf_t:file read_file_perms;
+
+@@ -60,9 +64,7 @@ read_files_pattern(ntpd_t, ntpd_key_t, ntpd_key_t)
read_lnk_files_pattern(ntpd_t, ntpd_key_t, ntpd_key_t)
allow ntpd_t ntpd_log_t:dir setattr_dir_perms;
@@ -50810,7 +54624,7 @@ index b90e343..8369b61 100644
logging_log_filetrans(ntpd_t, ntpd_log_t, { file dir })
manage_dirs_pattern(ntpd_t, ntpd_tmp_t, ntpd_tmp_t)
-@@ -83,21 +84,16 @@ kernel_read_system_state(ntpd_t)
+@@ -83,21 +85,16 @@ kernel_read_system_state(ntpd_t)
kernel_read_network_state(ntpd_t)
kernel_request_load_module(ntpd_t)
@@ -50834,7 +54648,7 @@ index b90e343..8369b61 100644
corecmd_exec_bin(ntpd_t)
corecmd_exec_shell(ntpd_t)
-@@ -110,13 +106,15 @@ domain_use_interactive_fds(ntpd_t)
+@@ -110,13 +107,15 @@ domain_use_interactive_fds(ntpd_t)
domain_dontaudit_list_all_domains_state(ntpd_t)
files_read_etc_runtime_files(ntpd_t)
@@ -50851,7 +54665,7 @@ index b90e343..8369b61 100644
auth_use_nsswitch(ntpd_t)
-@@ -124,8 +122,6 @@ init_exec_script_files(ntpd_t)
+@@ -124,8 +123,6 @@ init_exec_script_files(ntpd_t)
logging_send_syslog_msg(ntpd_t)
@@ -50973,7 +54787,7 @@ index 0d3c270..709dda1 100644
+ ')
')
diff --git a/numad.te b/numad.te
-index f5d145d..97e1148 100644
+index f5d145d..f050103 100644
--- a/numad.te
+++ b/numad.te
@@ -1,4 +1,4 @@
@@ -50982,7 +54796,7 @@ index f5d145d..97e1148 100644
########################################
#
-@@ -8,29 +8,29 @@ policy_module(numad, 1.0.3)
+@@ -8,37 +8,44 @@ policy_module(numad, 1.0.3)
type numad_t;
type numad_exec_t;
init_daemon_domain(numad_t, numad_exec_t)
@@ -51021,15 +54835,17 @@ index f5d145d..97e1148 100644
manage_files_pattern(numad_t, numad_var_run_t, numad_var_run_t)
files_pid_filetrans(numad_t, numad_var_run_t, file)
-@@ -39,6 +39,13 @@ kernel_read_system_state(numad_t)
- dev_read_sysfs(numad_t)
+ kernel_read_system_state(numad_t)
--files_read_etc_files(numad_t)
+-dev_read_sysfs(numad_t)
++dev_rw_sysfs(numad_t)
++
+domain_use_interactive_fds(numad_t)
+domain_read_all_domains_state(numad_t)
+domain_setpriority_all_domains(numad_t)
-+
+
+-files_read_etc_files(numad_t)
+fs_manage_cgroup_dirs(numad_t)
+fs_rw_cgroup_files(numad_t)
@@ -51073,7 +54889,7 @@ index 379af96..41ff159 100644
+/var/www/nut-cgi-bin/upsset\.cgi -- gen_context(system_u:object_r:httpd_nutups_cgi_script_exec_t,s0)
+/var/www/nut-cgi-bin/upsstats\.cgi -- gen_context(system_u:object_r:httpd_nutups_cgi_script_exec_t,s0)
diff --git a/nut.if b/nut.if
-index 57c0161..54bd4d7 100644
+index 57c0161..dae3360 100644
--- a/nut.if
+++ b/nut.if
@@ -1,39 +1,24 @@
@@ -51129,7 +54945,7 @@ index 57c0161..54bd4d7 100644
- files_search_pids($1)
- admin_pattern($1, nut_var_run_t)
-+ ps_process_pattern($1, swift_t)
++ ps_process_pattern($1, nut_t)
')
diff --git a/nut.te b/nut.te
index 0c9deb7..76988d6 100644
@@ -52301,10 +56117,10 @@ index 0000000..a437f80
+files_read_config_files(openshift_domain)
diff --git a/openshift.fc b/openshift.fc
new file mode 100644
-index 0000000..f2d6119
+index 0000000..1d4e039
--- /dev/null
+++ b/openshift.fc
-@@ -0,0 +1,26 @@
+@@ -0,0 +1,28 @@
+/etc/rc\.d/init\.d/libra gen_context(system_u:object_r:openshift_initrc_exec_t,s0)
+/etc/rc\.d/init\.d/mcollective gen_context(system_u:object_r:openshift_initrc_exec_t,s0)
+
@@ -52312,6 +56128,7 @@ index 0000000..f2d6119
+
+/var/lib/stickshift(/.*)? gen_context(system_u:object_r:openshift_var_lib_t,s0)
+/var/lib/stickshift/.*/data(/.*)? gen_context(system_u:object_r:openshift_rw_file_t,s0)
++/var/lib/containers(/.*)? gen_context(system_u:object_r:openshift_var_lib_t,s0)
+/var/lib/openshift(/.*)? gen_context(system_u:object_r:openshift_var_lib_t,s0)
+/var/lib/openshift/.*/data(/.*)? gen_context(system_u:object_r:openshift_rw_file_t,s0)
+
@@ -52320,7 +56137,8 @@ index 0000000..f2d6119
+/var/lib/openshift/.*/\.tmp(/.*)? gen_context(system_u:object_r:openshift_tmp_t,s0)
+/var/lib/openshift/.*/\.sandbox(/.*)? gen_context(system_u:object_r:openshift_tmp_t,s0)
+
-+/var/log/mcollective\.log -- gen_context(system_u:object_r:openshift_log_t,s0)
++/var/log/mcollective\.log.* -- gen_context(system_u:object_r:openshift_log_t,s0)
++/var/log/openshift(/.*)? gen_context(system_u:object_r:openshift_log_t,s0)
+
+/usr/s?bin/(oo|rhc)-cgroup-read -- gen_context(system_u:object_r:openshift_cgroup_read_exec_t,s0)
+
@@ -52333,10 +56151,10 @@ index 0000000..f2d6119
+/var/run/openshift(/.*)? gen_context(system_u:object_r:openshift_var_run_t,s0)
diff --git a/openshift.if b/openshift.if
new file mode 100644
-index 0000000..e03de01
+index 0000000..9451b83
--- /dev/null
+++ b/openshift.if
-@@ -0,0 +1,700 @@
+@@ -0,0 +1,702 @@
+
+## policy for openshift
+
@@ -52958,9 +56776,11 @@ index 0000000..e03de01
+interface(`openshift_dontaudit_rw_inherited_fifo_files',`
+ gen_require(`
+ type openshift_initrc_t;
++ type openshift_t;
+ ')
+
+ dontaudit $1 openshift_initrc_t:fifo_file rw_inherited_fifo_file_perms;
++ dontaudit $1 openshift_t:fifo_file rw_inherited_fifo_file_perms;
+')
+
+########################################
@@ -53039,16 +56859,24 @@ index 0000000..e03de01
+')
diff --git a/openshift.te b/openshift.te
new file mode 100644
-index 0000000..cd25e8e
+index 0000000..ebd0c68
--- /dev/null
+++ b/openshift.te
-@@ -0,0 +1,555 @@
+@@ -0,0 +1,575 @@
+policy_module(openshift,1.0.0)
+
+gen_require(`
+ role system_r;
+')
+
++##
++##
++## Allow openshift to access nfs file systems without labels
++##
++##
++gen_tunable(openshift_use_nfs, false)
++
++
+########################################
+#
+# Declarations
@@ -53185,6 +57013,8 @@ index 0000000..cd25e8e
+allow openshift_domain self:shm create_shm_perms;
+allow openshift_domain self:sem create_sem_perms;
+dontaudit openshift_domain self:dir write;
++dontaudit openshift_domain self:rawip_socket create_socket_perms;
++
+dontaudit openshift_t self:unix_stream_socket recvfrom;
+dontaudit openshift_domain self:netlink_tcpdiag_socket create;
+dontaudit openshift_domain self:netlink_route_socket nlmsg_write;
@@ -53533,6 +57363,7 @@ index 0000000..cd25e8e
+allow openshift_cron_t self:unix_dgram_socket create_socket_perms;
+allow openshift_cron_t self:netlink_route_socket rw_netlink_socket_perms;
+
++append_files_pattern(openshift_cron_t, openshift_log_t, openshift_log_t)
+manage_dirs_pattern(openshift_cron_t, openshift_cron_tmp_t, openshift_cron_tmp_t)
+manage_fifo_files_pattern(openshift_cron_t, openshift_cron_tmp_t, openshift_cron_tmp_t)
+manage_files_pattern(openshift_cron_t, openshift_cron_tmp_t, openshift_cron_tmp_t)
@@ -53547,6 +57378,8 @@ index 0000000..cd25e8e
+kernel_read_network_state(openshift_cron_t)
+kernel_read_system_state(openshift_cron_t)
+
++files_dontaudit_search_all_mountpoints(openshift_cron_t)
++
+corecmd_exec_bin(openshift_cron_t)
+corecmd_exec_shell(openshift_cron_t)
+
@@ -53598,6 +57431,305 @@ index 0000000..cd25e8e
+ ssh_dontaudit_read_server_keys(openshift_cron_t)
+')
+
++tunable_policy(`openshift_use_nfs',`
++ fs_list_auto_mountpoints(openshift_domain)
++ fs_manage_nfs_dirs(openshift_domain)
++ fs_manage_nfs_files(openshift_domain)
++ fs_manage_nfs_symlinks(openshift_domain)
++ fs_exec_nfs_files(openshift_domain)
++')
+diff --git a/opensm.fc b/opensm.fc
+new file mode 100644
+index 0000000..51650fa
+--- /dev/null
++++ b/opensm.fc
+@@ -0,0 +1,7 @@
++/usr/lib/systemd/system/opensm.* -- gen_context(system_u:object_r:opensm_unit_file_t,s0)
++
++/usr/libexec/opensm-launch -- gen_context(system_u:object_r:opensm_exec_t,s0)
++
++/var/cache/opensm(/.*)? gen_context(system_u:object_r:opensm_cache_t,s0)
++
++/var/log/opensm\.log.* -- gen_context(system_u:object_r:opensm_log_t,s0)
+diff --git a/opensm.if b/opensm.if
+new file mode 100644
+index 0000000..776fda7
+--- /dev/null
++++ b/opensm.if
+@@ -0,0 +1,223 @@
++
++## Opensm is an InfiniBand compliant Subnet Manager and Administration, and runs on top of OpenIB
++
++########################################
++##
++## Execute opensm in the opensm domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`opensm_domtrans',`
++ gen_require(`
++ type opensm_t, opensm_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, opensm_exec_t, opensm_t)
++')
++
++########################################
++##
++## Search opensm cache directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`opensm_search_cache',`
++ gen_require(`
++ type opensm_cache_t;
++ ')
++
++ allow $1 opensm_cache_t:dir search_dir_perms;
++ files_search_var($1)
++')
++
++########################################
++##
++## Read opensm cache files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`opensm_read_cache_files',`
++ gen_require(`
++ type opensm_cache_t;
++ ')
++
++ files_search_var($1)
++ read_files_pattern($1, opensm_cache_t, opensm_cache_t)
++')
++
++########################################
++##
++## Create, read, write, and delete
++## opensm cache files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`opensm_manage_cache_files',`
++ gen_require(`
++ type opensm_cache_t;
++ ')
++
++ files_search_var($1)
++ manage_files_pattern($1, opensm_cache_t, opensm_cache_t)
++')
++
++########################################
++##
++## Manage opensm cache dirs.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`opensm_manage_cache_dirs',`
++ gen_require(`
++ type opensm_cache_t;
++ ')
++
++ files_search_var($1)
++ manage_dirs_pattern($1, opensm_cache_t, opensm_cache_t)
++')
++
++########################################
++##
++## Read opensm's log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`opensm_read_log',`
++ gen_require(`
++ type opensm_log_t;
++ ')
++
++ logging_search_logs($1)
++ read_files_pattern($1, opensm_log_t, opensm_log_t)
++')
++
++########################################
++##
++## Append to opensm log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`opensm_append_log',`
++ gen_require(`
++ type opensm_log_t;
++ ')
++
++ logging_search_logs($1)
++ append_files_pattern($1, opensm_log_t, opensm_log_t)
++')
++
++########################################
++##
++## Manage opensm log files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`opensm_manage_log',`
++ gen_require(`
++ type opensm_log_t;
++ ')
++
++ logging_search_logs($1)
++ manage_dirs_pattern($1, opensm_log_t, opensm_log_t)
++ manage_files_pattern($1, opensm_log_t, opensm_log_t)
++ manage_lnk_files_pattern($1, opensm_log_t, opensm_log_t)
++')
++########################################
++##
++## Execute opensm server in the opensm domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`opensm_systemctl',`
++ gen_require(`
++ type opensm_t;
++ type opensm_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 opensm_unit_file_t:file read_file_perms;
++ allow $1 opensm_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, opensm_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an opensm environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`opensm_admin',`
++ gen_require(`
++ type opensm_t;
++ type opensm_cache_t;
++ type opensm_log_t;
++ type opensm_unit_file_t;
++ ')
++
++ allow $1 opensm_t:process { signal_perms };
++ ps_process_pattern($1, opensm_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 opensm_t:process ptrace;
++ ')
++
++ files_search_var($1)
++ admin_pattern($1, opensm_cache_t)
++
++ logging_search_logs($1)
++ admin_pattern($1, opensm_log_t)
++
++ opensm_systemctl($1)
++ admin_pattern($1, opensm_unit_file_t)
++ allow $1 opensm_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/opensm.te b/opensm.te
+new file mode 100644
+index 0000000..a055461
+--- /dev/null
++++ b/opensm.te
+@@ -0,0 +1,44 @@
++policy_module(opensm, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type opensm_t;
++type opensm_exec_t;
++init_daemon_domain(opensm_t, opensm_exec_t)
++
++type opensm_cache_t;
++files_type(opensm_cache_t)
++
++type opensm_log_t;
++logging_log_file(opensm_log_t)
++
++type opensm_unit_file_t;
++systemd_unit_file(opensm_unit_file_t)
++
++########################################
++#
++# opensm local policy
++#
++allow opensm_t self:process { signal fork };
++allow opensm_t self:fifo_file rw_fifo_file_perms;
++allow opensm_t self:unix_stream_socket create_stream_socket_perms;
++
++manage_dirs_pattern(opensm_t, opensm_cache_t, opensm_cache_t)
++manage_files_pattern(opensm_t, opensm_cache_t, opensm_cache_t)
++files_var_filetrans(opensm_t, opensm_cache_t, { dir file })
++
++manage_files_pattern(opensm_t, opensm_log_t, opensm_log_t)
++logging_log_filetrans(opensm_t, opensm_log_t, file )
++
++kernel_read_system_state(opensm_t)
++
++auth_read_passwd(opensm_t)
++
++corecmd_exec_bin(opensm_t)
++
++dev_read_sysfs(opensm_t)
++
++logging_send_syslog_msg(opensm_t)
diff --git a/openvpn.fc b/openvpn.fc
index 300213f..4cdfe09 100644
--- a/openvpn.fc
@@ -54137,7 +58269,7 @@ index 9b15730..eedd136 100644
+ ')
')
diff --git a/openvswitch.te b/openvswitch.te
-index 508fedf..a499612 100644
+index 508fedf..452ad74 100644
--- a/openvswitch.te
+++ b/openvswitch.te
@@ -1,4 +1,4 @@
@@ -54160,7 +58292,7 @@ index 508fedf..a499612 100644
type openvswitch_var_lib_t;
files_type(openvswitch_var_lib_t)
-@@ -21,23 +18,33 @@ files_type(openvswitch_var_lib_t)
+@@ -21,23 +18,34 @@ files_type(openvswitch_var_lib_t)
type openvswitch_log_t;
logging_log_file(openvswitch_log_t)
@@ -54188,6 +58320,7 @@ index 508fedf..a499612 100644
-allow openvswitch_t self:rawip_socket create_socket_perms;
-allow openvswitch_t self:unix_stream_socket { accept connectto listen };
+allow openvswitch_t self:unix_stream_socket { create_stream_socket_perms connectto };
++allow openvswitch_t self:tcp_socket create_stream_socket_perms;
+allow openvswitch_t self:netlink_socket create_socket_perms;
+allow openvswitch_t self:netlink_route_socket rw_netlink_socket_perms;
@@ -54202,7 +58335,7 @@ index 508fedf..a499612 100644
manage_dirs_pattern(openvswitch_t, openvswitch_var_lib_t, openvswitch_var_lib_t)
manage_files_pattern(openvswitch_t, openvswitch_var_lib_t, openvswitch_var_lib_t)
-@@ -45,45 +52,53 @@ manage_lnk_files_pattern(openvswitch_t, openvswitch_var_lib_t, openvswitch_var_l
+@@ -45,45 +53,57 @@ manage_lnk_files_pattern(openvswitch_t, openvswitch_var_lib_t, openvswitch_var_l
files_var_lib_filetrans(openvswitch_t, openvswitch_var_lib_t, { dir file lnk_file })
manage_dirs_pattern(openvswitch_t, openvswitch_log_t, openvswitch_log_t)
@@ -54228,12 +58361,15 @@ index 508fedf..a499612 100644
-
kernel_read_network_state(openvswitch_t)
kernel_read_system_state(openvswitch_t)
--
++kernel_request_load_module(openvswitch_t)
+
-corenet_all_recvfrom_unlabeled(openvswitch_t)
-corenet_all_recvfrom_netlabel(openvswitch_t)
-corenet_raw_sendrecv_generic_if(openvswitch_t)
-corenet_raw_sendrecv_generic_node(openvswitch_t)
-+kernel_request_load_module(openvswitch_t)
++corenet_tcp_connect_openflow_port(openvswitch_t)
++corenet_tcp_bind_generic_node(openvswitch_t)
++corenet_tcp_bind_openvswitch_port(openvswitch_t)
corecmd_exec_bin(openvswitch_t)
+corecmd_exec_shell(openvswitch_t)
@@ -54268,6 +58404,152 @@ index 508fedf..a499612 100644
+optional_policy(`
+ plymouthd_exec_plymouth(openvswitch_t)
+')
+diff --git a/openwsman.fc b/openwsman.fc
+new file mode 100644
+index 0000000..00d0643
+--- /dev/null
++++ b/openwsman.fc
+@@ -0,0 +1,7 @@
++/usr/lib/systemd/system/openwsmand.* -- gen_context(system_u:object_r:openwsman_unit_file_t,s0)
++
++/usr/sbin/openwsmand -- gen_context(system_u:object_r:openwsman_exec_t,s0)
++
++/var/log/wsmand.* -- gen_context(system_u:object_r:openwsman_log_t,s0)
++
++/var/run/wsmand.* -- gen_context(system_u:object_r:openwsman_run_t,s0)
+diff --git a/openwsman.if b/openwsman.if
+new file mode 100644
+index 0000000..42ed4ba
+--- /dev/null
++++ b/openwsman.if
+@@ -0,0 +1,78 @@
++## WS-Management Server
++
++########################################
++##
++## Execute openwsman in the openwsman domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`openwsman_domtrans',`
++ gen_require(`
++ type openwsman_t, openwsman_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, openwsman_exec_t, openwsman_t)
++')
++########################################
++##
++## Execute openwsman server in the openwsman domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`openwsman_systemctl',`
++ gen_require(`
++ type openwsman_t;
++ type openwsman_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 openwsman_unit_file_t:file read_file_perms;
++ allow $1 openwsman_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, openwsman_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an openwsman environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`openwsman_admin',`
++ gen_require(`
++ type openwsman_t;
++ type openwsman_unit_file_t;
++ ')
++
++ allow $1 openwsman_t:process { signal_perms };
++ ps_process_pattern($1, openwsman_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 openwsman_t:process ptrace;
++ ')
++
++ openwsman_systemctl($1)
++ admin_pattern($1, openwsman_unit_file_t)
++ allow $1 openwsman_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/openwsman.te b/openwsman.te
+new file mode 100644
+index 0000000..49dc5ef
+--- /dev/null
++++ b/openwsman.te
+@@ -0,0 +1,43 @@
++policy_module(openwsman, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type openwsman_t;
++type openwsman_exec_t;
++init_daemon_domain(openwsman_t, openwsman_exec_t)
++
++type openwsman_log_t;
++logging_log_file(openwsman_log_t)
++
++type openwsman_run_t;
++files_pid_file(openwsman_run_t)
++
++type openwsman_unit_file_t;
++systemd_unit_file(openwsman_unit_file_t)
++
++########################################
++#
++# openwsman local policy
++#
++allow openwsman_t self:process { fork };
++allow openwsman_t self:fifo_file rw_fifo_file_perms;
++allow openwsman_t self:unix_stream_socket create_stream_socket_perms;
++allow openwsman_t self:tcp_socket { create_socket_perms listen };
++
++manage_files_pattern(openwsman_t, openwsman_log_t, openwsman_log_t)
++logging_log_filetrans(openwsman_t, openwsman_log_t, { file })
++
++manage_files_pattern(openwsman_t, openwsman_run_t, openwsman_run_t)
++files_pid_filetrans(openwsman_t, openwsman_run_t, { file })
++
++auth_use_nsswitch(openwsman_t)
++
++corenet_tcp_bind_vnc_port(openwsman_t)
++
++dev_read_urand(openwsman_t)
++
++logging_send_syslog_msg(openwsman_t)
++
diff --git a/oracleasm.fc b/oracleasm.fc
new file mode 100644
index 0000000..80fb8c3
@@ -54399,6 +58681,241 @@ index 0000000..0493b99
+optional_policy(`
+ modutils_domtrans_insmod(oracleasm_t)
+')
+diff --git a/osad.fc b/osad.fc
+new file mode 100644
+index 0000000..1e1eceb
+--- /dev/null
++++ b/osad.fc
+@@ -0,0 +1,7 @@
++/etc/rc\.d/init\.d/osad -- gen_context(system_u:object_r:osad_initrc_exec_t,s0)
++
++/usr/sbin/osad -- gen_context(system_u:object_r:osad_exec_t,s0)
++
++/var/log/osad -- gen_context(system_u:object_r:osad_log_t,s0)
++
++/var/run/osad.* -- gen_context(system_u:object_r:osad_var_run_t,s0)
+diff --git a/osad.if b/osad.if
+new file mode 100644
+index 0000000..05648bd
+--- /dev/null
++++ b/osad.if
+@@ -0,0 +1,165 @@
++
++## Client-side service written in Python that responds to pings and runs rhn_check when told to by osa-dispatcher.
++
++########################################
++##
++## Execute osad in the osad domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`osad_domtrans',`
++ gen_require(`
++ type osad_t, osad_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, osad_exec_t, osad_t)
++')
++
++########################################
++##
++## Execute osad server in the osad domain.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`osad_initrc_domtrans',`
++ gen_require(`
++ type osad_initrc_exec_t;
++ ')
++
++ init_labeled_script_domtrans($1, osad_initrc_exec_t)
++')
++########################################
++##
++## Read osad's log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`osad_read_log',`
++ gen_require(`
++ type osad_log_t;
++ ')
++
++ logging_search_logs($1)
++ read_files_pattern($1, osad_log_t, osad_log_t)
++')
++
++########################################
++##
++## Append to osad log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`osad_append_log',`
++ gen_require(`
++ type osad_log_t;
++ ')
++
++ logging_search_logs($1)
++ append_files_pattern($1, osad_log_t, osad_log_t)
++')
++
++########################################
++##
++## Manage osad log files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`osad_manage_log',`
++ gen_require(`
++ type osad_log_t;
++ ')
++
++ logging_search_logs($1)
++ manage_dirs_pattern($1, osad_log_t, osad_log_t)
++ manage_files_pattern($1, osad_log_t, osad_log_t)
++ manage_lnk_files_pattern($1, osad_log_t, osad_log_t)
++')
++########################################
++##
++## Read osad PID files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`osad_read_pid_files',`
++ gen_require(`
++ type osad_var_run_t;
++ ')
++
++ files_search_pids($1)
++ read_files_pattern($1, osad_var_run_t, osad_var_run_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an osad environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++##
++## Role allowed access.
++##
++##
++##
++#
++interface(`osad_admin',`
++ gen_require(`
++ type osad_t;
++ type osad_initrc_exec_t;
++ type osad_log_t;
++ type osad_var_run_t;
++ ')
++
++ allow $1 osad_t:process { signal_perms };
++ ps_process_pattern($1, osad_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 osad_t:process ptrace;
++ ')
++
++ osad_initrc_domtrans($1)
++ domain_system_change_exemption($1)
++ role_transition $2 osad_initrc_exec_t system_r;
++ allow $2 system_r;
++
++ logging_search_logs($1)
++ admin_pattern($1, osad_log_t)
++
++ files_search_pids($1)
++ admin_pattern($1, osad_var_run_t)
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/osad.te b/osad.te
+new file mode 100644
+index 0000000..a40fcc3
+--- /dev/null
++++ b/osad.te
+@@ -0,0 +1,45 @@
++policy_module(osad, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type osad_t;
++type osad_exec_t;
++init_daemon_domain(osad_t, osad_exec_t)
++
++type osad_initrc_exec_t;
++init_script_file(osad_initrc_exec_t)
++
++type osad_log_t;
++logging_log_file(osad_log_t)
++
++type osad_var_run_t;
++files_pid_file(osad_var_run_t)
++
++########################################
++#
++# osad local policy
++#
++allow osad_t self:process setpgid;
++
++manage_files_pattern(osad_t, osad_log_t, osad_log_t)
++logging_log_filetrans(osad_t, osad_log_t, { file })
++
++manage_files_pattern(osad_t, osad_var_run_t, osad_var_run_t)
++files_pid_filetrans(osad_t, osad_var_run_t, { file})
++
++kernel_read_system_state(osad_t)
++
++auth_read_passwd(osad_t)
++
++dev_read_urand(osad_t)
++
++optional_policy(`
++ gnome_dontaudit_search_config(osad_t)
++')
++
++optional_policy(`
++ rhnsd_manage_config(osad_t)
++')
diff --git a/pacemaker.fc b/pacemaker.fc
index 2f0ad56..d4da0b8 100644
--- a/pacemaker.fc
@@ -55108,6 +59625,468 @@ index 3ad10b5..49baca5 100644
seutil_sigchld_newrole(cardmgr_t)
')
+diff --git a/pcp.fc b/pcp.fc
+new file mode 100644
+index 0000000..9b8cb6b
+--- /dev/null
++++ b/pcp.fc
+@@ -0,0 +1,28 @@
++/etc/rc\.d/init\.d/pmcd -- gen_context(system_u:object_r:pcp_pmcd_initrc_exec_t,s0)
++/etc/rc\.d/init\.d/pmlogger -- gen_context(system_u:object_r:pcp_pmlogger_initrc_exec_t,s0)
++/etc/rc\.d/init\.d/pmproxy -- gen_context(system_u:object_r:pcp_pmproxy_initrc_exec_t,s0)
++/etc/rc\.d/init\.d/pmwebd -- gen_context(system_u:object_r:pcp_pmwebd_initrc_exec_t,s0)
++/etc/rc\.d/init\.d/pmie -- gen_context(system_u:object_r:pcp_pmie_initrc_exec_t,s0)
++/etc/rc\.d/init\.d/pmmgr -- gen_context(system_u:object_r:pcp_pmmgr_initrc_exec_t,s0)
++
++/usr/bin/pmie -- gen_context(system_u:object_r:pcp_pmie_exec_t,s0)
++/usr/bin/pmcd -- gen_context(system_u:object_r:pcp_pmcd_exec_t,s0)
++/usr/bin/pmlogger -- gen_context(system_u:object_r:pcp_pmlogger_exec_t,s0)
++/usr/bin/pmproxy -- gen_context(system_u:object_r:pcp_pmproxy_exec_t,s0)
++/usr/bin/pmwebd -- gen_context(system_u:object_r:pcp_pmwebd_exec_t,s0)
++/usr/bin/pmmgr -- gen_context(system_u:object_r:pcp_pmmgr_exec_t,s0)
++
++
++/usr/libexec/pcp/bin/pmcd -- gen_context(system_u:object_r:pcp_pmcd_exec_t,s0)
++/usr/libexec/pcp/bin/pmlogger -- gen_context(system_u:object_r:pcp_pmlogger_exec_t,s0)
++/usr/libexec/pcp/bin/pmproxy -- gen_context(system_u:object_r:pcp_pmproxy_exec_t,s0)
++/usr/libexec/pcp/bin/pmwebd -- gen_context(system_u:object_r:pcp_pmwebd_exec_t,s0)
++/usr/libexec/pcp/bin/pmie -- gen_context(system_u:object_r:pcp_pmie_exec_t,s0)
++/usr/libexec/pcp/bin/pmmgr -- gen_context(system_u:object_r:pcp_pmmgr_exec_t,s0)
++
++/var/lib/pcp(/.*)? gen_context(system_u:object_r:pcp_var_lib_t,s0)
++
++/var/log/pcp(/.*)? gen_context(system_u:object_r:pcp_log_t,s0)
++
++/var/run/pcp(/.*)? gen_context(system_u:object_r:pcp_var_run_t,s0)
++/var/run/pmcd\.socket -- gen_context(system_u:object_r:pcp_var_run_t,s0)
+diff --git a/pcp.if b/pcp.if
+new file mode 100644
+index 0000000..ba24b40
+--- /dev/null
++++ b/pcp.if
+@@ -0,0 +1,139 @@
++## The pcp command summarizes the status of a Performance Co-Pilot (PCP) installation
++
++######################################
++##
++## Creates types and rules for a basic
++## pcp daemon domain.
++##
++##
++##
++## Prefix for the domain.
++##
++##
++#
++template(`pcp_domain_template',`
++ gen_require(`
++ attribute pcp_domain;
++ ')
++
++ type pcp_$1_t, pcp_domain;
++ type pcp_$1_exec_t;
++ init_daemon_domain(pcp_$1_t, pcp_$1_exec_t)
++
++ type pcp_$1_initrc_exec_t;
++ init_script_file(pcp_$1_initrc_exec_t)
++
++')
++
++######################################
++##
++## Allow domain to read pcp lib files
++##
++##
++##
++## Prefix for the domain.
++##
++##
++#
++interface(`pcp_read_lib_files',`
++ gen_require(`
++ type pcp_var_lib_t;
++ ')
++ libs_search_lib($1)
++ read_files_pattern($1,pcp_var_lib_t,pcp_var_lib_t)
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an pcp environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`pcp_admin',`
++ gen_require(`
++ type pcp_pmcd_t;
++ type pcp_pmlogger_t;
++ type pcp_pmproxy_t;
++ type pcp_pmwebd_t;
++ type pcp_pmie_t;
++ type pcp_pmmgr_t;
++ type pcp_var_run_t;
++ ')
++
++ allow $1 pcp_pmcd_t:process signal_perms;
++ ps_process_pattern($1, pcp_pmcd_t)
++
++ allow $1 pcp_pmlogger_t:process signal_perms;
++ ps_process_pattern($1, pcp_pmlogger_t)
++
++ allow $1 pcp_pmproxy_t:process signal_perms;
++ ps_process_pattern($1, pcp_pmproxy_t)
++
++ allow $1 pcp_pmwebd_t:process signal_perms;
++ ps_process_pattern($1, pcp_pmwebd_t)
++
++ allow $1 pcp_pmie_t:process signal_perms;
++ ps_process_pattern($1, pcp_pmie_t)
++
++ allow $1 pcp_pmmgr_t:process signal_perms;
++ ps_process_pattern($1, pcp_pmmgr_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 pcp_pmcd_t:process ptrace;
++ allow $1 pcp_pmlogger_t:process ptrace;
++ allow $1 pcp_pmproxy_t:process ptrace;
++ allow $1 pcp_pmwebd_t:process ptrace;
++ allow $1 pcp_pmie_t:process ptrace;
++ allow $1 pcp_pmmgr_t:process ptrace;
++ ')
++
++ files_search_pids($1)
++ admin_pattern($1, pcp_var_run_t)
++')
++
++########################################
++##
++## Allow the specified domain to execute pcp_pmie
++## in the caller domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`pcp_pmie_exec',`
++ gen_require(`
++ type pcp_pmie_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ can_exec($1, pcp_pmie_exec_t)
++')
++
++########################################
++##
++## Allow the specified domain to execute pcp_pmlogger
++## in the caller domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`pcp_pmlogger_exec',`
++ gen_require(`
++ type pcp_pmlogger_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ can_exec($1, pcp_pmlogger_exec_t)
++')
++
+diff --git a/pcp.te b/pcp.te
+new file mode 100644
+index 0000000..b756da3
+--- /dev/null
++++ b/pcp.te
+@@ -0,0 +1,277 @@
++policy_module(pcp, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++##
++##
++## Allow pcp to bind to all unreserved_ports
++##
++##
++gen_tunable(pcp_bind_all_unreserved_ports, false)
++
++attribute pcp_domain;
++
++pcp_domain_template(pmcd)
++pcp_domain_template(pmlogger)
++pcp_domain_template(pmproxy)
++pcp_domain_template(pmwebd)
++pcp_domain_template(pmie)
++pcp_domain_template(pmmgr)
++
++type pcp_log_t;
++logging_log_file(pcp_log_t)
++
++type pcp_var_lib_t;
++files_type(pcp_var_lib_t)
++
++type pcp_var_run_t;
++files_pid_file(pcp_var_run_t)
++
++type pcp_tmp_t;
++files_tmp_file(pcp_tmp_t)
++
++type pcp_tmpfs_t;
++files_tmpfs_file(pcp_tmpfs_t)
++
++########################################
++#
++# pcp domain local policy
++#
++
++allow pcp_domain self:capability { setuid setgid dac_override };
++allow pcp_domain self:process signal_perms;
++allow pcp_domain self:tcp_socket create_stream_socket_perms;
++allow pcp_domain self:udp_socket create_socket_perms;
++
++manage_dirs_pattern(pcp_domain, pcp_log_t, pcp_log_t)
++manage_files_pattern(pcp_domain, pcp_log_t, pcp_log_t)
++logging_log_filetrans(pcp_domain, pcp_log_t, { dir })
++
++manage_dirs_pattern(pcp_domain, pcp_var_lib_t, pcp_var_lib_t)
++manage_files_pattern(pcp_domain, pcp_var_lib_t, pcp_var_lib_t)
++exec_files_pattern(pcp_domain, pcp_var_lib_t, pcp_var_lib_t)
++files_var_lib_filetrans(pcp_domain, pcp_var_lib_t, { dir})
++
++manage_dirs_pattern(pcp_domain, pcp_var_run_t, pcp_var_run_t)
++manage_files_pattern(pcp_domain, pcp_var_run_t, pcp_var_run_t)
++manage_sock_files_pattern(pcp_domain, pcp_var_run_t, pcp_var_run_t)
++files_pid_filetrans(pcp_domain, pcp_var_run_t, { dir file sock_file })
++
++manage_dirs_pattern(pcp_domain, pcp_tmp_t, pcp_tmp_t)
++manage_files_pattern(pcp_domain, pcp_tmp_t, pcp_tmp_t)
++manage_sock_files_pattern(pcp_domain, pcp_tmp_t, pcp_tmp_t)
++files_tmp_filetrans(pcp_domain, pcp_tmp_t, { dir file sock_file })
++
++manage_dirs_pattern(pcp_domain, pcp_tmpfs_t, pcp_tmpfs_t)
++manage_files_pattern(pcp_domain, pcp_tmpfs_t, pcp_tmpfs_t)
++fs_tmpfs_filetrans(pcp_domain, pcp_tmpfs_t, { dir file })
++
++dev_read_urand(pcp_domain)
++
++files_read_etc_files(pcp_domain)
++
++fs_getattr_all_fs(pcp_domain)
++
++auth_read_passwd(pcp_domain)
++
++miscfiles_read_generic_certs(pcp_domain)
++
++sysnet_read_config(pcp_domain)
++
++########################################
++#
++# pcp_pmcd local policy
++#
++
++allow pcp_pmcd_t self:process { setsched };
++allow pcp_pmcd_t self:netlink_route_socket create_socket_perms;
++allow pcp_pmcd_t self:unix_dgram_socket create_socket_perms;
++
++auth_use_nsswitch(pcp_pmcd_t)
++
++kernel_get_sysvipc_info(pcp_pmcd_t)
++kernel_read_network_state(pcp_pmcd_t)
++kernel_read_system_state(pcp_pmcd_t)
++kernel_read_state(pcp_pmcd_t)
++kernel_read_fs_sysctls(pcp_pmcd_t)
++kernel_read_rpc_sysctls(pcp_pmcd_t)
++kernel_read_debugfs(pcp_pmcd_t)
++
++corecmd_exec_bin(pcp_pmcd_t)
++
++corenet_tcp_bind_amqp_port(pcp_pmcd_t)
++corenet_tcp_connect_amqp_port(pcp_pmcd_t)
++corenet_tcp_connect_http_port(pcp_pmcd_t)
++corenet_tcp_connect_all_ephemeral_ports(pcp_pmcd_t)
++
++domain_read_all_domains_state(pcp_pmcd_t)
++domain_getattr_all_domains(pcp_pmcd_t)
++
++dev_getattr_all_blk_files(pcp_pmcd_t)
++dev_getattr_all_chr_files(pcp_pmcd_t)
++dev_read_sysfs(pcp_pmcd_t)
++dev_read_urand(pcp_pmcd_t)
++
++fs_getattr_all_fs(pcp_pmcd_t)
++fs_getattr_all_dirs(pcp_pmcd_t)
++fs_list_cgroup_dirs(pcp_pmcd_t)
++fs_read_cgroup_files(pcp_pmcd_t)
++
++hostname_exec(pcp_pmcd_t)
++
++init_read_utmp(pcp_pmcd_t)
++
++logging_send_syslog_msg(pcp_pmcd_t)
++
++sendmail_read_log(pcp_pmcd_t)
++
++storage_getattr_fixed_disk_dev(pcp_pmcd_t)
++
++userdom_read_user_tmp_files(pcp_pmcd_t)
++
++tunable_policy(`pcp_bind_all_unreserved_ports',`
++ corenet_sendrecv_all_server_packets(pcp_pmcd_t)
++ corenet_tcp_bind_all_unreserved_ports(pcp_pmcd_t)
++')
++
++optional_policy(`
++ dbus_system_bus_client(pcp_pmcd_t)
++
++ optional_policy(`
++ avahi_dbus_chat(pcp_pmcd_t)
++ ')
++')
++
++optional_policy(`
++ unconfined_domain(pcp_pmcd_t)
++')
++
++optional_policy(`
++ rpm_read_db(pcp_pmcd_t)
++')
++
++optional_policy(`
++ rpcbind_stream_connect(pcp_pmcd_t)
++')
++
++optional_policy(`
++ pcp_pmie_exec(pcp_pmcd_t)
++')
++
++optional_policy(`
++ mta_read_config(pcp_pmcd_t)
++')
++
++########################################
++#
++# pcp_pmproxy local policy
++#
++
++allow pcp_pmproxy_t self:process setsched;
++allow pcp_pmproxy_t self:netlink_route_socket create_socket_perms;
++allow pcp_pmproxy_t self:unix_dgram_socket create_socket_perms;
++
++auth_use_nsswitch(pcp_pmproxy_t)
++
++logging_send_syslog_msg(pcp_pmproxy_t)
++
++optional_policy(`
++ unconfined_domain(pcp_pmproxy_t)
++')
++
++########################################
++#
++# pcp_pmwebd local policy
++#
++
++corenet_tcp_bind_generic_node(pcp_pmwebd_t)
++
++optional_policy(`
++ unconfined_domain(pcp_pmwebd_t)
++')
++
++########################################
++#
++# pcp_pmmgr local policy
++#
++
++allow pcp_pmmgr_t self:process { setpgid };
++allow pcp_pmmgr_t self:unix_dgram_socket create_socket_perms;
++allow pcp_pmmgr_t pcp_pmcd_t:unix_stream_socket connectto;
++
++kernel_read_system_state(pcp_pmmgr_t)
++
++auth_use_nsswitch(pcp_pmmgr_t)
++
++corenet_udp_bind_dey_sapi_port(pcp_pmmgr_t)
++
++corenet_tcp_bind_commplex_link_port(pcp_pmmgr_t)
++corenet_tcp_bind_dey_sapi_port(pcp_pmmgr_t)
++
++corenet_tcp_connect_all_ephemeral_ports(pcp_pmmgr_t)
++
++corecmd_exec_bin(pcp_pmmgr_t)
++
++logging_send_syslog_msg(pcp_pmmgr_t)
++
++optional_policy(`
++ pcp_pmie_exec(pcp_pmmgr_t)
++ pcp_pmlogger_exec(pcp_pmmgr_t)
++')
++
++optional_policy(`
++ unconfined_domain(pcp_pmmgr_t)
++')
++
++########################################
++#
++# pcp_pmie local policy
++#
++
++allow pcp_pmie_t self:netlink_route_socket { create_socket_perms nlmsg_read };
++allow pcp_pmie_t self:unix_dgram_socket { create_socket_perms sendto };
++
++allow pcp_pmie_t pcp_pmcd_t:unix_stream_socket connectto;
++
++kernel_read_system_state(pcp_pmie_t)
++
++corecmd_exec_bin(pcp_pmie_t)
++
++corenet_tcp_connect_all_ephemeral_ports(pcp_pmie_t)
++
++logging_send_syslog_msg(pcp_pmie_t)
++
++userdom_read_user_tmp_files(pcp_pmie_t)
++
++optional_policy(`
++ unconfined_domain(pcp_pmie_t)
++')
++
++########################################
++#
++# pcp_pmlogger local policy
++#
++
++allow pcp_pmlogger_t self:process setpgid;
++allow pcp_pmlogger_t self:netlink_route_socket {create_socket_perms nlmsg_read };
++
++allow pcp_pmlogger_t pcp_pmcd_t:unix_stream_socket connectto;
++
++corenet_tcp_bind_generic_node(pcp_pmlogger_t)
++corenet_tcp_bind_dey_sapi_port(pcp_pmlogger_t)
++corenet_tcp_bind_commplex_link_port(pcp_pmlogger_t)
++corenet_tcp_bind_amqp_port(pcp_pmlogger_t)
++
++corenet_tcp_connect_all_ephemeral_ports(pcp_pmlogger_t)
++
++tunable_policy(`pcp_bind_all_unreserved_ports',`
++ corenet_sendrecv_all_server_packets(pcp_pmlogger_t)
++ corenet_tcp_bind_all_unreserved_ports(pcp_pmlogger_t)
++')
++
++optional_policy(`
++ unconfined_domain(pcp_pmlogger_t)
++')
diff --git a/pcscd.if b/pcscd.if
index 43d50f9..7f77d32 100644
--- a/pcscd.if
@@ -55122,12 +60101,15 @@ index 43d50f9..7f77d32 100644
########################################
diff --git a/pcscd.te b/pcscd.te
-index 96db654..ff3aadd 100644
+index 96db654..a958595 100644
--- a/pcscd.te
+++ b/pcscd.te
-@@ -24,8 +24,9 @@ init_daemon_run_dir(pcscd_var_run_t, "pcscd")
+@@ -22,10 +22,11 @@ init_daemon_run_dir(pcscd_var_run_t, "pcscd")
+ #
+
allow pcscd_t self:capability { dac_override dac_read_search fsetid };
- allow pcscd_t self:process signal;
+-allow pcscd_t self:process signal;
++allow pcscd_t self:process { signal signull };
allow pcscd_t self:fifo_file rw_fifo_file_perms;
-allow pcscd_t self:unix_stream_socket { accept listen };
-allow pcscd_t self:tcp_socket { accept listen };
@@ -55145,7 +60127,14 @@ index 96db654..ff3aadd 100644
corenet_all_recvfrom_netlabel(pcscd_t)
corenet_tcp_sendrecv_generic_if(pcscd_t)
corenet_tcp_sendrecv_generic_node(pcscd_t)
-@@ -50,7 +50,6 @@ dev_rw_smartcard(pcscd_t)
+@@ -45,12 +45,13 @@ corenet_sendrecv_http_client_packets(pcscd_t)
+ corenet_tcp_connect_http_port(pcscd_t)
+ corenet_tcp_sendrecv_http_port(pcscd_t)
+
++domain_read_all_domains_state(pcscd_t)
++
+ dev_rw_generic_usb_dev(pcscd_t)
+ dev_rw_smartcard(pcscd_t)
dev_rw_usbfs(pcscd_t)
dev_read_sysfs(pcscd_t)
@@ -55153,7 +60142,7 @@ index 96db654..ff3aadd 100644
files_read_etc_runtime_files(pcscd_t)
term_use_unallocated_ttys(pcscd_t)
-@@ -60,8 +59,6 @@ locallogin_use_fds(pcscd_t)
+@@ -60,16 +61,22 @@ locallogin_use_fds(pcscd_t)
logging_send_syslog_msg(pcscd_t)
@@ -55161,8 +60150,24 @@ index 96db654..ff3aadd 100644
-
sysnet_dns_name_resolve(pcscd_t)
++userdom_read_all_users_state(pcscd_t)
++
optional_policy(`
-@@ -85,3 +82,7 @@ optional_policy(`
+ dbus_system_bus_client(pcscd_t)
+
+ optional_policy(`
+ hal_dbus_chat(pcscd_t)
+ ')
++
++ optional_policy(`
++ policykit_dbus_chat(pcscd_t)
++ policykit_dbus_chat_auth(pcscd_t)
++ ')
++
+ ')
+
+ optional_policy(`
+@@ -85,3 +92,7 @@ optional_policy(`
optional_policy(`
udev_read_db(pcscd_t)
')
@@ -55171,10 +60176,10 @@ index 96db654..ff3aadd 100644
+ virt_rw_svirt_dev(pcscd_t)
+')
diff --git a/pegasus.fc b/pegasus.fc
-index dfd46e4..31122bd 100644
+index dfd46e4..d40433a 100644
--- a/pegasus.fc
+++ b/pegasus.fc
-@@ -1,15 +1,26 @@
+@@ -1,15 +1,32 @@
-/etc/Pegasus(/.*)? gen_context(system_u:object_r:pegasus_conf_t,s0)
+
+/etc/Pegasus(/.*)? gen_context(system_u:object_r:pegasus_conf_t,s0)
@@ -55198,17 +60203,23 @@ index dfd46e4..31122bd 100644
+/var/lib/openlmi-storage(/.*)? gen_context(system_u:object_r:pegasus_openlmi_storage_lib_t,s0)
-/usr/share/Pegasus/mof(/.*)?/.*\.mof gen_context(system_u:object_r:pegasus_mof_t,s0)
-+#openlmi agents
++/var/run/openlmi-storage(/.*)? gen_context(system_u:object_r:pegasus_openlmi_storage_var_run_t,s0)
++
+/usr/libexec/pegasus/cmpiLMI_Account-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_account_exec_t,s0)
-+/usr/libexec/pegasus/cmpiLMI_Fan-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_system_exec_t,s0)
++
+/usr/libexec/pegasus/cmpiLMI_LogicalFile-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_logicalfile_exec_t,s0)
++
++/usr/libexec/pegasus/cmpiLMI_Fan-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_system_exec_t,s0)
+/usr/libexec/pegasus/cmpiLMI_Networking-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_system_exec_t,s0)
+/usr/libexec/pegasus/cmpiLMI_PowerManagement-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_system_exec_t,s0)
++
+/usr/libexec/pegasus/cmpiLMI_Realmd-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_services_exec_t,s0)
-+/usr/libexec/pegasus/cmpiLMI_Service-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_admin_exec_t,s0)
+
++/usr/libexec/pegasus/cmpiLMI_Service-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_admin_exec_t,s0)
++/usr/libexec/pegasus/cmpiLMI_Journald-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_admin_exec_t,s0)
+
+/usr/libexec/pegasus/pycmpiLMI_Storage-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_storage_exec_t,s0)
++/usr/libexec/pegasus/cmpiLMI_Hardware-cimprovagt -- gen_context(system_u:object_r:pegasus_openlmi_storage_exec_t,s0)
diff --git a/pegasus.if b/pegasus.if
index d2fc677..ded726f 100644
--- a/pegasus.if
@@ -55310,7 +60321,7 @@ index d2fc677..ded726f 100644
')
+
diff --git a/pegasus.te b/pegasus.te
-index 7bcf327..22a5b66 100644
+index 7bcf327..6c3afa0 100644
--- a/pegasus.te
+++ b/pegasus.te
@@ -1,17 +1,16 @@
@@ -55334,13 +60345,14 @@ index 7bcf327..22a5b66 100644
type pegasus_cache_t;
files_type(pegasus_cache_t)
-@@ -30,20 +29,269 @@ files_type(pegasus_mof_t)
+@@ -30,20 +29,319 @@ files_type(pegasus_mof_t)
type pegasus_var_run_t;
files_pid_file(pegasus_var_run_t)
+# pegasus openlmi providers
+pegasus_openlmi_domain_template(admin)
+typealias pegasus_openlmi_admin_t alias pegasus_openlmi_service_t;
++typealias pegasus_openlmi_admin_exec_t alias pegasus_openlmi_service_exec_t;
+
+pegasus_openlmi_domain_template(account)
+domain_obj_id_change_exemption(pegasus_openlmi_account_t)
@@ -55356,6 +60368,9 @@ index 7bcf327..22a5b66 100644
+type pegasus_openlmi_storage_lib_t;
+files_type(pegasus_openlmi_storage_lib_t)
+
++type pegasus_openlmi_storage_var_run_t;
++files_pid_file(pegasus_openlmi_storage_var_run_t)
++
+pegasus_openlmi_domain_template(system)
+typealias pegasus_openlmi_system_t alias pegasus_openlmi_networking_t;
+pegasus_openlmi_domain_template(unconfined)
@@ -55480,7 +60495,8 @@ index 7bcf327..22a5b66 100644
+# pegasus openlmi system (networking) local policy
+#
+
-+allow pegasus_openlmi_system_t self:capability { net_admin };
++allow pegasus_openlmi_system_t self:capability { net_admin sys_boot };
++allow pegasus_openlmi_system_t self:process signal_perms;
+
+allow pegasus_openlmi_system_t self:netlink_route_socket r_netlink_socket_perms;
+
@@ -55489,6 +60505,11 @@ index 7bcf327..22a5b66 100644
+dev_rw_sysfs(pegasus_openlmi_system_t)
+dev_read_urand(pegasus_openlmi_system_t)
+
++init_read_utmp(pegasus_openlmi_system_t)
++
++systemd_config_power_services(pegasus_openlmi_system_t)
++systemd_dbus_chat_logind(pegasus_openlmi_system_t)
++
+optional_policy(`
+ dbus_system_bus_client(pegasus_openlmi_system_t)
+')
@@ -55502,9 +60523,12 @@ index 7bcf327..22a5b66 100644
+# pegasus openlmi service local policy
+#
+
++init_manage_transient_unit(pegasus_openlmi_admin_t)
+init_disable_services(pegasus_openlmi_admin_t)
+init_enable_services(pegasus_openlmi_admin_t)
+init_reload_services(pegasus_openlmi_admin_t)
++init_status(pegasus_openlmi_admin_t)
++init_reboot(pegasus_openlmi_admin_t)
+init_exec(pegasus_openlmi_admin_t)
+
+systemd_config_all_services(pegasus_openlmi_admin_t)
@@ -55515,6 +60539,14 @@ index 7bcf327..22a5b66 100644
+
+optional_policy(`
+ dbus_system_bus_client(pegasus_openlmi_admin_t)
++
++ optional_policy(`
++ init_dbus_chat(pegasus_openlmi_admin_t)
++ ')
++')
++
++optional_policy(`
++ sssd_stream_connect(pegasus_openlmi_admin_t)
+')
+
+######################################
@@ -55522,7 +60554,10 @@ index 7bcf327..22a5b66 100644
+# pegasus openlmi storage local policy
+#
+
-+allow pegasus_openlmi_storage_t self:capability { sys_admin sys_rawio };
++allow pegasus_openlmi_storage_t self:capability { sys_admin sys_rawio sys_resource ipc_lock };
++allow pegasus_openlmi_storage_t self:process setrlimit;
++
++allow pegasus_openlmi_storage_t self:netlink_route_socket r_netlink_socket_perms;
+
+manage_files_pattern(pegasus_openlmi_storage_t, pegasus_openlmi_storage_lib_t, pegasus_openlmi_storage_lib_t)
+manage_dirs_pattern(pegasus_openlmi_storage_t, pegasus_openlmi_storage_lib_t, pegasus_openlmi_storage_lib_t)
@@ -55532,9 +60567,16 @@ index 7bcf327..22a5b66 100644
+manage_dirs_pattern(pegasus_openlmi_storage_t, pegasus_openlmi_storage_tmp_t, pegasus_openlmi_storage_tmp_t)
+files_tmp_filetrans(pegasus_openlmi_storage_tmp_t, pegasus_openlmi_storage_tmp_t, { file dir})
+
++manage_files_pattern(pegasus_openlmi_storage_t, pegasus_openlmi_storage_var_run_t, pegasus_openlmi_storage_var_run_t)
++manage_dirs_pattern(pegasus_openlmi_storage_t, pegasus_openlmi_storage_var_run_t, pegasus_openlmi_storage_var_run_t)
++files_pid_filetrans(pegasus_openlmi_storage_t, pegasus_openlmi_storage_var_run_t, dir, "openlmi-storage")
++
+kernel_read_all_sysctls(pegasus_openlmi_storage_t)
++kernel_read_network_state(pegasus_openlmi_storage_t)
+kernel_get_sysvipc_info(pegasus_openlmi_storage_t)
++kernel_request_load_module(pegasus_openlmi_storage_t)
+
++dev_read_raw_memory(pegasus_openlmi_storage_t)
+dev_read_rand(pegasus_openlmi_storage_t)
+dev_read_urand(pegasus_openlmi_storage_t)
+
@@ -55545,9 +60587,13 @@ index 7bcf327..22a5b66 100644
+
+seutil_read_file_contexts(pegasus_openlmi_storage_t)
+
++storage_raw_read_removable_device(pegasus_openlmi_storage_t)
++storage_raw_write_removable_device(pegasus_openlmi_storage_t)
+storage_raw_read_fixed_disk(pegasus_openlmi_storage_t)
+storage_raw_write_fixed_disk(pegasus_openlmi_storage_t)
+
++files_read_kernel_modules(pegasus_openlmi_storage_t)
++
+fs_getattr_all_fs(pegasus_openlmi_storage_t)
+
+modutils_domtrans_insmod(pegasus_openlmi_storage_t)
@@ -55555,6 +60601,10 @@ index 7bcf327..22a5b66 100644
+udev_domtrans(pegasus_openlmi_storage_t)
+udev_read_pid_files(pegasus_openlmi_storage_t)
+
++init_read_state(pegasus_openlmi_storage_t)
++
++miscfiles_read_hwdata(pegasus_openlmi_storage_t)
++
+optional_policy(`
+ dmidecode_domtrans(pegasus_openlmi_storage_t)
+')
@@ -55564,7 +60614,18 @@ index 7bcf327..22a5b66 100644
+')
+
+optional_policy(`
++ iscsi_manage_lock(pegasus_openlmi_storage_t)
++ iscsi_read_lib_files(pegasus_openlmi_storage_t)
++')
++
++optional_policy(`
++ libs_exec_ldconfig(pegasus_openlmi_storage_t)
++')
++
++optional_policy(`
+ lvm_domtrans(pegasus_openlmi_storage_t)
++ lvm_read_metadata(pegasus_openlmi_storage_t)
++ lvm_write_metadata(pegasus_openlmi_storage_t)
+')
+
+optional_policy(`
@@ -55609,7 +60670,7 @@ index 7bcf327..22a5b66 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 +302,22 @@ files_var_filetrans(pegasus_t, pegasus_cache_t, { dir file lnk_file })
+@@ -54,22 +352,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)
@@ -55640,7 +60701,7 @@ index 7bcf327..22a5b66 100644
kernel_read_network_state(pegasus_t)
kernel_read_kernel_sysctls(pegasus_t)
-@@ -80,27 +328,21 @@ kernel_read_net_sysctls(pegasus_t)
+@@ -80,27 +378,21 @@ kernel_read_net_sysctls(pegasus_t)
kernel_read_xen_state(pegasus_t)
kernel_write_xen_state(pegasus_t)
@@ -55673,7 +60734,7 @@ index 7bcf327..22a5b66 100644
corecmd_exec_bin(pegasus_t)
corecmd_exec_shell(pegasus_t)
-@@ -114,6 +356,7 @@ files_getattr_all_dirs(pegasus_t)
+@@ -114,9 +406,11 @@ files_getattr_all_dirs(pegasus_t)
auth_use_nsswitch(pegasus_t)
auth_domtrans_chk_passwd(pegasus_t)
@@ -55681,7 +60742,11 @@ index 7bcf327..22a5b66 100644
domain_use_interactive_fds(pegasus_t)
domain_read_all_domains_state(pegasus_t)
-@@ -128,18 +371,25 @@ init_stream_connect_script(pegasus_t)
++domain_named_filetrans(pegasus_t)
+
+ files_list_var_lib(pegasus_t)
+ files_read_var_lib_files(pegasus_t)
+@@ -128,18 +422,29 @@ init_stream_connect_script(pegasus_t)
logging_send_audit_msgs(pegasus_t)
logging_send_syslog_msg(pegasus_t)
@@ -55697,12 +60762,16 @@ index 7bcf327..22a5b66 100644
optional_policy(`
- dbus_system_bus_client(pegasus_t)
- dbus_connect_system_bus(pegasus_t)
-+ dbus_system_bus_client(pegasus_t)
-+ dbus_connect_system_bus(pegasus_t)
++ dmidecode_domtrans(pegasus_t)
++')
- optional_policy(`
- networkmanager_dbus_chat(pegasus_t)
- ')
++optional_policy(`
++ dbus_system_bus_client(pegasus_t)
++ dbus_connect_system_bus(pegasus_t)
++
+ optional_policy(`
+ networkmanager_dbus_chat(pegasus_t)
+ ')
@@ -55713,7 +60782,7 @@ index 7bcf327..22a5b66 100644
')
optional_policy(`
-@@ -151,16 +401,24 @@ optional_policy(`
+@@ -151,16 +456,24 @@ optional_policy(`
')
optional_policy(`
@@ -55742,7 +60811,7 @@ index 7bcf327..22a5b66 100644
')
optional_policy(`
-@@ -168,7 +426,7 @@ optional_policy(`
+@@ -168,7 +481,7 @@ optional_policy(`
')
optional_policy(`
@@ -55751,6 +60820,15 @@ index 7bcf327..22a5b66 100644
')
optional_policy(`
+@@ -180,6 +493,8 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ virt_getattr_images(pegasus_t)
++ virt_getattr_content(pegasus_t)
+ virt_domtrans(pegasus_t)
+ virt_stream_connect(pegasus_t)
+ virt_manage_config(pegasus_t)
diff --git a/pesign.fc b/pesign.fc
new file mode 100644
index 0000000..7b54c39
@@ -56791,10 +61869,10 @@ index 0000000..848ddc9
+')
diff --git a/pkcsslotd.te b/pkcsslotd.te
new file mode 100644
-index 0000000..2ce92e0
+index 0000000..a82ca85
--- /dev/null
+++ b/pkcsslotd.te
-@@ -0,0 +1,67 @@
+@@ -0,0 +1,69 @@
+policy_module(pkcsslotd, 1.0.0)
+
+########################################
@@ -56862,9 +61940,11 @@ index 0000000..2ce92e0
+auth_read_passwd(pkcsslotd_t)
+
+logging_send_syslog_msg(pkcsslotd_t)
++
++userdom_read_all_users_state(pkcsslotd_t)
diff --git a/pki.fc b/pki.fc
new file mode 100644
-index 0000000..726d992
+index 0000000..e6592ea
--- /dev/null
+++ b/pki.fc
@@ -0,0 +1,56 @@
@@ -56873,7 +61953,7 @@ index 0000000..726d992
+/var/run/pki/tomcat(/.*)? gen_context(system_u:object_r:pki_tomcat_var_run_t,s0)
+/var/log/pki/pki-tomcat(/.*)? gen_context(system_u:object_r:pki_tomcat_log_t,s0)
+/etc/sysconfig/pki/tomcat(/.*)? gen_context(system_u:object_r:pki_tomcat_etc_rw_t,s0)
-+/var/log/pki gen_context(system_u:object_r:pki_log_t,s0)
++/var/log/pki(/.*)? gen_context(system_u:object_r:pki_log_t,s0)
+/usr/bin/pkidaemon gen_context(system_u:object_r:pki_tomcat_exec_t,s0)
+/etc/pki/pki-tomcat/alias(/.*)? gen_context(system_u:object_r:pki_tomcat_cert_t,s0)
+
@@ -57226,10 +62306,10 @@ index 0000000..b975b85
+')
diff --git a/pki.te b/pki.te
new file mode 100644
-index 0000000..17f5d18
+index 0000000..d1265c4
--- /dev/null
+++ b/pki.te
-@@ -0,0 +1,284 @@
+@@ -0,0 +1,291 @@
+policy_module(pki,10.0.11)
+
+########################################
@@ -57259,7 +62339,7 @@ index 0000000..17f5d18
+files_type(pki_tomcat_etc_rw_t)
+
+type pki_tomcat_cert_t;
-+files_type(pki_tomcat_cert_t)
++miscfiles_cert_type(pki_tomcat_cert_t)
+
+tomcat_domain_template(pki_tomcat)
+
@@ -57305,6 +62385,7 @@ index 0000000..17f5d18
+#
+
+allow pki_tomcat_t self:capability { setuid chown setgid fowner audit_write dac_override sys_nice fsetid};
++dontaudit pki_tomcat_t self:capability net_admin;
+allow pki_tomcat_t self:process { signal setsched signull execmem };
+
+allow pki_tomcat_t self:netlink_audit_socket { nlmsg_relay create };
@@ -57342,6 +62423,7 @@ index 0000000..17f5d18
+search_dirs_pattern(pki_tomcat_t, pki_log_t, pki_log_t)
+
+kernel_read_kernel_sysctls(pki_tomcat_t)
++kernel_read_net_sysctls(pki_tomcat_t)
+
+corenet_tcp_connect_http_cache_port(pki_tomcat_t)
+corenet_tcp_connect_ldap_port(pki_tomcat_t)
@@ -57380,6 +62462,10 @@ index 0000000..17f5d18
+ hostname_exec(pki_tomcat_t)
+')
+
++optional_policy(`
++ ipa_read_lib(pki_tomcat_t)
++')
++
+#######################################
+#
+# tps local policy
@@ -57412,6 +62498,7 @@ index 0000000..17f5d18
+
+corenet_tcp_bind_pki_ra_port(pki_ra_t)
+# talk to other subsystems
++corenet_tcp_connect_http_port(pki_ra_t)
+corenet_tcp_connect_pki_ca_port(pki_ra_t)
+corenet_tcp_connect_smtp_port(pki_ra_t)
+
@@ -57515,10 +62602,10 @@ index 0000000..17f5d18
+')
+
diff --git a/plymouthd.fc b/plymouthd.fc
-index 735500f..ef1dd7a 100644
+index 735500f..2ba6832 100644
--- a/plymouthd.fc
+++ b/plymouthd.fc
-@@ -1,15 +1,15 @@
+@@ -1,15 +1,14 @@
-/bin/plymouth -- gen_context(system_u:object_r:plymouth_exec_t,s0)
+/bin/plymouth -- gen_context(system_u:object_r:plymouth_exec_t,s0)
@@ -57539,11 +62626,11 @@ index 735500f..ef1dd7a 100644
+/usr/sbin/plymouthd -- gen_context(system_u:object_r:plymouthd_exec_t,s0)
-/var/run/plymouth(/.*)? gen_context(system_u:object_r:plymouthd_var_run_t,s0)
-+/var/spool/plymouth(/.*)? gen_context(system_u:object_r:plymouthd_spool_t,s0)
-
+-
-/var/spool/plymouth(/.*)? gen_context(system_u:object_r:plymouthd_spool_t,s0)
++/var/spool/plymouth(/.*)? gen_context(system_u:object_r:plymouthd_spool_t,s0)
diff --git a/plymouthd.if b/plymouthd.if
-index 30e751f..3985ff9 100644
+index 30e751f..61feb3a 100644
--- a/plymouthd.if
+++ b/plymouthd.if
@@ -1,4 +1,4 @@
@@ -57731,7 +62818,7 @@ index 30e751f..3985ff9 100644
gen_require(`
type plymouthd_var_run_t;
')
-@@ -233,36 +228,93 @@ interface(`plymouthd_read_pid_files',`
+@@ -233,36 +228,112 @@ interface(`plymouthd_read_pid_files',`
########################################
##
@@ -57756,17 +62843,39 @@ index 30e751f..3985ff9 100644
+ read_files_pattern($1, plymouthd_var_log_t, plymouthd_var_log_t)
+')
+
++#####################################
++##
++## Allow the specified domain to create plymouthd's log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`plymouthd_create_log',`
++ gen_require(`
++ type plymouthd_var_log_t;
++ ')
++
++ logging_search_logs($1)
++ create_files_pattern($1, plymouthd_var_log_t, plymouthd_var_log_t)
++')
++
+########################################
+##
+## Allow the specified domain to manage
+## to plymouthd log files.
+##
+##
-+##
+ ##
+-## Role allowed access.
+## Domain allowed access.
-+##
-+##
-+#
+ ##
+ ##
+-##
+ #
+-interface(`plymouthd_admin',`
+interface(`plymouthd_manage_log',`
+ gen_require(`
+ type plymouthd_var_log_t;
@@ -57788,12 +62897,12 @@ index 30e751f..3985ff9 100644
+##
+##
+#
-+interface(`plymouthd_create_log',`
++interface(`plymouthd_filetrans_named_content',`
++
+ gen_require(`
+ type plymouthd_var_log_t;
+ ')
+
-+ logging_rw_generic_log_dirs($1)
+ logging_log_named_filetrans($1, plymouthd_var_log_t, file, "boot.log")
+')
+
@@ -57803,14 +62912,11 @@ index 30e751f..3985ff9 100644
+## an plymouthd environment
+##
+##
- ##
--## Role allowed access.
++##
+## Domain allowed access.
- ##
- ##
--##
- #
--interface(`plymouthd_admin',`
++##
++##
++#
+interface(`plymouthd_admin', `
gen_require(`
type plymouthd_t, plymouthd_spool_t, plymouthd_var_lib_t;
@@ -57837,7 +62943,7 @@ index 30e751f..3985ff9 100644
admin_pattern($1, plymouthd_var_run_t)
')
diff --git a/plymouthd.te b/plymouthd.te
-index b1f412b..3a3249a 100644
+index b1f412b..b78836f 100644
--- a/plymouthd.te
+++ b/plymouthd.te
@@ -1,4 +1,4 @@
@@ -57855,7 +62961,7 @@ index b1f412b..3a3249a 100644
type plymouthd_var_lib_t;
files_type(plymouthd_var_lib_t)
-@@ -28,12 +28,12 @@ files_pid_file(plymouthd_var_run_t)
+@@ -28,13 +28,14 @@ files_pid_file(plymouthd_var_run_t)
########################################
#
@@ -57868,9 +62974,11 @@ index b1f412b..3a3249a 100644
allow plymouthd_t self:capability2 block_suspend;
+dontaudit plymouthd_t self:capability dac_override;
allow plymouthd_t self:process { signal getsched };
++allow plymouthd_t self:netlink_kobject_uevent_socket create_socket_perms;
allow plymouthd_t self:fifo_file rw_fifo_file_perms;
allow plymouthd_t self:unix_stream_socket create_stream_socket_perms;
-@@ -48,9 +48,7 @@ manage_files_pattern(plymouthd_t, plymouthd_var_lib_t, plymouthd_var_lib_t)
+
+@@ -48,9 +49,7 @@ manage_files_pattern(plymouthd_t, plymouthd_var_lib_t, plymouthd_var_lib_t)
files_var_lib_filetrans(plymouthd_t, plymouthd_var_lib_t, { file dir })
manage_dirs_pattern(plymouthd_t, plymouthd_var_log_t, plymouthd_var_log_t)
@@ -57881,13 +62989,13 @@ index b1f412b..3a3249a 100644
logging_log_filetrans(plymouthd_t, plymouthd_var_log_t, { file dir })
manage_dirs_pattern(plymouthd_t, plymouthd_var_run_t, plymouthd_var_run_t)
-@@ -70,19 +68,27 @@ domain_use_interactive_fds(plymouthd_t)
+@@ -70,19 +69,26 @@ domain_use_interactive_fds(plymouthd_t)
fs_getattr_all_fs(plymouthd_t)
-files_read_etc_files(plymouthd_t)
-files_read_usr_files(plymouthd_t)
-
+-
term_getattr_pty_fs(plymouthd_t)
term_use_all_terms(plymouthd_t)
term_use_ptmx(plymouthd_t)
@@ -57913,12 +63021,16 @@ index b1f412b..3a3249a 100644
')
optional_policy(`
-@@ -90,35 +96,33 @@ optional_policy(`
+@@ -90,35 +96,37 @@ optional_policy(`
')
optional_policy(`
- xserver_manage_xdm_spool_files(plymouthd_t)
- xserver_read_xdm_state(plymouthd_t)
++ udev_read_pid_files(plymouthd_t)
++')
++
++optional_policy(`
+ xserver_xdm_manage_spool(plymouthd_t)
+ xserver_read_state_xdm(plymouthd_t)
')
@@ -58873,7 +63985,7 @@ index ae27bb7..d00f6ba 100644
+ allow $1 polipo_unit_file_t:service all_service_perms;
')
diff --git a/polipo.te b/polipo.te
-index 316d53a..35d9018 100644
+index 316d53a..6646219 100644
--- a/polipo.te
+++ b/polipo.te
@@ -1,4 +1,4 @@
@@ -58949,7 +64061,7 @@ index 316d53a..35d9018 100644
type polipo_cache_t;
files_type(polipo_cache_t)
-@@ -56,112 +63,97 @@ files_type(polipo_cache_t)
+@@ -56,112 +63,98 @@ files_type(polipo_cache_t)
type polipo_log_t;
logging_log_file(polipo_log_t)
@@ -59002,6 +64114,7 @@ index 316d53a..35d9018 100644
+corenet_tcp_bind_http_cache_port(polipo_daemon)
+corenet_sendrecv_http_cache_server_packets(polipo_daemon)
+corenet_tcp_connect_http_port(polipo_daemon)
++corenet_tcp_connect_http_cache_port(polipo_daemon)
+corenet_tcp_connect_tor_port(polipo_daemon)
+corenet_tcp_connect_flash_port(polipo_daemon)
@@ -59238,7 +64351,7 @@ index 5ad5291..7f1ae2a 100644
portreserve_initrc_domtrans($1)
domain_system_change_exemption($1)
diff --git a/portreserve.te b/portreserve.te
-index a38b57a..aa9d604 100644
+index a38b57a..49758db 100644
--- a/portreserve.te
+++ b/portreserve.te
@@ -41,7 +41,6 @@ files_pid_filetrans(portreserve_t, portreserve_var_run_t, { file sock_file dir }
@@ -59249,13 +64362,17 @@ index a38b57a..aa9d604 100644
corenet_all_recvfrom_netlabel(portreserve_t)
corenet_tcp_sendrecv_generic_if(portreserve_t)
corenet_udp_sendrecv_generic_if(portreserve_t)
-@@ -56,6 +55,5 @@ corenet_sendrecv_all_server_packets(portreserve_t)
+@@ -56,6 +55,8 @@ corenet_sendrecv_all_server_packets(portreserve_t)
corenet_tcp_bind_all_ports(portreserve_t)
corenet_udp_bind_all_ports(portreserve_t)
-files_read_etc_files(portreserve_t)
-
+-
userdom_dontaudit_search_user_home_content(portreserve_t)
++
++optional_policy(`
++ sssd_search_lib(portreserve_t)
++')
diff --git a/portslave.te b/portslave.te
index e85e33d..a7d7c55 100644
--- a/portslave.te
@@ -59370,7 +64487,7 @@ index c0e8785..c0e0959 100644
+/var/spool/postfix/bounce(/.*)? gen_context(system_u:object_r:postfix_spool_bounce_t,s0)
/var/spool/postfix/flush(/.*)? gen_context(system_u:object_r:postfix_spool_flush_t,s0)
diff --git a/postfix.if b/postfix.if
-index 2e23946..0b76d72 100644
+index 2e23946..d8a163f 100644
--- a/postfix.if
+++ b/postfix.if
@@ -1,4 +1,4 @@
@@ -59701,7 +64818,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -382,14 +367,32 @@ interface(`postfix_domtrans_master',`
+@@ -382,14 +367,31 @@ interface(`postfix_domtrans_master',`
type postfix_master_t, postfix_master_exec_t;
')
@@ -59709,7 +64826,6 @@ index 2e23946..0b76d72 100644
domtrans_pattern($1, postfix_master_exec_t, postfix_master_t)
')
-+
########################################
##
-## Execute the master postfix program
@@ -59737,7 +64853,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -402,21 +405,18 @@ interface(`postfix_exec_master',`
+@@ -402,21 +404,18 @@ interface(`postfix_exec_master',`
type postfix_master_exec_t;
')
@@ -59760,7 +64876,7 @@ index 2e23946..0b76d72 100644
#
interface(`postfix_stream_connect_master',`
gen_require(`
-@@ -428,8 +428,7 @@ interface(`postfix_stream_connect_master',`
+@@ -428,8 +427,7 @@ interface(`postfix_stream_connect_master',`
########################################
##
@@ -59770,7 +64886,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -437,15 +436,18 @@ interface(`postfix_stream_connect_master',`
+@@ -437,15 +435,18 @@ interface(`postfix_stream_connect_master',`
##
##
#
@@ -59793,7 +64909,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -458,14 +460,13 @@ interface(`postfix_domtrans_postdrop',`
+@@ -458,14 +459,13 @@ interface(`postfix_domtrans_postdrop',`
type postfix_postdrop_t, postfix_postdrop_exec_t;
')
@@ -59809,7 +64925,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -478,30 +479,85 @@ interface(`postfix_domtrans_postqueue',`
+@@ -478,30 +478,85 @@ interface(`postfix_domtrans_postqueue',`
type postfix_postqueue_t, postfix_postqueue_exec_t;
')
@@ -59829,18 +64945,15 @@ index 2e23946..0b76d72 100644
##
-## Domain allowed access.
+## Domain allowed to transition.
- ##
- ##
++##
++##
+##
+##
+## The role to be allowed the iptables domain.
+##
+##
+##
- #
--interface(`posftix_exec_postqueue',`
-- refpolicywarn(`$0($*) has been deprecated.')
-- postfix_exec_postqueue($1)
++#
+
+interface(`postfix_run_postqueue',`
+ gen_require(`
@@ -59850,8 +64963,8 @@ index 2e23946..0b76d72 100644
+ postfix_domtrans_postqueue($1)
+ role $2 types postfix_postqueue_t;
+ allow postfix_postqueue_t $1:unix_stream_socket { read write getattr };
- ')
-
++')
++
+########################################
+##
+## Execute postfix_postgqueue in the postfix_postgqueue domain.
@@ -59883,10 +64996,13 @@ index 2e23946..0b76d72 100644
+##
+##
+## Role allowed access.
-+##
-+##
+ ##
+ ##
+##
-+#
+ #
+-interface(`posftix_exec_postqueue',`
+- refpolicywarn(`$0($*) has been deprecated.')
+- postfix_exec_postqueue($1)
+interface(`postfix_run_postgqueue',`
+ gen_require(`
+ type postfix_postgqueue_t;
@@ -59894,8 +65010,8 @@ index 2e23946..0b76d72 100644
+
+ postfix_domtrans_postgqueue($1)
+ role $2 types postfix_postgqueue_t;
-+')
-+
+ ')
+
+
#######################################
##
@@ -59905,7 +65021,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -514,13 +570,12 @@ interface(`postfix_exec_postqueue',`
+@@ -514,13 +569,12 @@ interface(`postfix_exec_postqueue',`
type postfix_postqueue_exec_t;
')
@@ -59920,7 +65036,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -533,13 +588,13 @@ interface(`postfix_create_private_sockets',`
+@@ -533,13 +587,13 @@ interface(`postfix_create_private_sockets',`
type postfix_private_t;
')
@@ -59936,7 +65052,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -552,13 +607,14 @@ interface(`postfix_manage_private_sockets',`
+@@ -552,13 +606,14 @@ interface(`postfix_manage_private_sockets',`
type postfix_private_t;
')
@@ -59953,7 +65069,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -571,14 +627,12 @@ interface(`postfix_domtrans_smtp',`
+@@ -571,14 +626,12 @@ interface(`postfix_domtrans_smtp',`
type postfix_smtp_t, postfix_smtp_exec_t;
')
@@ -59969,7 +65085,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -586,7 +640,7 @@ interface(`postfix_domtrans_smtp',`
+@@ -586,7 +639,7 @@ interface(`postfix_domtrans_smtp',`
##
##
#
@@ -59978,7 +65094,7 @@ index 2e23946..0b76d72 100644
gen_require(`
attribute postfix_spool_type;
')
-@@ -607,11 +661,11 @@ interface(`postfix_getattr_all_spool_files',`
+@@ -607,11 +660,11 @@ interface(`postfix_getattr_all_spool_files',`
#
interface(`postfix_search_spool',`
gen_require(`
@@ -59992,7 +65108,7 @@ index 2e23946..0b76d72 100644
')
########################################
-@@ -626,11 +680,11 @@ interface(`postfix_search_spool',`
+@@ -626,11 +679,11 @@ interface(`postfix_search_spool',`
#
interface(`postfix_list_spool',`
gen_require(`
@@ -60006,7 +65122,7 @@ index 2e23946..0b76d72 100644
')
########################################
-@@ -645,17 +699,16 @@ interface(`postfix_list_spool',`
+@@ -645,17 +698,16 @@ interface(`postfix_list_spool',`
#
interface(`postfix_read_spool_files',`
gen_require(`
@@ -60027,7 +65143,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -665,11 +718,50 @@ interface(`postfix_read_spool_files',`
+@@ -665,11 +717,50 @@ interface(`postfix_read_spool_files',`
#
interface(`postfix_manage_spool_files',`
gen_require(`
@@ -60080,7 +65196,7 @@ index 2e23946..0b76d72 100644
')
########################################
-@@ -693,8 +785,8 @@ interface(`postfix_domtrans_user_mail_handler',`
+@@ -693,8 +784,8 @@ interface(`postfix_domtrans_user_mail_handler',`
########################################
##
@@ -60091,7 +65207,7 @@ index 2e23946..0b76d72 100644
##
##
##
-@@ -710,37 +802,137 @@ interface(`postfix_domtrans_user_mail_handler',`
+@@ -710,37 +801,137 @@ interface(`postfix_domtrans_user_mail_handler',`
#
interface(`postfix_admin',`
gen_require(`
@@ -60250,7 +65366,7 @@ index 2e23946..0b76d72 100644
+ postfix_config_filetrans($1, postfix_prng_t, file, "prng_exch")
')
diff --git a/postfix.te b/postfix.te
-index 191a66f..f19bca4 100644
+index 191a66f..cd766c0 100644
--- a/postfix.te
+++ b/postfix.te
@@ -1,4 +1,4 @@
@@ -60432,9 +65548,8 @@ index 191a66f..f19bca4 100644
-########################################
-#
-# Common postfix user domain local policy
-+# Postfix master process local policy
- #
-
+-#
+-
-allow postfix_user_domains self:capability dac_override;
-
-domain_use_interactive_fds(postfix_user_domains)
@@ -60442,8 +65557,9 @@ index 191a66f..f19bca4 100644
-########################################
-#
-# Master local policy
--#
--
++# Postfix master process local policy
+ #
+
-allow postfix_master_t self:capability { chown dac_override kill fowner setgid setuid sys_tty_config };
+# chown is to set the correct ownership of queue dirs
+allow postfix_master_t self:capability { chown dac_override kill setgid setuid net_bind_service sys_tty_config };
@@ -60499,7 +65615,7 @@ index 191a66f..f19bca4 100644
manage_files_pattern(postfix_master_t, postfix_spool_flush_t, postfix_spool_flush_t)
manage_lnk_files_pattern(postfix_master_t, postfix_spool_flush_t, postfix_spool_flush_t)
-filetrans_pattern(postfix_master_t, postfix_spool_t, postfix_spool_flush_t, dir, "flush")
--
+
-create_dirs_pattern(postfix_master_t, postfix_spool_t, postfix_private_t)
-manage_fifo_files_pattern(postfix_master_t, postfix_private_t, postfix_private_t)
-manage_sock_files_pattern(postfix_master_t, postfix_private_t, postfix_private_t)
@@ -60511,24 +65627,24 @@ index 191a66f..f19bca4 100644
-manage_sock_files_pattern(postfix_master_t, postfix_public_t, postfix_public_t)
-setattr_dirs_pattern(postfix_master_t, postfix_public_t, postfix_public_t)
-filetrans_pattern(postfix_master_t, postfix_spool_t, postfix_public_t, dir, "public")
-
+-
-create_dirs_pattern(postfix_master_t, postfix_spool_t, postfix_spool_maildrop_t)
-delete_files_pattern(postfix_master_t, postfix_spool_maildrop_t, postfix_spool_maildrop_t)
-rename_files_pattern(postfix_master_t, postfix_spool_maildrop_t, postfix_spool_maildrop_t)
-setattr_dirs_pattern(postfix_master_t, postfix_spool_maildrop_t, postfix_spool_maildrop_t)
-filetrans_pattern(postfix_master_t, postfix_spool_t, postfix_spool_maildrop_t, dir, "maildrop")
-+manage_files_pattern(postfix_master_t, postfix_spool_maildrop_t, postfix_spool_maildrop_t)
-
+-
-create_dirs_pattern(postfix_master_t, postfix_spool_t, postfix_var_run_t)
-setattr_dirs_pattern(postfix_master_t, postfix_var_run_t, postfix_var_run_t)
-filetrans_pattern(postfix_master_t, postfix_spool_t, postfix_var_run_t, dir, "pid")
-+kernel_read_all_sysctls(postfix_master_t)
-
--can_exec(postfix_master_t, postfix_exec_t)
-
+-can_exec(postfix_master_t, postfix_exec_t)
++manage_files_pattern(postfix_master_t, postfix_spool_maildrop_t, postfix_spool_maildrop_t)
+
-domtrans_pattern(postfix_master_t, postfix_postqueue_exec_t, postfix_postqueue_t)
-domtrans_pattern(postfix_master_t, postfix_showq_exec_t, postfix_showq_t)
--
++kernel_read_all_sysctls(postfix_master_t)
+
-corenet_all_recvfrom_unlabeled(postfix_master_t)
corenet_all_recvfrom_netlabel(postfix_master_t)
corenet_tcp_sendrecv_generic_if(postfix_master_t)
@@ -60740,7 +65856,7 @@ index 191a66f..f19bca4 100644
')
optional_policy(`
-@@ -434,6 +335,7 @@ optional_policy(`
+@@ -434,16 +335,25 @@ optional_policy(`
')
optional_policy(`
@@ -60748,7 +65864,14 @@ index 191a66f..f19bca4 100644
mailman_manage_data_files(postfix_local_t)
mailman_append_log(postfix_local_t)
mailman_read_log(postfix_local_t)
-@@ -444,6 +346,10 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ munin_search_lib(postfix_local_t)
++')
++
++optional_policy(`
+ nagios_search_spool(postfix_local_t)
')
optional_policy(`
@@ -60759,7 +65882,7 @@ index 191a66f..f19bca4 100644
procmail_domtrans(postfix_local_t)
')
-@@ -458,15 +364,17 @@ optional_policy(`
+@@ -458,15 +368,17 @@ optional_policy(`
########################################
#
@@ -60783,7 +65906,7 @@ index 191a66f..f19bca4 100644
manage_dirs_pattern(postfix_map_t, postfix_map_tmp_t, postfix_map_tmp_t)
manage_files_pattern(postfix_map_t, postfix_map_tmp_t, postfix_map_tmp_t)
-@@ -476,14 +384,15 @@ kernel_read_kernel_sysctls(postfix_map_t)
+@@ -476,14 +388,15 @@ kernel_read_kernel_sysctls(postfix_map_t)
kernel_dontaudit_list_proc(postfix_map_t)
kernel_dontaudit_read_system_state(postfix_map_t)
@@ -60803,7 +65926,7 @@ index 191a66f..f19bca4 100644
corecmd_list_bin(postfix_map_t)
corecmd_read_bin_symlinks(postfix_map_t)
-@@ -492,7 +401,6 @@ corecmd_read_bin_pipes(postfix_map_t)
+@@ -492,7 +405,6 @@ corecmd_read_bin_pipes(postfix_map_t)
corecmd_read_bin_sockets(postfix_map_t)
files_list_home(postfix_map_t)
@@ -60811,7 +65934,7 @@ index 191a66f..f19bca4 100644
files_read_etc_runtime_files(postfix_map_t)
files_dontaudit_search_var(postfix_map_t)
-@@ -500,21 +408,22 @@ auth_use_nsswitch(postfix_map_t)
+@@ -500,21 +412,22 @@ auth_use_nsswitch(postfix_map_t)
logging_send_syslog_msg(postfix_map_t)
@@ -60837,7 +65960,7 @@ index 191a66f..f19bca4 100644
stream_connect_pattern(postfix_pickup_t, postfix_private_t, postfix_private_t, postfix_master_t)
rw_fifo_files_pattern(postfix_pickup_t, postfix_public_t, postfix_public_t)
-@@ -524,16 +433,15 @@ allow postfix_pickup_t postfix_spool_t:dir list_dir_perms;
+@@ -524,21 +437,21 @@ allow postfix_pickup_t postfix_spool_t:dir list_dir_perms;
read_files_pattern(postfix_pickup_t, postfix_spool_t, postfix_spool_t)
delete_files_pattern(postfix_pickup_t, postfix_spool_t, postfix_spool_t)
@@ -60857,7 +65980,24 @@ index 191a66f..f19bca4 100644
#
allow postfix_pipe_t self:process setrlimit;
-@@ -576,19 +484,26 @@ optional_policy(`
+
+ write_sock_files_pattern(postfix_pipe_t, postfix_private_t, postfix_private_t)
++write_sock_files_pattern(postfix_pipe_t, postfix_public_t, postfix_public_t)
+
+ write_fifo_files_pattern(postfix_pipe_t, postfix_public_t, postfix_public_t)
+
+@@ -549,6 +462,10 @@ domtrans_pattern(postfix_pipe_t, postfix_postdrop_exec_t, postfix_postdrop_t)
+ corecmd_exec_bin(postfix_pipe_t)
+
+ optional_policy(`
++ cyrus_stream_connect(postfix_pipe_t)
++')
++
++optional_policy(`
+ dovecot_domtrans_deliver(postfix_pipe_t)
+ ')
+
+@@ -576,19 +493,26 @@ optional_policy(`
########################################
#
@@ -60889,7 +66029,7 @@ index 191a66f..f19bca4 100644
term_dontaudit_use_all_ptys(postfix_postdrop_t)
term_dontaudit_use_all_ttys(postfix_postdrop_t)
-@@ -603,10 +518,7 @@ optional_policy(`
+@@ -603,10 +527,7 @@ optional_policy(`
cron_system_entry(postfix_postdrop_t, postfix_postdrop_exec_t)
')
@@ -60901,7 +66041,7 @@ index 191a66f..f19bca4 100644
optional_policy(`
fstools_read_pipes(postfix_postdrop_t)
')
-@@ -621,17 +533,24 @@ optional_policy(`
+@@ -621,17 +542,24 @@ optional_policy(`
#######################################
#
@@ -60929,7 +66069,7 @@ index 191a66f..f19bca4 100644
init_sigchld_script(postfix_postqueue_t)
init_use_script_fds(postfix_postqueue_t)
-@@ -647,67 +566,77 @@ optional_policy(`
+@@ -647,67 +575,77 @@ optional_policy(`
########################################
#
@@ -61025,7 +66165,7 @@ index 191a66f..f19bca4 100644
')
optional_policy(`
-@@ -720,29 +649,30 @@ optional_policy(`
+@@ -720,29 +658,30 @@ optional_policy(`
########################################
#
@@ -61064,7 +66204,7 @@ index 191a66f..f19bca4 100644
optional_policy(`
dovecot_stream_connect_auth(postfix_smtpd_t)
dovecot_stream_connect(postfix_smtpd_t)
-@@ -754,6 +684,7 @@ optional_policy(`
+@@ -754,6 +693,7 @@ optional_policy(`
optional_policy(`
milter_stream_connect_all(postfix_smtpd_t)
@@ -61072,7 +66212,7 @@ index 191a66f..f19bca4 100644
')
optional_policy(`
-@@ -764,31 +695,99 @@ optional_policy(`
+@@ -764,31 +704,99 @@ optional_policy(`
sasl_connect(postfix_smtpd_t)
')
@@ -63078,7 +68218,7 @@ index 00edeab..166e9c3 100644
+ read_files_pattern($1, procmail_home_t, procmail_home_t)
')
diff --git a/procmail.te b/procmail.te
-index d447152..73c437c 100644
+index d447152..f3e6fbf 100644
--- a/procmail.te
+++ b/procmail.te
@@ -1,4 +1,4 @@
@@ -63113,7 +68253,7 @@ index d447152..73c437c 100644
allow procmail_t procmail_log_t:dir setattr_dir_perms;
create_files_pattern(procmail_t, procmail_log_t, procmail_log_t)
append_files_pattern(procmail_t, procmail_log_t, procmail_log_t)
-@@ -40,89 +44,106 @@ logging_log_filetrans(procmail_t, procmail_log_t, { file dir })
+@@ -40,89 +44,108 @@ logging_log_filetrans(procmail_t, procmail_log_t, { file dir })
allow procmail_t procmail_tmp_t:file manage_file_perms;
files_tmp_filetrans(procmail_t, procmail_tmp_t, file)
@@ -63145,6 +68285,7 @@ index d447152..73c437c 100644
-corecmd_exec_bin(procmail_t)
-corecmd_exec_shell(procmail_t)
++dev_read_rand(procmail_t)
dev_read_urand(procmail_t)
-fs_getattr_all_fs(procmail_t)
@@ -63167,10 +68308,10 @@ index d447152..73c437c 100644
-miscfiles_read_localization(procmail_t)
+init_read_utmp(procmail_t)
-+
+
+logging_send_syslog_msg(procmail_t)
+logging_append_all_logs(procmail_t)
-
++
+list_dirs_pattern(procmail_t, procmail_home_t, procmail_home_t)
+read_files_pattern(procmail_t, procmail_home_t, procmail_home_t)
userdom_search_user_home_dirs(procmail_t)
@@ -63192,17 +68333,17 @@ index d447152..73c437c 100644
+userdom_manage_user_tmp_dirs(procmail_t)
+userdom_manage_user_tmp_files(procmail_t)
+userdom_manage_user_tmp_symlinks(procmail_t)
-+
-+# Execute user executables
-+userdom_exec_user_bin_files(procmail_t)
-+
-+mta_manage_spool(procmail_t)
-+mta_read_queue(procmail_t)
-tunable_policy(`use_samba_home_dirs',`
- fs_manage_cifs_dirs(procmail_t)
- fs_manage_cifs_files(procmail_t)
- fs_manage_cifs_symlinks(procmail_t)
++# Execute user executables
++userdom_exec_user_bin_files(procmail_t)
++
++mta_manage_spool(procmail_t)
++mta_read_queue(procmail_t)
++
+ifdef(`hide_broken_symptoms',`
+ mta_dontaudit_rw_queue(procmail_t)
')
@@ -63219,6 +68360,7 @@ index d447152..73c437c 100644
optional_policy(`
- cyrus_stream_connect(procmail_t)
+ dovecot_stream_connect(procmail_t)
++ dovecot_read_config(procmail_t)
')
optional_policy(`
@@ -63257,15 +68399,25 @@ index d447152..73c437c 100644
')
optional_policy(`
-@@ -131,6 +152,8 @@ optional_policy(`
+@@ -131,6 +154,9 @@ optional_policy(`
')
optional_policy(`
+ mta_read_config(procmail_t)
++ mta_mailserver_delivery(procmail_t)
+ mta_manage_home_rw(procmail_t)
sendmail_domtrans(procmail_t)
sendmail_signal(procmail_t)
sendmail_dontaudit_rw_tcp_sockets(procmail_t)
+@@ -145,3 +171,8 @@ optional_policy(`
+ spamassassin_domtrans_client(procmail_t)
+ spamassassin_read_lib_files(procmail_t)
+ ')
++
++optional_policy(`
++ zarafa_stream_connect_server(procmail_t)
++ zarafa_domtrans_deliver(procmail_t)
++')
diff --git a/prosody.fc b/prosody.fc
new file mode 100644
index 0000000..96a0d9f
@@ -64236,7 +69388,7 @@ index fa3dc8e..99cfa95 100644
+ ps_process_pattern($1, pulseaudio_t)
')
diff --git a/pulseaudio.te b/pulseaudio.te
-index e31bbe1..822ab6c 100644
+index e31bbe1..5f0e288 100644
--- a/pulseaudio.te
+++ b/pulseaudio.te
@@ -1,4 +1,4 @@
@@ -64253,7 +69405,8 @@ index e31bbe1..822ab6c 100644
-
type pulseaudio_t;
type pulseaudio_exec_t;
- init_daemon_domain(pulseaudio_t, pulseaudio_exec_t)
+-init_daemon_domain(pulseaudio_t, pulseaudio_exec_t)
++#init_daemon_domain(pulseaudio_t, pulseaudio_exec_t)
userdom_user_application_domain(pulseaudio_t, pulseaudio_exec_t)
-role pulseaudio_roles types pulseaudio_t;
+role system_r types pulseaudio_t;
@@ -67877,10 +73030,10 @@ index afc0068..3105104 100644
+ ')
')
diff --git a/quantum.te b/quantum.te
-index 769d1fd..0ef5efc 100644
+index 769d1fd..52bad99 100644
--- a/quantum.te
+++ b/quantum.te
-@@ -1,96 +1,109 @@
+@@ -1,96 +1,132 @@
-policy_module(quantum, 1.0.2)
+policy_module(quantum, 1.0.3)
@@ -67930,55 +73083,52 @@ index 769d1fd..0ef5efc 100644
-allow quantum_t self:key manage_key_perms;
-allow quantum_t self:tcp_socket { accept listen };
-allow quantum_t self:unix_stream_socket { accept listen };
-+allow neutron_t self:capability { setgid setuid sys_resource };
++allow neutron_t self:capability { sys_ptrace kill setgid setuid sys_resource net_admin sys_admin net_raw };
+allow neutron_t self:process { setsched setrlimit };
+allow neutron_t self:fifo_file rw_fifo_file_perms;
+allow neutron_t self:key manage_key_perms;
+allow neutron_t self:tcp_socket { accept listen };
+allow neutron_t self:unix_stream_socket { accept listen };
-
--manage_dirs_pattern(quantum_t, quantum_log_t, quantum_log_t)
--append_files_pattern(quantum_t, quantum_log_t, quantum_log_t)
--create_files_pattern(quantum_t, quantum_log_t, quantum_log_t)
--setattr_files_pattern(quantum_t, quantum_log_t, quantum_log_t)
--logging_log_filetrans(quantum_t, quantum_log_t, dir)
++allow neutron_t self:netlink_route_socket rw_netlink_socket_perms;
++
+manage_dirs_pattern(neutron_t, neutron_log_t, neutron_log_t)
+append_files_pattern(neutron_t, neutron_log_t, neutron_log_t)
+create_files_pattern(neutron_t, neutron_log_t, neutron_log_t)
+setattr_files_pattern(neutron_t, neutron_log_t, neutron_log_t)
+logging_log_filetrans(neutron_t, neutron_log_t, dir)
--manage_files_pattern(quantum_t, quantum_tmp_t, quantum_tmp_t)
--files_tmp_filetrans(quantum_t, quantum_tmp_t, file)
+-manage_dirs_pattern(quantum_t, quantum_log_t, quantum_log_t)
+-append_files_pattern(quantum_t, quantum_log_t, quantum_log_t)
+-create_files_pattern(quantum_t, quantum_log_t, quantum_log_t)
+-setattr_files_pattern(quantum_t, quantum_log_t, quantum_log_t)
+-logging_log_filetrans(quantum_t, quantum_log_t, dir)
+manage_files_pattern(neutron_t, neutron_tmp_t, neutron_tmp_t)
+files_tmp_filetrans(neutron_t, neutron_tmp_t, file)
--manage_dirs_pattern(quantum_t, quantum_var_lib_t, quantum_var_lib_t)
--manage_files_pattern(quantum_t, quantum_var_lib_t, quantum_var_lib_t)
--files_var_lib_filetrans(quantum_t, quantum_var_lib_t, dir)
+-manage_files_pattern(quantum_t, quantum_tmp_t, quantum_tmp_t)
+-files_tmp_filetrans(quantum_t, quantum_tmp_t, file)
+manage_dirs_pattern(neutron_t, neutron_var_lib_t, neutron_var_lib_t)
+manage_files_pattern(neutron_t, neutron_var_lib_t, neutron_var_lib_t)
+files_var_lib_filetrans(neutron_t, neutron_var_lib_t, dir)
--can_exec(quantum_t, quantum_tmp_t)
+-manage_dirs_pattern(quantum_t, quantum_var_lib_t, quantum_var_lib_t)
+-manage_files_pattern(quantum_t, quantum_var_lib_t, quantum_var_lib_t)
+-files_var_lib_filetrans(quantum_t, quantum_var_lib_t, dir)
+can_exec(neutron_t, neutron_tmp_t)
--kernel_read_kernel_sysctls(quantum_t)
--kernel_read_system_state(quantum_t)
+-can_exec(quantum_t, quantum_tmp_t)
+kernel_read_kernel_sysctls(neutron_t)
+kernel_read_system_state(neutron_t)
++kernel_read_network_state(neutron_t)
++kernel_request_load_module(neutron_t)
--corecmd_exec_shell(quantum_t)
--corecmd_exec_bin(quantum_t)
+-kernel_read_kernel_sysctls(quantum_t)
+-kernel_read_system_state(quantum_t)
+corecmd_exec_shell(neutron_t)
+corecmd_exec_bin(neutron_t)
--corenet_all_recvfrom_unlabeled(quantum_t)
--corenet_all_recvfrom_netlabel(quantum_t)
--corenet_tcp_sendrecv_generic_if(quantum_t)
--corenet_tcp_sendrecv_generic_node(quantum_t)
--corenet_tcp_sendrecv_all_ports(quantum_t)
--corenet_tcp_bind_generic_node(quantum_t)
+-corecmd_exec_shell(quantum_t)
+-corecmd_exec_bin(quantum_t)
+corenet_all_recvfrom_unlabeled(neutron_t)
+corenet_all_recvfrom_netlabel(neutron_t)
+corenet_tcp_sendrecv_generic_if(neutron_t)
@@ -67986,67 +73136,93 @@ index 769d1fd..0ef5efc 100644
+corenet_tcp_sendrecv_all_ports(neutron_t)
+corenet_tcp_bind_generic_node(neutron_t)
--dev_list_sysfs(quantum_t)
--dev_read_urand(quantum_t)
+-corenet_all_recvfrom_unlabeled(quantum_t)
+-corenet_all_recvfrom_netlabel(quantum_t)
+-corenet_tcp_sendrecv_generic_if(quantum_t)
+-corenet_tcp_sendrecv_generic_node(quantum_t)
+-corenet_tcp_sendrecv_all_ports(quantum_t)
+-corenet_tcp_bind_generic_node(quantum_t)
+corenet_tcp_bind_neutron_port(neutron_t)
+corenet_tcp_connect_keystone_port(neutron_t)
+corenet_tcp_connect_amqp_port(neutron_t)
+corenet_tcp_connect_mysqld_port(neutron_t)
+-dev_list_sysfs(quantum_t)
+-dev_read_urand(quantum_t)
++domain_named_filetrans(neutron_t)
+
-files_read_usr_files(quantum_t)
-+dev_list_sysfs(neutron_t)
++dev_read_sysfs(neutron_t)
+dev_read_urand(neutron_t)
++dev_mounton_sysfs(neutron_t)
++dev_mount_sysfs_fs(neutron_t)
++dev_unmount_sysfs_fs(neutron_t)
-auth_use_nsswitch(quantum_t)
-+auth_use_nsswitch(neutron_t)
++files_mounton_non_security(neutron_t)
-libs_exec_ldconfig(quantum_t)
-+libs_exec_ldconfig(neutron_t)
++auth_use_nsswitch(neutron_t)
-logging_send_audit_msgs(quantum_t)
-logging_send_syslog_msg(quantum_t)
-+logging_send_audit_msgs(neutron_t)
-+logging_send_syslog_msg(neutron_t)
++libs_exec_ldconfig(neutron_t)
-miscfiles_read_localization(quantum_t)
-+sysnet_exec_ifconfig(neutron_t)
++logging_send_audit_msgs(neutron_t)
++logging_send_syslog_msg(neutron_t)
-sysnet_domtrans_ifconfig(quantum_t)
-+optional_policy(`
-+ brctl_domtrans(neutron_t)
-+')
++sysnet_exec_ifconfig(neutron_t)
++sysnet_manage_ifconfig_run(neutron_t)
++sysnet_filetrans_named_content_ifconfig(neutron_t)
optional_policy(`
- brctl_domtrans(quantum_t)
-+ mysql_stream_connect(neutron_t)
-+ mysql_read_config(neutron_t)
-+
-+ mysql_tcp_connect(neutron_t)
++ brctl_domtrans(neutron_t)
')
optional_policy(`
- mysql_stream_connect(quantum_t)
- mysql_read_config(quantum_t)
-+ postgresql_stream_connect(neutron_t)
-+ postgresql_unpriv_client(neutron_t)
++ dnsmasq_domtrans(neutron_t)
++ dnsmasq_signal(neutron_t)
++ dnsmasq_kill(neutron_t)
++ dnsmasq_read_state(neutron_t)
++')
- mysql_tcp_connect(quantum_t)
-+ postgresql_tcp_connect(neutron_t)
++optional_policy(`
++ iptables_domtrans(neutron_t)
')
optional_policy(`
- postgresql_stream_connect(quantum_t)
- postgresql_unpriv_client(quantum_t)
++ mysql_stream_connect(neutron_t)
++ mysql_read_config(neutron_t)
+
+- postgresql_tcp_connect(quantum_t)
++ mysql_tcp_connect(neutron_t)
+ ')
++
++optional_policy(`
++ postgresql_stream_connect(neutron_t)
++ postgresql_unpriv_client(neutron_t)
++
++ postgresql_tcp_connect(neutron_t)
++')
++
++optional_policy(`
+ openvswitch_domtrans(neutron_t)
+ openvswitch_stream_connect(neutron_t)
+')
-
-- postgresql_tcp_connect(quantum_t)
++
+optional_policy(`
+ sudo_exec(neutron_t)
- ')
++')
diff --git a/quota.fc b/quota.fc
-index cadabe3..0ee2489 100644
+index cadabe3..54ba01d 100644
--- a/quota.fc
+++ b/quota.fc
@@ -1,6 +1,5 @@
@@ -68057,7 +73233,7 @@ index cadabe3..0ee2489 100644
/a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0)
-@@ -8,24 +7,23 @@ HOME_DIR/a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0)
+@@ -8,24 +7,24 @@ HOME_DIR/a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0)
/etc/a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0)
@@ -68073,6 +73249,7 @@ index cadabe3..0ee2489 100644
/var/a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0)
+/var/lib/quota(/.*)? gen_context(system_u:object_r:quota_flag_t,s0)
++/var/spool/cron/a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0)
+/var/spool/(.*/)?a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0)
-/var/lib/quota(/.*)? gen_context(system_u:object_r:quota_flag_t,s0)
@@ -68491,7 +73668,7 @@ index 2c3d338..cf3e5ad 100644
########################################
diff --git a/rabbitmq.te b/rabbitmq.te
-index 3698b51..136b017 100644
+index 3698b51..7d5630f 100644
--- a/rabbitmq.te
+++ b/rabbitmq.te
@@ -19,6 +19,9 @@ init_script_file(rabbitmq_initrc_exec_t)
@@ -68513,7 +73690,7 @@ index 3698b51..136b017 100644
allow rabbitmq_beam_t self:process { setsched signal signull };
allow rabbitmq_beam_t self:fifo_file rw_fifo_file_perms;
allow rabbitmq_beam_t self:tcp_socket { accept listen };
-@@ -38,27 +43,35 @@ manage_dirs_pattern(rabbitmq_beam_t, rabbitmq_var_lib_t, rabbitmq_var_lib_t)
+@@ -38,50 +43,85 @@ manage_dirs_pattern(rabbitmq_beam_t, rabbitmq_var_lib_t, rabbitmq_var_lib_t)
manage_files_pattern(rabbitmq_beam_t, rabbitmq_var_lib_t, rabbitmq_var_lib_t)
manage_dirs_pattern(rabbitmq_beam_t, rabbitmq_var_log_t, rabbitmq_var_log_t)
@@ -68549,35 +73726,39 @@ index 3698b51..136b017 100644
corenet_tcp_sendrecv_generic_node(rabbitmq_beam_t)
corenet_tcp_bind_generic_node(rabbitmq_beam_t)
+corenet_tcp_connect_all_ephemeral_ports(rabbitmq_beam_t)
++corenet_tcp_bind_all_ephemeral_ports(rabbitmq_beam_t)
corenet_sendrecv_amqp_server_packets(rabbitmq_beam_t)
- corenet_tcp_bind_amqp_port(rabbitmq_beam_t)
-@@ -68,20 +81,50 @@ corenet_sendrecv_epmd_client_packets(rabbitmq_beam_t)
- corenet_tcp_connect_epmd_port(rabbitmq_beam_t)
- corenet_tcp_sendrecv_epmd_port(rabbitmq_beam_t)
+-corenet_tcp_bind_amqp_port(rabbitmq_beam_t)
+-corenet_tcp_sendrecv_amqp_port(rabbitmq_beam_t)
--dev_read_sysfs(rabbitmq_beam_t)
+ corenet_sendrecv_epmd_client_packets(rabbitmq_beam_t)
++corenet_tcp_sendrecv_amqp_port(rabbitmq_beam_t)
++corenet_tcp_bind_amqp_port(rabbitmq_beam_t)
+corenet_tcp_bind_couchdb_port(rabbitmq_beam_t)
-+
+corenet_tcp_bind_jabber_client_port(rabbitmq_beam_t)
+corenet_tcp_bind_jabber_interserver_port(rabbitmq_beam_t)
-+
++corenet_tcp_connect_amqp_port(rabbitmq_beam_t)
++corenet_tcp_connect_couchdb_port(rabbitmq_beam_t)
+ corenet_tcp_connect_epmd_port(rabbitmq_beam_t)
++corenet_tcp_connect_jabber_interserver_port(rabbitmq_beam_t)
+ corenet_tcp_sendrecv_epmd_port(rabbitmq_beam_t)
+
+-dev_read_sysfs(rabbitmq_beam_t)
+domain_read_all_domains_state(rabbitmq_beam_t)
-+
-+auth_read_passwd(rabbitmq_beam_t)
-+auth_use_pam(rabbitmq_beam_t)
-files_read_etc_files(rabbitmq_beam_t)
-+files_getattr_all_mountpoints(rabbitmq_beam_t)
++auth_read_passwd(rabbitmq_beam_t)
++auth_use_pam(rabbitmq_beam_t)
-miscfiles_read_localization(rabbitmq_beam_t)
++files_getattr_all_mountpoints(rabbitmq_beam_t)
++
+fs_getattr_all_fs(rabbitmq_beam_t)
+fs_getattr_all_dirs(rabbitmq_beam_t)
+fs_getattr_cgroup(rabbitmq_beam_t)
+fs_search_cgroup_dirs(rabbitmq_beam_t)
+
-+corenet_tcp_connect_couchdb_port(rabbitmq_beam_t)
-+
+dev_read_sysfs(rabbitmq_beam_t)
+dev_read_urand(rabbitmq_beam_t)
+
@@ -68588,10 +73769,7 @@ index 3698b51..136b017 100644
+logging_send_syslog_msg(rabbitmq_beam_t)
+
+optional_policy(`
-+ couchdb_manage_lib_files(rabbitmq_beam_t)
-+ couchdb_read_conf_files(rabbitmq_beam_t)
-+ couchdb_read_log_files(rabbitmq_beam_t)
-+ couchdb_search_pid_dirs(rabbitmq_beam_t)
++ couchdb_manage_files(rabbitmq_beam_t)
+')
+
+optional_policy(`
@@ -68607,7 +73785,16 @@ index 3698b51..136b017 100644
allow rabbitmq_epmd_t self:process signal;
allow rabbitmq_epmd_t self:fifo_file rw_fifo_file_perms;
allow rabbitmq_epmd_t self:tcp_socket create_stream_socket_perms;
-@@ -99,8 +142,5 @@ corenet_sendrecv_epmd_server_packets(rabbitmq_epmd_t)
+@@ -89,6 +129,8 @@ allow rabbitmq_epmd_t self:unix_stream_socket { accept listen };
+
+ allow rabbitmq_epmd_t rabbitmq_var_log_t:file append_file_perms;
+
++manage_files_pattern(rabbitmq_beam_t, rabbitmq_var_log_t, rabbitmq_var_log_t)
++
+ corenet_all_recvfrom_unlabeled(rabbitmq_epmd_t)
+ corenet_all_recvfrom_netlabel(rabbitmq_epmd_t)
+ corenet_tcp_sendrecv_generic_if(rabbitmq_epmd_t)
+@@ -99,8 +141,5 @@ corenet_sendrecv_epmd_server_packets(rabbitmq_epmd_t)
corenet_tcp_bind_epmd_port(rabbitmq_epmd_t)
corenet_tcp_sendrecv_epmd_port(rabbitmq_epmd_t)
@@ -68810,20 +73997,22 @@ index b31f2d7..046f5b8 100644
userdom_dontaudit_search_user_home_dirs(radvd_t)
diff --git a/raid.fc b/raid.fc
-index 5806046..5578653 100644
+index 5806046..d83ec27 100644
--- a/raid.fc
+++ b/raid.fc
-@@ -3,6 +3,9 @@
+@@ -3,6 +3,11 @@
/etc/rc\.d/init\.d/mdmonitor -- gen_context(system_u:object_r:mdadm_initrc_exec_t,s0)
++/etc/mdadm\.conf -- gen_context(system_u:object_r:mdadm_conf_t,s0)
++
+/usr/lib/systemd/system/mdmon@.* -- gen_context(system_u:object_r:mdadm_unit_file_t,s0)
+/usr/lib/systemd/system/mdmonitor.* -- gen_context(system_u:object_r:mdadm_unit_file_t,s0)
+
/sbin/iprdump -- gen_context(system_u:object_r:mdadm_exec_t,s0)
/sbin/iprinit -- gen_context(system_u:object_r:mdadm_exec_t,s0)
/sbin/iprupdate -- gen_context(system_u:object_r:mdadm_exec_t,s0)
-@@ -16,6 +19,7 @@
+@@ -16,6 +21,7 @@
/usr/sbin/iprupdate -- gen_context(system_u:object_r:mdadm_exec_t,s0)
/usr/sbin/mdadm -- gen_context(system_u:object_r:mdadm_exec_t,s0)
/usr/sbin/mdmpd -- gen_context(system_u:object_r:mdadm_exec_t,s0)
@@ -68832,7 +74021,7 @@ index 5806046..5578653 100644
/var/run/mdadm(/.*)? gen_context(system_u:object_r:mdadm_var_run_t,s0)
diff --git a/raid.if b/raid.if
-index 951db7f..98a0758 100644
+index 951db7f..c0cabe8 100644
--- a/raid.if
+++ b/raid.if
@@ -1,9 +1,8 @@
@@ -68913,7 +74102,7 @@ index 951db7f..98a0758 100644
##
##
##
-@@ -57,47 +78,94 @@ interface(`raid_run_mdadm',`
+@@ -57,47 +78,112 @@ interface(`raid_run_mdadm',`
##
##
#
@@ -68981,7 +74170,7 @@ index 951db7f..98a0758 100644
+
+########################################
+##
-+## Manage mdadm config files.
++## Read mdadm config files.
+##
+##
##
@@ -68992,7 +74181,7 @@ index 951db7f..98a0758 100644
-##
#
-interface(`raid_admin_mdadm',`
-+interface(`raid_manage_conf_files',`
++interface(`raid_read_conf_files',`
gen_require(`
- type mdadm_t, mdadm_initrc_exec_t, mdadm_var_run_t;
+ type mdadm_conf_t;
@@ -69000,7 +74189,24 @@ index 951db7f..98a0758 100644
- allow $1 mdadm_t:process { ptrace signal_perms };
- ps_process_pattern($1, mdadm_t)
--
++ read_files_pattern($1, mdadm_conf_t, mdadm_conf_t)
++')
++
++########################################
++##
++## Manage mdadm config files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`raid_manage_conf_files',`
++ gen_require(`
++ type mdadm_conf_t;
++ ')
+
- init_labeled_script_domtrans($1, mdadm_initrc_exec_t)
- domain_system_change_exemption($1)
- role_transition $2 mdadm_initrc_exec_t system_r;
@@ -69029,10 +74235,10 @@ index 951db7f..98a0758 100644
+ files_etc_filetrans($1, mdadm_conf_t, file, "mdadm.conf")
')
diff --git a/raid.te b/raid.te
-index 2c1730b..4699a1e 100644
+index 2c1730b..aa0ff54 100644
--- a/raid.te
+++ b/raid.te
-@@ -15,6 +15,15 @@ role mdadm_roles types mdadm_t;
+@@ -15,6 +15,18 @@ role mdadm_roles types mdadm_t;
type mdadm_initrc_exec_t;
init_script_file(mdadm_initrc_exec_t)
@@ -69043,12 +74249,15 @@ index 2c1730b..4699a1e 100644
+systemd_unit_file(mdadm_unit_file_t)
+
+type mdadm_tmp_t;
-+files_tmpfs_file(mdadm_tmp_t)
++files_tmp_file(mdadm_tmp_t)
++
++type mdadm_tmpfs_t;
++files_tmpfs_file(mdadm_tmpfs_t)
+
type mdadm_var_run_t alias mdadm_map_t;
files_pid_file(mdadm_var_run_t)
dev_associate(mdadm_var_run_t)
-@@ -25,23 +34,34 @@ dev_associate(mdadm_var_run_t)
+@@ -25,43 +37,68 @@ dev_associate(mdadm_var_run_t)
#
allow mdadm_t self:capability { dac_override sys_admin ipc_lock };
@@ -69066,6 +74275,10 @@ index 2c1730b..4699a1e 100644
+manage_files_pattern(mdadm_t, mdadm_tmp_t, mdadm_tmp_t)
+manage_dirs_pattern(mdadm_t, mdadm_tmp_t, mdadm_tmp_t)
+files_tmp_filetrans(mdadm_t, mdadm_tmp_t, file)
++
++manage_files_pattern(mdadm_t, mdadm_tmpfs_t, mdadm_tmpfs_t)
++manage_dirs_pattern(mdadm_t, mdadm_tmpfs_t, mdadm_tmpfs_t)
++fs_tmpfs_filetrans(mdadm_t, mdadm_tmpfs_t, file)
manage_dirs_pattern(mdadm_t, mdadm_var_run_t, mdadm_var_run_t)
manage_files_pattern(mdadm_t, mdadm_var_run_t, mdadm_var_run_t)
@@ -69087,10 +74300,12 @@ index 2c1730b..4699a1e 100644
corecmd_exec_bin(mdadm_t)
corecmd_exec_shell(mdadm_t)
-@@ -49,19 +69,29 @@ corecmd_exec_shell(mdadm_t)
+
dev_rw_sysfs(mdadm_t)
- dev_dontaudit_getattr_all_blk_files(mdadm_t)
- dev_dontaudit_getattr_all_chr_files(mdadm_t)
+-dev_dontaudit_getattr_all_blk_files(mdadm_t)
+-dev_dontaudit_getattr_all_chr_files(mdadm_t)
++dev_dontaudit_read_all_blk_files(mdadm_t)
++dev_dontaudit_read_all_chr_files(mdadm_t)
+dev_read_crash(mdadm_t)
+dev_read_framebuffer(mdadm_t)
dev_read_realtime_clock(mdadm_t)
@@ -69120,7 +74335,7 @@ index 2c1730b..4699a1e 100644
mls_file_read_all_levels(mdadm_t)
mls_file_write_all_levels(mdadm_t)
-@@ -70,15 +100,20 @@ storage_dev_filetrans_fixed_disk(mdadm_t)
+@@ -70,15 +107,20 @@ storage_dev_filetrans_fixed_disk(mdadm_t)
storage_manage_fixed_disk(mdadm_t)
storage_read_scsi_generic(mdadm_t)
storage_write_scsi_generic(mdadm_t)
@@ -69142,7 +74357,15 @@ index 2c1730b..4699a1e 100644
userdom_dontaudit_use_unpriv_user_fds(mdadm_t)
userdom_dontaudit_search_user_home_content(mdadm_t)
-@@ -93,13 +128,30 @@ optional_policy(`
+@@ -89,17 +131,38 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ dbus_system_bus_client(mdadm_t)
++')
++
++optional_policy(`
+ gpm_dontaudit_getattr_gpmctl(mdadm_t)
')
optional_policy(`
@@ -69173,6 +74396,235 @@ index 2c1730b..4699a1e 100644
+optional_policy(`
+ xserver_dontaudit_search_log(mdadm_t)
+')
+diff --git a/rasdaemon.fc b/rasdaemon.fc
+new file mode 100644
+index 0000000..8e31dd0
+--- /dev/null
++++ b/rasdaemon.fc
+@@ -0,0 +1,9 @@
++/usr/lib/systemd/system/ras-mc-ctl.* -- gen_context(system_u:object_r:rasdaemon_unit_file_t,s0)
++
++/usr/lib/systemd/system/rasdaemon.* -- gen_context(system_u:object_r:rasdaemon_unit_file_t,s0)
++
++/usr/sbin/rasdaemon -- gen_context(system_u:object_r:rasdaemon_exec_t,s0)
++
++/usr/sbin/ras-mc-ctl -- gen_context(system_u:object_r:rasdaemon_exec_t,s0)
++
++/var/lib/rasdaemon(/.*)? gen_context(system_u:object_r:rasdaemon_var_lib_t,s0)
+diff --git a/rasdaemon.if b/rasdaemon.if
+new file mode 100644
+index 0000000..a073efd
+--- /dev/null
++++ b/rasdaemon.if
+@@ -0,0 +1,156 @@
++
++## The rasdaemon program is a daemon with monitors the RAS trace events from /sys/kernel/debug/tracing
++
++########################################
++##
++## Execute TEMPLATE in the rasdaemon domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`rasdaemon_domtrans',`
++ gen_require(`
++ type rasdaemon_t, rasdaemon_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, rasdaemon_exec_t, rasdaemon_t)
++')
++
++########################################
++##
++## Search rasdaemon lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rasdaemon_search_lib',`
++ gen_require(`
++ type rasdaemon_var_lib_t;
++ ')
++
++ allow $1 rasdaemon_var_lib_t:dir search_dir_perms;
++ files_search_var_lib($1)
++')
++
++########################################
++##
++## Read rasdaemon lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rasdaemon_read_lib_files',`
++ gen_require(`
++ type rasdaemon_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ read_files_pattern($1, rasdaemon_var_lib_t, rasdaemon_var_lib_t)
++')
++
++########################################
++##
++## Manage rasdaemon lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rasdaemon_manage_lib_files',`
++ gen_require(`
++ type rasdaemon_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_files_pattern($1, rasdaemon_var_lib_t, rasdaemon_var_lib_t)
++')
++
++########################################
++##
++## Manage rasdaemon lib directories.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rasdaemon_manage_lib_dirs',`
++ gen_require(`
++ type rasdaemon_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_dirs_pattern($1, rasdaemon_var_lib_t, rasdaemon_var_lib_t)
++')
++
++########################################
++##
++## Execute rasdaemon server in the rasdaemon domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`rasdaemon_systemctl',`
++ gen_require(`
++ type rasdaemon_t;
++ type rasdaemon_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 rasdaemon_unit_file_t:file read_file_perms;
++ allow $1 rasdaemon_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, rasdaemon_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an rasdaemon environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`rasdaemon_admin',`
++ gen_require(`
++ type rasdaemon_t;
++ type rasdaemon_var_lib_t;
++ type rasdaemon_unit_file_t;
++ ')
++
++ allow $1 rasdaemon_t:process { ptrace signal_perms };
++ ps_process_pattern($1, rasdaemon_t)
++
++ files_search_var_lib($1)
++ admin_pattern($1, rasdaemon_var_lib_t)
++
++ rasdaemon_systemctl($1)
++ admin_pattern($1, rasdaemon_unit_file_t)
++ allow $1 rasdaemon_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/rasdaemon.te b/rasdaemon.te
+new file mode 100644
+index 0000000..6731d5c
+--- /dev/null
++++ b/rasdaemon.te
+@@ -0,0 +1,46 @@
++policy_module(rasdaemon, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type rasdaemon_t;
++type rasdaemon_exec_t;
++init_daemon_domain(rasdaemon_t, rasdaemon_exec_t)
++
++type rasdaemon_var_lib_t;
++files_type(rasdaemon_var_lib_t)
++
++type rasdaemon_unit_file_t;
++systemd_unit_file(rasdaemon_unit_file_t)
++
++########################################
++#
++# rasdaemon local policy
++#
++allow rasdaemon_t self:fifo_file rw_fifo_file_perms;
++allow rasdaemon_t self:unix_stream_socket create_stream_socket_perms;
++
++manage_dirs_pattern(rasdaemon_t, rasdaemon_var_lib_t, rasdaemon_var_lib_t)
++manage_files_pattern(rasdaemon_t, rasdaemon_var_lib_t, rasdaemon_var_lib_t)
++files_var_lib_filetrans(rasdaemon_t, rasdaemon_var_lib_t, { dir file })
++
++kernel_read_system_state(rasdaemon_t)
++kernel_manage_debugfs(rasdaemon_t)
++
++dev_read_raw_memory(rasdaemon_t)
++dev_read_sysfs(rasdaemon_t)
++dev_read_urand(rasdaemon_t)
++dev_rw_cpu_microcode(rasdaemon_t)
++
++modutils_dontaudit_exec_insmod(rasdaemon_t) # more info here #1030277
++
++auth_use_nsswitch(rasdaemon_t)
++
++logging_send_syslog_msg(rasdaemon_t)
++
++optional_policy(`
++ dmidecode_exec(rasdaemon_t)
++')
++
diff --git a/razor.fc b/razor.fc
index 6723f4d..6e26673 100644
--- a/razor.fc
@@ -69682,11 +75134,92 @@ index 5ddedbc..4e15f29 100644
+ milter_manage_spamass_state(razor_t)
+ ')
')
+diff --git a/rdisc.fc b/rdisc.fc
+index e9765c0..ea21331 100644
+--- a/rdisc.fc
++++ b/rdisc.fc
+@@ -1,3 +1,3 @@
+-/sbin/rdisc -- gen_context(system_u:object_r:rdisc_exec_t,s0)
++/usr/lib/systemd/system/rdisc.* -- gen_context(system_u:object_r:rdisc_unit_file_t,s0)
+
+ /usr/sbin/rdisc -- gen_context(system_u:object_r:rdisc_exec_t,s0)
+diff --git a/rdisc.if b/rdisc.if
+index 170ef52..7dd9193 100644
+--- a/rdisc.if
++++ b/rdisc.if
+@@ -18,3 +18,57 @@ interface(`rdisc_exec',`
+ corecmd_search_bin($1)
+ can_exec($1, rdisc_exec_t)
+ ')
++
++########################################
++##
++## Execute rdisc server in the rdisc domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`rdisc_systemctl',`
++ gen_require(`
++ type rdisc_t;
++ type rdisc_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 rdisc_unit_file_t:file read_file_perms;
++ allow $1 rdisc_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, rdisc_t)
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an rdisc environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`rdisc_admin',`
++ gen_require(`
++ type rdisc_t;
++ type rdisc_unit_file_t;
++ ')
++
++ allow $1 rdisc_t:process { ptrace signal_perms };
++ ps_process_pattern($1, rdisc_t)
++
++ rdisc_systemctl($1)
++ admin_pattern($1, rdisc_unit_file_t)
++ allow $1 rdisc_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
diff --git a/rdisc.te b/rdisc.te
-index 9196c1d..3dac4d9 100644
+index 9196c1d..b775931 100644
--- a/rdisc.te
+++ b/rdisc.te
-@@ -25,7 +25,6 @@ kernel_list_proc(rdisc_t)
+@@ -9,6 +9,9 @@ type rdisc_t;
+ type rdisc_exec_t;
+ init_daemon_domain(rdisc_t, rdisc_exec_t)
+
++type rdisc_unit_file_t;
++systemd_unit_file(rdisc_unit_file_t)
++
+ ########################################
+ #
+ # Local policy
+@@ -25,7 +28,6 @@ kernel_list_proc(rdisc_t)
kernel_read_proc_symlinks(rdisc_t)
kernel_read_kernel_sysctls(rdisc_t)
@@ -69694,7 +75227,7 @@ index 9196c1d..3dac4d9 100644
corenet_all_recvfrom_netlabel(rdisc_t)
corenet_udp_sendrecv_generic_if(rdisc_t)
corenet_raw_sendrecv_generic_if(rdisc_t)
-@@ -39,12 +38,9 @@ fs_search_auto_mountpoints(rdisc_t)
+@@ -39,12 +41,9 @@ fs_search_auto_mountpoints(rdisc_t)
domain_use_interactive_fds(rdisc_t)
@@ -70160,10 +75693,10 @@ index 9a8f052..3baa71a 100644
')
diff --git a/redis.fc b/redis.fc
new file mode 100644
-index 0000000..638d6b4
+index 0000000..741b785
--- /dev/null
+++ b/redis.fc
-@@ -0,0 +1,11 @@
+@@ -0,0 +1,12 @@
+/etc/rc\.d/init\.d/redis -- gen_context(system_u:object_r:redis_initrc_exec_t,s0)
+
+/usr/lib/systemd/system/redis.* -- gen_context(system_u:object_r:redis_unit_file_t,s0)
@@ -70175,18 +75708,18 @@ index 0000000..638d6b4
+/var/log/redis(/.*)? gen_context(system_u:object_r:redis_log_t,s0)
+
+/var/run/redis(/.*)? gen_context(system_u:object_r:redis_var_run_t,s0)
++/var/run/redis\.sock -- gen_context(system_u:object_r:redis_var_run_t,s0)
diff --git a/redis.if b/redis.if
new file mode 100644
-index 0000000..72a2d7b
+index 0000000..2640ab5
--- /dev/null
+++ b/redis.if
-@@ -0,0 +1,271 @@
-+
-+## redis-server SELinux policy
+@@ -0,0 +1,266 @@
++## Advanced key-value store
+
+########################################
+##
-+## Execute TEMPLATE in the redis domin.
++## Execute redis server in the redis domin.
+##
+##
+##
@@ -70220,6 +75753,7 @@ index 0000000..72a2d7b
+
+ init_labeled_script_domtrans($1, redis_initrc_exec_t)
+')
++
+########################################
+##
+## Read redis's log files.
@@ -70229,7 +75763,6 @@ index 0000000..72a2d7b
+## Domain allowed access.
+##
+##
-+##
+#
+interface(`redis_read_log',`
+ gen_require(`
@@ -70392,14 +75925,13 @@ index 0000000..72a2d7b
+ ')
+
+ systemd_exec_systemctl($1)
-+ systemd_read_fifo_file_password_run($1)
++ systemd_read_fifo_file_passwd_run($1)
+ allow $1 redis_unit_file_t:file read_file_perms;
+ allow $1 redis_unit_file_t:service manage_service_perms;
+
+ ps_process_pattern($1, redis_t)
+')
+
-+
+########################################
+##
+## All of the rules required to administrate
@@ -70419,18 +75951,14 @@ index 0000000..72a2d7b
+#
+interface(`redis_admin',`
+ gen_require(`
-+ type redis_t;
-+ type redis_initrc_exec_t;
-+ type redis_log_t;
-+ type redis_var_lib_t;
-+ type redis_var_run_t;
-+ type redis_unit_file_t;
++ type redis_t, redis_initrc_exec_t, redis_var_lib_t;
++ type redis_log_t, redis_var_run_t, redis_unit_file_t;
+ ')
+
+ allow $1 redis_t:process { ptrace signal_perms };
+ ps_process_pattern($1, redis_t)
+
-+ redis_initrc_domtrans($1)
++ init_labeled_script_domtrans($1, redis_initrc_exec_t)
+ domain_system_change_exemption($1)
+ role_transition $2 redis_initrc_exec_t system_r;
+ allow $2 system_r;
@@ -70447,6 +75975,7 @@ index 0000000..72a2d7b
+ redis_systemctl($1)
+ admin_pattern($1, redis_unit_file_t)
+ allow $1 redis_unit_file_t:service all_service_perms;
++
+ optional_policy(`
+ systemd_passwd_agent_exec($1)
+ systemd_read_fifo_file_passwd_run($1)
@@ -70454,10 +75983,10 @@ index 0000000..72a2d7b
+')
diff --git a/redis.te b/redis.te
new file mode 100644
-index 0000000..e5e9cf7
+index 0000000..51cd1fe
--- /dev/null
+++ b/redis.te
-@@ -0,0 +1,62 @@
+@@ -0,0 +1,64 @@
+policy_module(redis, 1.0.0)
+
+########################################
@@ -70505,6 +76034,8 @@ index 0000000..e5e9cf7
+manage_dirs_pattern(redis_t, redis_var_run_t, redis_var_run_t)
+manage_files_pattern(redis_t, redis_var_run_t, redis_var_run_t)
+manage_lnk_files_pattern(redis_t, redis_var_run_t, redis_var_run_t)
++manage_sock_files_pattern(redis_t, redis_var_run_t, redis_var_run_t)
++files_pid_filetrans(redis_t, redis_var_run_t, { sock_file })
+
+kernel_read_system_state(redis_t)
+
@@ -70528,7 +76059,7 @@ index 327baf0..d8691bd 100644
+
# Remote login currently has no file contexts.
diff --git a/remotelogin.if b/remotelogin.if
-index a9ce68e..31be971 100644
+index a9ce68e..92520aa 100644
--- a/remotelogin.if
+++ b/remotelogin.if
@@ -1,4 +1,4 @@
@@ -70552,24 +76083,23 @@ index a9ce68e..31be971 100644
##
##
##
-@@ -36,44 +35,3 @@ interface(`remotelogin_signal',`
+@@ -39,8 +38,7 @@ interface(`remotelogin_signal',`
- allow $1 remote_login_t:process signal;
- ')
--
--########################################
--##
+ ########################################
+ ##
-## Create, read, write, and delete
-## remote login temporary content.
--##
--##
--##
--## Domain allowed access.
--##
--##
--#
++## allow Domain to signal remote login domain.
+ ##
+ ##
+ ##
+@@ -48,32 +46,10 @@ interface(`remotelogin_signal',`
+ ##
+ ##
+ #
-interface(`remotelogin_manage_tmp_content',`
-- gen_require(`
++interface(`remotelogin_signull',`
+ gen_require(`
- type remote_login_tmp_t;
- ')
-
@@ -70591,12 +76121,14 @@ index a9ce68e..31be971 100644
-interface(`remotelogin_relabel_tmp_content',`
- gen_require(`
- type remote_login_tmp_t;
-- ')
--
++ type remote_login_t;
+ ')
+
- files_search_tmp($1)
- allow $1 remote_login_tmp_t:dir relabel_dir_perms;
- allow $1 remote_login_tmp_t:file relabel_file_perms;
--')
++ allow $1 remote_login_t:process signull;
+ ')
diff --git a/remotelogin.te b/remotelogin.te
index c51a32c..bef8238 100644
--- a/remotelogin.te
@@ -71190,10 +76722,10 @@ index b418d1c..1ad9c12 100644
xen_domtrans_xm(rgmanager_t)
')
diff --git a/rhcs.fc b/rhcs.fc
-index 47de2d6..98a4280 100644
+index 47de2d6..5ad36aa 100644
--- a/rhcs.fc
+++ b/rhcs.fc
-@@ -1,31 +1,85 @@
+@@ -1,31 +1,88 @@
-/etc/rc\.d/init\.d/dlm -- gen_context(system_u:object_r:dlm_controld_initrc_exec_t,s0)
-/etc/rc\.d/init\.d/foghorn -- gen_context(system_u:object_r:foghorn_initrc_exec_t,s0)
+/usr/sbin/dlm_controld -- gen_context(system_u:object_r:dlm_controld_exec_t,s0)
@@ -71252,6 +76784,8 @@ index 47de2d6..98a4280 100644
+/var/run/gfs_controld\.pid -- gen_context(system_u:object_r:gfs_controld_var_run_t,s0)
+/var/run/groupd\.pid -- gen_context(system_u:object_r:groupd_var_run_t,s0)
+/var/run/haproxy\.pid -- gen_context(system_u:object_r:haproxy_var_run_t,s0)
++/var/run/haproxy\.stat.* -- gen_context(system_u:object_r:haproxy_var_run_t,s0)
++/var/run/haproxy\.sock.* -- gen_context(system_u:object_r:haproxy_var_run_t,s0)
+/var/run/qdiskd\.pid -- gen_context(system_u:object_r:qdiskd_var_run_t,s0)
+
+# cluster administrative domains file spec
@@ -71275,6 +76809,7 @@ index 47de2d6..98a4280 100644
+/usr/sbin/ldirectord -- gen_context(system_u:object_r:cluster_exec_t,s0)
+/usr/sbin/rgmanager -- gen_context(system_u:object_r:cluster_exec_t,s0)
+/usr/sbin/pacemakerd -- gen_context(system_u:object_r:cluster_exec_t,s0)
++/usr/sbin/pacemaker_remoted -- gen_context(system_u:object_r:cluster_exec_t,s0)
+
+/usr/lib/pcsd/pcsd -- gen_context(system_u:object_r:cluster_exec_t,s0)
+
@@ -71303,7 +76838,7 @@ index 47de2d6..98a4280 100644
+/var/log/cluster/rgmanager\.log.* -- gen_context(system_u:object_r:cluster_var_log_t,s0)
+/var/log/pcsd(/.*)? gen_context(system_u:object_r:cluster_var_log_t,s0)
diff --git a/rhcs.if b/rhcs.if
-index 56bc01f..2e4d698 100644
+index 56bc01f..1337d42 100644
--- a/rhcs.if
+++ b/rhcs.if
@@ -1,19 +1,19 @@
@@ -71552,8 +77087,10 @@ index 56bc01f..2e4d698 100644
+ manage_files_pattern($1, groupd_tmpfs_t, groupd_tmpfs_t)
+')
+
-+########################################
-+##
+ ########################################
+ ##
+-## Read and write all cluster domains
+-## shared memory.
+## Read and write to group shared memory.
+##
+##
@@ -71573,10 +77110,8 @@ index 56bc01f..2e4d698 100644
+ manage_files_pattern($1, groupd_tmpfs_t, groupd_tmpfs_t)
+')
+
- ########################################
- ##
--## Read and write all cluster domains
--## shared memory.
++########################################
++##
+## Read and write to group shared memory.
##
##
@@ -71604,7 +77139,7 @@ index 56bc01f..2e4d698 100644
##
##
##
-@@ -393,36 +423,39 @@ interface(`rhcs_rw_cluster_semaphores',`
+@@ -393,20 +423,44 @@ interface(`rhcs_rw_cluster_semaphores',`
##
##
#
@@ -71616,49 +77151,65 @@ index 56bc01f..2e4d698 100644
')
- allow $1 groupd_t:sem { rw_sem_perms destroy };
--
-- fs_search_tmpfs($1)
-- manage_files_pattern($1, groupd_tmpfs_t, groupd_tmpfs_t)
+ files_search_pids($1)
+ stream_connect_pattern($1, cluster_pid, cluster_pid, cluster_domain)
- ')
++')
--########################################
+- fs_search_tmpfs($1)
+- manage_files_pattern($1, groupd_tmpfs_t, groupd_tmpfs_t)
+#####################################
- ##
--## Read and write groupd shared memory.
++##
+## Connect to cluster domains over a unix domain
+## stream socket.
- ##
- ##
- ##
- ## Domain allowed access.
- ##
- ##
++##
+##
+##
+## Domain allowed access.
+##
+##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rhcs_stream_connect_cluster_to',`
++ gen_require(`
++ attribute cluster_domain;
++ attribute cluster_pid;
++ ')
++
++ files_search_pids($1)
++ stream_connect_pattern($1, cluster_pid, cluster_pid, $2)
+ ')
+
+ ########################################
+ ##
+-## Read and write groupd shared memory.
++## Send a null signal to cluster.
+ ##
+ ##
+ ##
+@@ -414,15 +468,12 @@ interface(`rhcs_rw_groupd_semaphores',`
+ ##
+ ##
#
-interface(`rhcs_rw_groupd_shm',`
-+interface(`rhcs_stream_connect_cluster_to',`
++interface(`rhcs_signull_cluster',`
gen_require(`
- type groupd_t, groupd_tmpfs_t;
-+ attribute cluster_domain;
-+ attribute cluster_pid;
++ type cluster_t;
')
- allow $1 groupd_t:shm { rw_shm_perms destroy };
-
- fs_search_tmpfs($1)
- manage_files_pattern($1, groupd_tmpfs_t, groupd_tmpfs_t)
-+ files_search_pids($1)
-+ stream_connect_pattern($1, cluster_pid, cluster_pid, $2)
++ allow $1 cluster_t:process signull;
')
######################################
-@@ -446,52 +479,360 @@ interface(`rhcs_domtrans_qdiskd',`
+@@ -446,52 +497,361 @@ interface(`rhcs_domtrans_qdiskd',`
########################################
##
@@ -71709,7 +77260,11 @@ index 56bc01f..2e4d698 100644
+ files_search_var_lib($1)
+ read_files_pattern($1, cluster_var_lib_t, cluster_var_lib_t)
+')
-+
+
+- init_labeled_script_domtrans($1, { dlm_controld_initrc_exec_t foghorn_initrc_exec_t })
+- domain_system_change_exemption($1)
+- role_transition $2 { dlm_controld_initrc_exec_t foghorn_initrc_exec_t } system_r;
+- allow $2 system_r;
+#####################################
+##
+## Allow domain to manage cluster lib files
@@ -71725,16 +77280,14 @@ index 56bc01f..2e4d698 100644
+ type cluster_var_lib_t;
+ ')
-- init_labeled_script_domtrans($1, { dlm_controld_initrc_exec_t foghorn_initrc_exec_t })
-- domain_system_change_exemption($1)
-- role_transition $2 { dlm_controld_initrc_exec_t foghorn_initrc_exec_t } system_r;
-- allow $2 system_r;
+- files_search_pids($1)
+- admin_pattern($1, cluster_pid)
+ files_search_var_lib($1)
+ manage_files_pattern($1, cluster_var_lib_t, cluster_var_lib_t)
+')
-- files_search_pids($1)
-- admin_pattern($1, cluster_pid)
+- files_search_locks($1)
+- admin_pattern($1, fenced_lock_t)
+####################################
+##
+## Allow domain to relabel cluster lib files
@@ -71755,8 +77308,8 @@ index 56bc01f..2e4d698 100644
+ relabelfrom_files_pattern($1, cluster_var_lib_t, cluster_var_lib_t)
+')
-- files_search_locks($1)
-- admin_pattern($1, fenced_lock_t)
+- files_search_tmp($1)
+- admin_pattern($1, fenced_tmp_t)
+######################################
+##
+## Execute a domain transition to run cluster administrative domain.
@@ -71772,14 +77325,14 @@ index 56bc01f..2e4d698 100644
+ type cluster_t, cluster_exec_t;
+ ')
-- files_search_tmp($1)
-- admin_pattern($1, fenced_tmp_t)
+- files_search_var_lib($1)
+- admin_pattern($1, qdiskd_var_lib_t)
+ corecmd_search_bin($1)
+ domtrans_pattern($1, cluster_exec_t, cluster_t)
+')
-- files_search_var_lib($1)
-- admin_pattern($1, qdiskd_var_lib_t)
+- fs_search_tmpfs($1)
+- admin_pattern($1, cluster_tmpfs)
+#######################################
+##
+## Execute cluster init scripts in
@@ -71795,9 +77348,7 @@ index 56bc01f..2e4d698 100644
+ gen_require(`
+ type cluster_initrc_exec_t;
+ ')
-
-- fs_search_tmpfs($1)
-- admin_pattern($1, cluster_tmpfs)
++
+ init_labeled_script_domtrans($1, cluster_initrc_exec_t)
+')
+
@@ -71911,6 +77462,7 @@ index 56bc01f..2e4d698 100644
+ ')
+
+ rw_files_pattern($1, cluster_tmpfs_t, cluster_tmpfs_t)
++ delete_files_pattern($1, cluster_tmpfs_t, cluster_tmpfs_t)
+')
+
+#####################################
@@ -72048,10 +77600,10 @@ index 56bc01f..2e4d698 100644
+ allow $1 cluster_unit_file_t:service all_service_perms;
')
diff --git a/rhcs.te b/rhcs.te
-index 2c2de9a..26fba30 100644
+index 2c2de9a..4fd3b77 100644
--- a/rhcs.te
+++ b/rhcs.te
-@@ -20,6 +20,27 @@ gen_tunable(fenced_can_network_connect, false)
+@@ -20,6 +20,35 @@ gen_tunable(fenced_can_network_connect, false)
##
gen_tunable(fenced_can_ssh, false)
@@ -72076,10 +77628,18 @@ index 2c2de9a..26fba30 100644
+##
+gen_tunable(cluster_use_execmem, false)
+
++##
++##
++## Determine whether haproxy can
++## connect to all TCP ports.
++##
++##
++gen_tunable(haproxy_connect_any, false)
++
attribute cluster_domain;
attribute cluster_log;
attribute cluster_pid;
-@@ -44,34 +65,283 @@ type foghorn_initrc_exec_t;
+@@ -44,34 +73,283 @@ type foghorn_initrc_exec_t;
init_script_file(foghorn_initrc_exec_t)
rhcs_domain_template(gfs_controld)
@@ -72367,7 +77927,7 @@ index 2c2de9a..26fba30 100644
')
#####################################
-@@ -79,7 +349,7 @@ optional_policy(`
+@@ -79,9 +357,11 @@ optional_policy(`
# dlm_controld local policy
#
@@ -72375,15 +77935,19 @@ index 2c2de9a..26fba30 100644
+allow dlm_controld_t self:capability { dac_override net_admin sys_admin sys_resource };
allow dlm_controld_t self:netlink_kobject_uevent_socket create_socket_perms;
++files_pid_filetrans(dlm_controld_t, dlm_controld_var_run_t, dir)
++
stream_connect_pattern(dlm_controld_t, fenced_var_run_t, fenced_var_run_t, fenced_t)
-@@ -98,16 +368,30 @@ fs_manage_configfs_dirs(dlm_controld_t)
+ stream_connect_pattern(dlm_controld_t, groupd_var_run_t, groupd_var_run_t, groupd_t)
+
+@@ -98,16 +378,30 @@ fs_manage_configfs_dirs(dlm_controld_t)
init_rw_script_tmp_files(dlm_controld_t)
+logging_send_syslog_msg(dlm_controld_t)
+
+optional_policy(`
-+ corosync_rw_tmpfs(dlm_controld_t)
++ rhcs_rw_cluster_tmpfs(dlm_controld_t)
+')
+
+optional_policy(`
@@ -72395,9 +77959,10 @@ index 2c2de9a..26fba30 100644
# fenced local policy
#
- allow fenced_t self:capability { sys_rawio sys_resource };
+-allow fenced_t self:capability { sys_rawio sys_resource };
-allow fenced_t self:process { getsched signal_perms };
-allow fenced_t self:tcp_socket { accept listen };
++allow fenced_t self:capability { net_admin sys_rawio sys_resource };
+allow fenced_t self:process { getsched setpgid signal_perms };
+
+allow fenced_t self:tcp_socket create_stream_socket_perms;
@@ -72409,7 +77974,7 @@ index 2c2de9a..26fba30 100644
manage_files_pattern(fenced_t, fenced_lock_t, fenced_lock_t)
files_lock_filetrans(fenced_t, fenced_lock_t, file)
-@@ -118,9 +402,8 @@ files_tmp_filetrans(fenced_t, fenced_tmp_t, { file fifo_file dir })
+@@ -118,9 +412,8 @@ files_tmp_filetrans(fenced_t, fenced_tmp_t, { file fifo_file dir })
stream_connect_pattern(fenced_t, groupd_var_run_t, groupd_var_run_t, groupd_t)
@@ -72420,7 +77985,16 @@ index 2c2de9a..26fba30 100644
corecmd_exec_bin(fenced_t)
corecmd_exec_shell(fenced_t)
-@@ -148,9 +431,7 @@ corenet_tcp_sendrecv_http_port(fenced_t)
+@@ -140,6 +433,8 @@ corenet_udp_sendrecv_ionixnetmon_port(fenced_t)
+
+ corenet_sendrecv_zented_server_packets(fenced_t)
+ corenet_tcp_bind_zented_port(fenced_t)
++corenet_udp_bind_zented_port(fenced_t)
++corenet_tcp_connect_zented_port(fenced_t)
+ corenet_tcp_sendrecv_zented_port(fenced_t)
+
+ corenet_sendrecv_http_client_packets(fenced_t)
+@@ -148,9 +443,7 @@ corenet_tcp_sendrecv_http_port(fenced_t)
dev_read_sysfs(fenced_t)
dev_read_urand(fenced_t)
@@ -72431,7 +78005,7 @@ index 2c2de9a..26fba30 100644
storage_raw_read_fixed_disk(fenced_t)
storage_raw_write_fixed_disk(fenced_t)
-@@ -160,7 +441,7 @@ term_getattr_pty_fs(fenced_t)
+@@ -160,7 +453,7 @@ term_getattr_pty_fs(fenced_t)
term_use_generic_ptys(fenced_t)
term_use_ptmx(fenced_t)
@@ -72440,7 +78014,7 @@ index 2c2de9a..26fba30 100644
tunable_policy(`fenced_can_network_connect',`
corenet_sendrecv_all_client_packets(fenced_t)
-@@ -182,7 +463,8 @@ optional_policy(`
+@@ -182,7 +475,8 @@ optional_policy(`
')
optional_policy(`
@@ -72450,7 +78024,7 @@ index 2c2de9a..26fba30 100644
')
optional_policy(`
-@@ -190,12 +472,12 @@ optional_policy(`
+@@ -190,12 +484,12 @@ optional_policy(`
')
optional_policy(`
@@ -72466,7 +78040,7 @@ index 2c2de9a..26fba30 100644
')
optional_policy(`
-@@ -203,6 +485,13 @@ optional_policy(`
+@@ -203,6 +497,13 @@ optional_policy(`
snmp_manage_var_lib_dirs(fenced_t)
')
@@ -72480,7 +78054,7 @@ index 2c2de9a..26fba30 100644
#######################################
#
# foghorn local policy
-@@ -221,16 +510,18 @@ corenet_sendrecv_agentx_client_packets(foghorn_t)
+@@ -221,16 +522,18 @@ corenet_sendrecv_agentx_client_packets(foghorn_t)
corenet_tcp_connect_agentx_port(foghorn_t)
corenet_tcp_sendrecv_agentx_port(foghorn_t)
@@ -72501,7 +78075,7 @@ index 2c2de9a..26fba30 100644
snmp_stream_connect(foghorn_t)
')
-@@ -257,6 +548,8 @@ storage_getattr_removable_dev(gfs_controld_t)
+@@ -257,6 +560,8 @@ storage_getattr_removable_dev(gfs_controld_t)
init_rw_script_tmp_files(gfs_controld_t)
@@ -72510,7 +78084,7 @@ index 2c2de9a..26fba30 100644
optional_policy(`
lvm_exec(gfs_controld_t)
dev_rw_lvm_control(gfs_controld_t)
-@@ -275,10 +568,39 @@ domtrans_pattern(groupd_t, fenced_exec_t, fenced_t)
+@@ -275,10 +580,53 @@ domtrans_pattern(groupd_t, fenced_exec_t, fenced_t)
dev_list_sysfs(groupd_t)
@@ -72526,13 +78100,14 @@ index 2c2de9a..26fba30 100644
+#
+
+# bug in haproxy and process vs pid owner
-+allow haproxy_t self:capability dac_override;
++allow haproxy_t self:capability { dac_override kill };
+
+allow haproxy_t self:capability { chown setgid setuid sys_chroot sys_resource };
+allow haproxy_t self:process { fork setrlimit signal_perms };
+allow haproxy_t self:fifo_file rw_fifo_file_perms;
+allow haproxy_t self:unix_stream_socket create_stream_socket_perms;
-+allow haproxy_t self:tcp_socket { accept listen };
++allow haproxy_t self:tcp_socket create_stream_socket_perms;
++allow haproxy_t self: udp_socket create_socket_perms;
+
+manage_dirs_pattern(haproxy_t, haproxy_var_lib_t, haproxy_var_lib_t)
+manage_files_pattern(haproxy_t, haproxy_var_lib_t, haproxy_var_lib_t)
@@ -72540,19 +78115,32 @@ index 2c2de9a..26fba30 100644
+manage_sock_files_pattern(haproxy_t, haproxy_var_lib_t, haproxy_var_lib_t)
+files_var_lib_filetrans(haproxy_t, haproxy_var_lib_t, { dir file lnk_file })
+
++corenet_sendrecv_unlabeled_packets(haproxy_t)
++
+corenet_tcp_connect_commplex_link_port(haproxy_t)
+corenet_tcp_connect_commplex_main_port(haproxy_t)
+corenet_tcp_bind_commplex_main_port(haproxy_t)
++corenet_tcp_bind_http_port(haproxy_t)
++corenet_tcp_bind_http_cache_port(haproxy_t)
+
+corenet_tcp_connect_fmpro_internal_port(haproxy_t)
++corenet_tcp_connect_http_port(haproxy_t)
++corenet_tcp_connect_http_cache_port(haproxy_t)
+corenet_tcp_connect_rtp_media_port(haproxy_t)
+
+sysnet_dns_name_resolve(haproxy_t)
+
++tunable_policy(`haproxy_connect_any',`
++ corenet_tcp_connect_all_ports(haproxy_t)
++ corenet_tcp_bind_all_ports(haproxy_t)
++ corenet_sendrecv_all_packets(haproxy_t)
++ corenet_tcp_sendrecv_all_ports(haproxy_t)
++')
++
######################################
#
# qdiskd local policy
-@@ -321,6 +643,8 @@ storage_raw_write_fixed_disk(qdiskd_t)
+@@ -321,6 +669,8 @@ storage_raw_write_fixed_disk(qdiskd_t)
auth_use_nsswitch(qdiskd_t)
@@ -72922,21 +78510,25 @@ index 3f32e4b..f97ea42 100644
diff --git a/rhnsd.fc b/rhnsd.fc
new file mode 100644
-index 0000000..1936028
+index 0000000..860a91d
--- /dev/null
+++ b/rhnsd.fc
-@@ -0,0 +1,5 @@
+@@ -0,0 +1,9 @@
+/etc/rc\.d/init\.d/rhnsd -- gen_context(system_u:object_r:rhnsd_initrc_exec_t,s0)
+
++/usr/lib/systemd/system/rhnsd.* -- gen_context(system_u:object_r:rhnsd_unit_file_t,s0)
++
+/usr/sbin/rhnsd -- gen_context(system_u:object_r:rhnsd_exec_t,s0)
+
+/var/run/rhnsd\.pid -- gen_context(system_u:object_r:rhnsd_var_run_t,s0)
++
++/etc/sysconfig/rhn(/.*)? gen_context(system_u:object_r:rhnsd_conf_t,s0)
diff --git a/rhnsd.if b/rhnsd.if
new file mode 100644
-index 0000000..88087b7
+index 0000000..8a5aaf0
--- /dev/null
+++ b/rhnsd.if
-@@ -0,0 +1,74 @@
+@@ -0,0 +1,118 @@
+## policy for rhnsd
+
+########################################
@@ -72978,6 +78570,50 @@ index 0000000..88087b7
+
+########################################
+##
++## Execute rhnsd server in the rhnsd domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`rhnsd_systemctl',`
++ gen_require(`
++ type rhnsd_t;
++ type rhnsd_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 rhnsd_unit_file_t:file read_file_perms;
++ allow $1 rhnsd_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, rhnsd_t)
++')
++
++######################################
++##
++## Allow the specified domain to manage
++## rhnsd configuration files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rhnsd_manage_config',`
++ gen_require(`
++ type rhnsd_conf_t;
++ ')
++
++ files_search_etc($1)
++ manage_files_pattern( $1, rhnsd_conf_t, rhnsd_conf_t)
++')
++
++########################################
++##
+## All of the rules required to administrate
+## an rhnsd environment
+##
@@ -73013,10 +78649,10 @@ index 0000000..88087b7
+')
diff --git a/rhnsd.te b/rhnsd.te
new file mode 100644
-index 0000000..0e965c3
+index 0000000..898d82c
--- /dev/null
+++ b/rhnsd.te
-@@ -0,0 +1,40 @@
+@@ -0,0 +1,47 @@
+policy_module(rhnsd, 1.0.0)
+
+########################################
@@ -73034,6 +78670,12 @@ index 0000000..0e965c3
+type rhnsd_initrc_exec_t;
+init_script_file(rhnsd_initrc_exec_t)
+
++type rhnsd_unit_file_t;
++systemd_unit_file(rhnsd_unit_file_t)
++
++type rhnsd_conf_t;
++files_config_file(rhnsd_conf_t)
++
+########################################
+#
+# rhnsd local policy
@@ -73048,17 +78690,18 @@ index 0000000..0e965c3
+manage_files_pattern(rhnsd_t, rhnsd_var_run_t, rhnsd_var_run_t)
+files_pid_filetrans(rhnsd_t, rhnsd_var_run_t, { dir file })
+
-+corecmd_exec_bin(rhnsd_t)
++manage_files_pattern(rhnsd_t, rhnsd_conf_t, rhnsd_conf_t)
+
++corecmd_exec_bin(rhnsd_t)
+
+logging_send_syslog_msg(rhnsd_t)
+
+optional_policy(`
-+ # execute rhn_check
-+ rpm_domtrans(rhnsd_t)
++ # execute rhn_check
++ rpm_domtrans(rhnsd_t)
+')
diff --git a/rhsmcertd.if b/rhsmcertd.if
-index 6dbc905..78746ef 100644
+index 6dbc905..4b17c93 100644
--- a/rhsmcertd.if
+++ b/rhsmcertd.if
@@ -1,8 +1,8 @@
@@ -73163,14 +78806,33 @@ index 6dbc905..78746ef 100644
##
-## Connect to rhsmcertd with a
-## unix domain stream socket.
-+## Read/wirte inherited lock files.
++## Read rhsmcertd PID files.
##
##
##
-@@ -207,6 +202,26 @@ interface(`rhsmcertd_read_pid_files',`
+@@ -207,6 +202,45 @@ interface(`rhsmcertd_read_pid_files',`
##
##
#
++interface(`rhsmcertd_manage_pid_files',`
++ gen_require(`
++ type rhsmcertd_var_run_t;
++ ')
++
++ files_search_pids($1)
++ manage_files_pattern($1, rhsmcertd_var_run_t, rhsmcertd_var_run_t)
++')
++
++########################################
++##
++## Read/wirte inherited lock files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
+interface(`rhsmcertd_rw_inherited_lock_files',`
+ gen_require(`
+ type rhsmcertd_lock_t;
@@ -73194,7 +78856,7 @@ index 6dbc905..78746ef 100644
interface(`rhsmcertd_stream_connect',`
gen_require(`
type rhsmcertd_t, rhsmcertd_var_run_t;
-@@ -239,30 +254,29 @@ interface(`rhsmcertd_dbus_chat',`
+@@ -239,30 +273,29 @@ interface(`rhsmcertd_dbus_chat',`
######################################
##
@@ -73238,7 +78900,7 @@ index 6dbc905..78746ef 100644
##
##
##
-@@ -270,35 +284,41 @@ interface(`rhsmcertd_dontaudit_dbus_chat',`
+@@ -270,35 +303,41 @@ interface(`rhsmcertd_dontaudit_dbus_chat',`
##
##
##
@@ -73270,24 +78932,24 @@ index 6dbc905..78746ef 100644
+ tunable_policy(`deny_ptrace',`',`
+ allow $1 rhsmcertd_t:process ptrace;
+ ')
-
-- logging_search_logs($1)
-- admin_pattern($1, rhsmcertd_log_t)
++
+ rhsmcertd_initrc_domtrans($1)
+ domain_system_change_exemption($1)
+ role_transition $2 rhsmcertd_initrc_exec_t system_r;
+ allow $2 system_r;
-- files_search_var_lib($1)
-- admin_pattern($1, rhsmcertd_var_lib_t)
+- logging_search_logs($1)
+- admin_pattern($1, rhsmcertd_log_t)
+ logging_search_logs($1)
+ admin_pattern($1, rhsmcertd_log_t)
-- files_search_pids($1)
-- admin_pattern($1, rhsmcertd_var_run_t)
+- files_search_var_lib($1)
+- admin_pattern($1, rhsmcertd_var_lib_t)
+ files_search_var_lib($1)
+ admin_pattern($1, rhsmcertd_var_lib_t)
-+
+
+- files_search_pids($1)
+- admin_pattern($1, rhsmcertd_var_run_t)
+ files_search_pids($1)
+ admin_pattern($1, rhsmcertd_var_run_t)
+
@@ -73298,7 +78960,7 @@ index 6dbc905..78746ef 100644
- admin_pattern($1, rhsmcertd_lock_t)
')
diff --git a/rhsmcertd.te b/rhsmcertd.te
-index 1cedd70..0369e30 100644
+index 1cedd70..d193f7a 100644
--- a/rhsmcertd.te
+++ b/rhsmcertd.te
@@ -30,14 +30,13 @@ files_pid_file(rhsmcertd_var_run_t)
@@ -73319,12 +78981,15 @@ index 1cedd70..0369e30 100644
manage_files_pattern(rhsmcertd_t, rhsmcertd_lock_t, rhsmcertd_lock_t)
files_lock_filetrans(rhsmcertd_t, rhsmcertd_lock_t, file)
-@@ -52,21 +51,39 @@ files_pid_filetrans(rhsmcertd_t, rhsmcertd_var_run_t, { file dir })
+@@ -51,22 +50,47 @@ files_pid_filetrans(rhsmcertd_t, rhsmcertd_var_run_t, { file dir })
+
kernel_read_network_state(rhsmcertd_t)
kernel_read_system_state(rhsmcertd_t)
-
-+corenet_tcp_connect_http_port(rhsmcertd_t)
++kernel_read_sysctl(rhsmcertd_t)
+
++corenet_tcp_connect_http_port(rhsmcertd_t)
++corenet_tcp_connect_squid_port(rhsmcertd_t)
+
corecmd_exec_bin(rhsmcertd_t)
+corecmd_exec_shell(rhsmcertd_t)
@@ -73340,11 +79005,11 @@ index 1cedd70..0369e30 100644
+files_manage_system_conf_files(rhsmcertd_t)
+
+auth_read_passwd(rhsmcertd_t)
++
++init_read_state(rhsmcertd_t)
-miscfiles_read_localization(rhsmcertd_t)
-miscfiles_read_generic_certs(rhsmcertd_t)
-+init_read_state(rhsmcertd_t)
-+
+logging_send_syslog_msg(rhsmcertd_t)
+
+miscfiles_manage_cert_files(rhsmcertd_t)
@@ -73361,7 +79026,12 @@ index 1cedd70..0369e30 100644
+')
+
+optional_policy(`
++ rhnsd_manage_config(rhsmcertd_t)
++')
++
++optional_policy(`
rpm_read_db(rhsmcertd_t)
++ rpm_signull(rhsmcertd_t)
')
diff --git a/ricci.if b/ricci.if
index 2ab3ed1..23d579c 100644
@@ -73752,6 +79422,68 @@ index 9702ed2..a265af9 100644
optional_policy(`
ccs_stream_connect(ricci_modstorage_t)
+diff --git a/rkhunter.fc b/rkhunter.fc
+new file mode 100644
+index 0000000..645a9cc
+--- /dev/null
++++ b/rkhunter.fc
+@@ -0,0 +1 @@
++/var/lib/rkhunter(/.*)? gen_context(system_u:object_r:rkhunter_var_lib_t,s0)
+diff --git a/rkhunter.if b/rkhunter.if
+new file mode 100644
+index 0000000..0be4cee
+--- /dev/null
++++ b/rkhunter.if
+@@ -0,0 +1,39 @@
++## policy for rkhunter
++
++########################################
++##
++## Append rkhunter lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rkhunter_append_lib_files',`
++ gen_require(`
++ type rkhunter_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ append_files_pattern($1, rkhunter_var_lib_t, rkhunter_var_lib_t)
++')
++
++########################################
++##
++## Manage rkhunter lib files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rkhunter_manage_lib_files',`
++ gen_require(`
++ type rkhunter_var_lib_t;
++ ')
++
++ files_search_var_lib($1)
++ manage_files_pattern($1, rkhunter_var_lib_t, rkhunter_var_lib_t)
++')
+diff --git a/rkhunter.te b/rkhunter.te
+new file mode 100644
+index 0000000..aa2d09e
+--- /dev/null
++++ b/rkhunter.te
+@@ -0,0 +1,4 @@
++policy_module(rhhunter, 1.0)
++
++type rkhunter_var_lib_t;
++files_type(rkhunter_var_lib_t)
diff --git a/rlogin.fc b/rlogin.fc
index f111877..e361ee9 100644
--- a/rlogin.fc
@@ -74544,7 +80276,7 @@ index 3bd6446..eec0a35 100644
+ allow $1 var_lib_nfs_t:file relabel_file_perms;
')
diff --git a/rpc.te b/rpc.te
-index e5212e6..022f7fc 100644
+index e5212e6..fa69f22 100644
--- a/rpc.te
+++ b/rpc.te
@@ -1,4 +1,4 @@
@@ -74730,35 +80462,38 @@ index e5212e6..022f7fc 100644
optional_policy(`
automount_signal(rpcd_t)
-@@ -174,19 +110,23 @@ optional_policy(`
+@@ -174,19 +110,27 @@ optional_policy(`
')
optional_policy(`
-- nis_read_ypserv_config(rpcd_t)
+ domain_unconfined_signal(rpcd_t)
++')
++
++optional_policy(`
++ quota_manage_db(rpcd_t)
++')
++
++optional_policy(`
+ nis_read_ypserv_config(rpcd_t)
')
optional_policy(`
- quota_manage_db_files(rpcd_t)
-+ quota_manage_db(rpcd_t)
++ quota_read_db(rpcd_t)
')
optional_policy(`
- rgmanager_manage_tmp_files(rpcd_t)
-+ nis_read_ypserv_config(rpcd_t)
++ rhcs_manage_cluster_tmp_files(rpcd_t)
')
optional_policy(`
- unconfined_signal(rpcd_t)
-+ quota_read_db(rpcd_t)
-+')
-+
-+optional_policy(`
-+ rhcs_manage_cluster_tmp_files(rpcd_t)
++ samba_stream_connect_nmbd(rpcd_t)
')
########################################
-@@ -195,41 +135,56 @@ optional_policy(`
+@@ -195,41 +139,56 @@ optional_policy(`
#
allow nfsd_t self:capability { dac_override dac_read_search sys_admin sys_resource };
@@ -74823,7 +80558,7 @@ index e5212e6..022f7fc 100644
miscfiles_manage_public_files(nfsd_t)
')
-@@ -238,7 +193,6 @@ tunable_policy(`nfs_export_all_rw',`
+@@ -238,7 +197,6 @@ tunable_policy(`nfs_export_all_rw',`
dev_getattr_all_chr_files(nfsd_t)
fs_read_noxattr_fs_files(nfsd_t)
@@ -74831,7 +80566,7 @@ index e5212e6..022f7fc 100644
')
tunable_policy(`nfs_export_all_ro',`
-@@ -250,12 +204,12 @@ tunable_policy(`nfs_export_all_ro',`
+@@ -250,12 +208,12 @@ tunable_policy(`nfs_export_all_ro',`
fs_read_noxattr_fs_files(nfsd_t)
@@ -74846,7 +80581,16 @@ index e5212e6..022f7fc 100644
')
########################################
-@@ -271,6 +225,7 @@ manage_dirs_pattern(gssd_t, gssd_tmp_t, gssd_tmp_t)
+@@ -263,7 +221,7 @@ optional_policy(`
+ # GSSD local policy
+ #
+
+-allow gssd_t self:capability { dac_override dac_read_search setuid sys_nice };
++allow gssd_t self:capability { dac_override dac_read_search setuid setgid sys_nice };
+ allow gssd_t self:process { getsched setsched };
+ allow gssd_t self:fifo_file rw_fifo_file_perms;
+
+@@ -271,6 +229,7 @@ manage_dirs_pattern(gssd_t, gssd_tmp_t, gssd_tmp_t)
manage_files_pattern(gssd_t, gssd_tmp_t, gssd_tmp_t)
files_tmp_filetrans(gssd_t, gssd_tmp_t, { file dir })
@@ -74854,7 +80598,7 @@ index e5212e6..022f7fc 100644
kernel_read_network_state(gssd_t)
kernel_read_network_state_symlinks(gssd_t)
kernel_request_load_module(gssd_t)
-@@ -279,25 +234,29 @@ kernel_signal(gssd_t)
+@@ -279,25 +238,30 @@ kernel_signal(gssd_t)
corecmd_exec_bin(gssd_t)
@@ -74876,6 +80620,7 @@ index e5212e6..022f7fc 100644
miscfiles_read_generic_certs(gssd_t)
userdom_signal_all_users(gssd_t)
++userdom_manage_all_users_keys(gssd_t)
-tunable_policy(`allow_gssd_read_tmp',`
+tunable_policy(`gssd_read_tmp',`
@@ -74887,7 +80632,7 @@ index e5212e6..022f7fc 100644
')
optional_policy(`
-@@ -306,8 +265,11 @@ optional_policy(`
+@@ -306,8 +270,11 @@ optional_policy(`
optional_policy(`
kerberos_keytab_template(gssd, gssd_t)
@@ -75083,10 +80828,10 @@ index c49828c..56cb0c2 100644
sysnet_dns_name_resolve(rpcbind_t)
diff --git a/rpm.fc b/rpm.fc
-index ebe91fc..6392cad 100644
+index ebe91fc..576ca21 100644
--- a/rpm.fc
+++ b/rpm.fc
-@@ -1,61 +1,72 @@
+@@ -1,61 +1,74 @@
-/bin/rpm -- gen_context(system_u:object_r:rpm_exec_t,s0)
-/etc/rc\.d/init\.d/bcfg2 -- gen_context(system_u:object_r:rpm_initrc_exec_t,s0)
@@ -75116,6 +80861,8 @@ index ebe91fc..6392cad 100644
/usr/libexec/packagekitd -- gen_context(system_u:object_r:rpm_exec_t,s0)
/usr/libexec/yumDBUSBackend.py -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/libexec/pegasus/pycmpiLMI_Software-cimprovagt -- gen_context(system_u:object_r:rpm_exec_t,s0)
++
++/usr/sbin/yum-complete-transaction -- gen_context(system_u:object_r:rpm_exec_t,s0)
-/usr/sbin/bcfg2 -- gen_context(system_u:object_r:rpm_exec_t,s0)
-/usr/sbin/pirut -- gen_context(system_u:object_r:rpm_exec_t,s0)
@@ -75134,25 +80881,14 @@ index ebe91fc..6392cad 100644
-/usr/sbin/synaptic -- gen_context(system_u:object_r:rpm_exec_t,s0)
-/var/cache/PackageKit(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
-/var/lib/PackageKit(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
--')
-+/usr/sbin/yum-complete-transaction -- gen_context(system_u:object_r:rpm_exec_t,s0)
-
--/usr/share/yumex/yumex-yum-backend -- gen_context(system_u:object_r:rpm_exec_t,s0)
--/usr/share/yumex/yum_childtask\.py -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/sbin/system-install-packages -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/sbin/yum-updatesd -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/sbin/yum-cron -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/sbin/packagekitd -- gen_context(system_u:object_r:rpm_exec_t,s0)
-
--/var/cache/bcfg2(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
--/var/cache/yum(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
++
+/usr/share/yumex/yumex-yum-backend -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/share/yumex/yum_childtask\.py -- gen_context(system_u:object_r:rpm_exec_t,s0)
-
--/var/lib/alternatives(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
--/var/lib/rpm(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
--/var/lib/YaST2(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
--/var/lib/yum(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
++
+ifdef(`distro_redhat', `
+/usr/sbin/bcfg2 -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/bin/package-cleanup -- gen_context(system_u:object_r:rpm_exec_t,s0)
@@ -75166,31 +80902,41 @@ index ebe91fc..6392cad 100644
+/usr/sbin/synaptic -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/bin/apt-get -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/usr/bin/apt-shell -- gen_context(system_u:object_r:rpm_exec_t,s0)
-+')
-+
+ ')
+
+-/usr/share/yumex/yumex-yum-backend -- gen_context(system_u:object_r:rpm_exec_t,s0)
+-/usr/share/yumex/yum_childtask\.py -- gen_context(system_u:object_r:rpm_exec_t,s0)
+/var/cache/PackageKit(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
+/var/cache/yum(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
+/var/cache/dnf(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
--/var/lock/bcfg2\.run -- gen_context(system_u:object_r:rpm_lock_t,s0)
+-/var/cache/bcfg2(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
+-/var/cache/yum(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
+/var/lib/alternatives(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+/var/lib/PackageKit(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+/var/lib/rpm(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+/var/lib/yum(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+/var/lib/dnf(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+-/var/lib/alternatives(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+-/var/lib/rpm(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+-/var/lib/YaST2(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
+-/var/lib/yum(/.*)? gen_context(system_u:object_r:rpm_var_lib_t,s0)
++/var/log/yum\.log.* -- gen_context(system_u:object_r:rpm_log_t,s0)
++/var/log/up2date.* -- gen_context(system_u:object_r:rpm_log_t,s0)
+
+-/var/lock/bcfg2\.run -- gen_context(system_u:object_r:rpm_lock_t,s0)
+
-/var/log/YaST2(/.*)? gen_context(system_u:object_r:rpm_log_t,s0)
-/var/log/yum\.log.* -- gen_context(system_u:object_r:rpm_log_t,s0)
-+/var/log/yum\.log.* -- gen_context(system_u:object_r:rpm_log_t,s0)
++/var/spool/up2date(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
-/var/spool/up2date(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
-+/var/spool/up2date(/.*)? gen_context(system_u:object_r:rpm_var_cache_t,s0)
++/var/run/yum.* -- gen_context(system_u:object_r:rpm_var_run_t,s0)
++/var/run/PackageKit(/.*)? gen_context(system_u:object_r:rpm_var_run_t,s0)
-/var/run/yum.* -- gen_context(system_u:object_r:rpm_var_run_t,s0)
-/var/run/PackageKit(/.*)? gen_context(system_u:object_r:rpm_var_run_t,s0)
-+/var/run/yum.* -- gen_context(system_u:object_r:rpm_var_run_t,s0)
-+/var/run/PackageKit(/.*)? gen_context(system_u:object_r:rpm_var_run_t,s0)
-+
+# SuSE
+ifdef(`distro_suse', `
+/usr/bin/online_update -- gen_context(system_u:object_r:rpm_exec_t,s0)
@@ -75204,7 +80950,7 @@ index ebe91fc..6392cad 100644
+/sbin/cpio -- gen_context(system_u:object_r:rpm_exec_t,s0)
')
diff --git a/rpm.if b/rpm.if
-index 0628d50..cafc027 100644
+index 0628d50..e9dbd7e 100644
--- a/rpm.if
+++ b/rpm.if
@@ -1,8 +1,8 @@
@@ -75463,16 +81209,34 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -302,7 +378,7 @@ interface(`rpm_manage_log',`
+@@ -302,7 +378,25 @@ interface(`rpm_manage_log',`
########################################
##
-## Inherit and use rpm script file descriptors.
++## Create rpm logs with an correct label.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`rpm_named_filetrans_log_files',`
++ gen_require(`
++ type rpm_log_t;
++ ')
++ logging_log_named_filetrans($1, rpm_log_t, file, "yum.log")
++ logging_log_named_filetrans($1, rpm_log_t, file, "up2date")
++')
++
++########################################
++##
+## Inherit and use file descriptors from RPM scripts.
##
##
##
-@@ -320,8 +396,8 @@ interface(`rpm_use_script_fds',`
+@@ -320,8 +414,8 @@ interface(`rpm_use_script_fds',`
########################################
##
@@ -75483,7 +81247,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -335,12 +411,15 @@ interface(`rpm_manage_script_tmp_files',`
+@@ -335,12 +429,15 @@ interface(`rpm_manage_script_tmp_files',`
')
files_search_tmp($1)
@@ -75500,7 +81264,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -353,14 +432,13 @@ interface(`rpm_append_tmp_files',`
+@@ -353,14 +450,13 @@ interface(`rpm_append_tmp_files',`
type rpm_tmp_t;
')
@@ -75518,7 +81282,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -374,12 +452,14 @@ interface(`rpm_manage_tmp_files',`
+@@ -374,12 +470,14 @@ interface(`rpm_manage_tmp_files',`
')
files_search_tmp($1)
@@ -75534,7 +81298,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -399,7 +479,7 @@ interface(`rpm_read_script_tmp_files',`
+@@ -399,7 +497,7 @@ interface(`rpm_read_script_tmp_files',`
########################################
##
@@ -75543,7 +81307,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -420,8 +500,7 @@ interface(`rpm_read_cache',`
+@@ -420,8 +518,7 @@ interface(`rpm_read_cache',`
########################################
##
@@ -75553,7 +81317,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -442,7 +521,7 @@ interface(`rpm_manage_cache',`
+@@ -442,7 +539,7 @@ interface(`rpm_manage_cache',`
########################################
##
@@ -75562,7 +81326,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -459,11 +538,12 @@ interface(`rpm_read_db',`
+@@ -459,11 +556,12 @@ interface(`rpm_read_db',`
allow $1 rpm_var_lib_t:dir list_dir_perms;
read_files_pattern($1, rpm_var_lib_t, rpm_var_lib_t)
read_lnk_files_pattern($1, rpm_var_lib_t, rpm_var_lib_t)
@@ -75576,7 +81340,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -482,8 +562,7 @@ interface(`rpm_delete_db',`
+@@ -482,8 +580,7 @@ interface(`rpm_delete_db',`
########################################
##
@@ -75586,7 +81350,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -503,8 +582,28 @@ interface(`rpm_manage_db',`
+@@ -503,8 +600,28 @@ interface(`rpm_manage_db',`
########################################
##
@@ -75616,7 +81380,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -517,7 +616,7 @@ interface(`rpm_dontaudit_manage_db',`
+@@ -517,7 +634,7 @@ interface(`rpm_dontaudit_manage_db',`
type rpm_var_lib_t;
')
@@ -75625,7 +81389,7 @@ index 0628d50..cafc027 100644
dontaudit $1 rpm_var_lib_t:file manage_file_perms;
dontaudit $1 rpm_var_lib_t:lnk_file manage_lnk_file_perms;
')
-@@ -543,8 +642,7 @@ interface(`rpm_read_pid_files',`
+@@ -543,8 +660,7 @@ interface(`rpm_read_pid_files',`
#####################################
##
@@ -75635,7 +81399,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -563,8 +661,7 @@ interface(`rpm_manage_pid_files',`
+@@ -563,8 +679,7 @@ interface(`rpm_manage_pid_files',`
######################################
##
@@ -75645,7 +81409,7 @@ index 0628d50..cafc027 100644
##
##
##
-@@ -573,94 +670,72 @@ interface(`rpm_manage_pid_files',`
+@@ -573,94 +688,72 @@ interface(`rpm_manage_pid_files',`
##
#
interface(`rpm_pid_filetrans',`
@@ -75777,7 +81541,7 @@ index 0628d50..cafc027 100644
+ allow rpm_script_t $1:process sigchld;
')
diff --git a/rpm.te b/rpm.te
-index 5cbe81c..5b28e97 100644
+index 5cbe81c..a461faa 100644
--- a/rpm.te
+++ b/rpm.te
@@ -1,15 +1,13 @@
@@ -76068,7 +81832,7 @@ index 5cbe81c..5b28e97 100644
kernel_read_crypto_sysctls(rpm_script_t)
kernel_read_kernel_sysctls(rpm_script_t)
-@@ -277,45 +293,27 @@ kernel_read_network_state(rpm_script_t)
+@@ -277,45 +293,29 @@ kernel_read_network_state(rpm_script_t)
kernel_list_all_proc(rpm_script_t)
kernel_read_software_raid_state(rpm_script_t)
@@ -76083,6 +81847,8 @@ index 5cbe81c..5b28e97 100644
-corenet_tcp_sendrecv_http_port(rpm_script_t)
-
-corecmd_exec_all_executables(rpm_script_t)
++# needed by unbound-anchor
++corenet_udp_bind_all_unreserved_ports(rpm_script_t)
dev_list_sysfs(rpm_script_t)
+
@@ -76118,7 +81884,7 @@ index 5cbe81c..5b28e97 100644
mls_file_read_all_levels(rpm_script_t)
mls_file_write_all_levels(rpm_script_t)
-@@ -331,30 +329,48 @@ storage_raw_write_fixed_disk(rpm_script_t)
+@@ -331,30 +331,52 @@ storage_raw_write_fixed_disk(rpm_script_t)
term_getattr_unallocated_ttys(rpm_script_t)
term_list_ptys(rpm_script_t)
@@ -76145,6 +81911,9 @@ index 5cbe81c..5b28e97 100644
+files_exec_usr_files(rpm_script_t)
+files_relabel_all_files(rpm_script_t)
+
++init_disable_services(rpm_script_t)
++init_enable_services(rpm_script_t)
++init_reload_services(rpm_script_t)
init_domtrans_script(rpm_script_t)
init_telinit(rpm_script_t)
@@ -76156,6 +81925,7 @@ index 5cbe81c..5b28e97 100644
+libs_ldconfig_exec_entry_type(rpm_script_t)
logging_send_syslog_msg(rpm_script_t)
++logging_send_audit_msgs(rpm_script_t)
-miscfiles_read_localization(rpm_script_t)
-
@@ -76176,7 +81946,7 @@ index 5cbe81c..5b28e97 100644
ifdef(`distro_redhat',`
optional_policy(`
-@@ -363,41 +379,61 @@ ifdef(`distro_redhat',`
+@@ -363,41 +385,71 @@ ifdef(`distro_redhat',`
')
')
@@ -76191,11 +81961,19 @@ index 5cbe81c..5b28e97 100644
+')
+
+optional_policy(`
++ bind_systemctl(rpm_script_t)
++')
++
++optional_policy(`
+ certmonger_dbus_chat(rpm_script_t)
+')
+
+optional_policy(`
+ cups_filetrans_named_content(rpm_script_t)
++')
++
++optional_policy(`
++ sblim_filetrans_named_content(rpm_script_t)
')
optional_policy(`
@@ -76206,6 +81984,8 @@ index 5cbe81c..5b28e97 100644
- ')
+ optional_policy(`
+ systemd_dbus_chat_logind(rpm_script_t)
++ systemd_dbus_chat_timedated(rpm_script_t)
++ systemd_dbus_chat_localed(rpm_script_t)
+ ')
+')
+
@@ -76248,7 +82028,7 @@ index 5cbe81c..5b28e97 100644
optional_policy(`
java_domtrans_unconfined(rpm_script_t)
-@@ -409,6 +445,6 @@ optional_policy(`
+@@ -409,6 +461,6 @@ optional_policy(`
')
optional_policy(`
@@ -76709,7 +82489,7 @@ index f1140ef..8afe362 100644
+ files_pid_filetrans($1, rsync_var_run_t, file, "rsyncd.lock")
')
diff --git a/rsync.te b/rsync.te
-index e3e7c96..ec50426 100644
+index e3e7c96..d7db2d9 100644
--- a/rsync.te
+++ b/rsync.te
@@ -1,4 +1,4 @@
@@ -76836,7 +82616,7 @@ index e3e7c96..ec50426 100644
logging_log_filetrans(rsync_t, rsync_log_t, file)
manage_dirs_pattern(rsync_t, rsync_tmp_t, rsync_tmp_t)
-@@ -108,91 +96,80 @@ kernel_read_kernel_sysctls(rsync_t)
+@@ -108,91 +96,78 @@ kernel_read_kernel_sysctls(rsync_t)
kernel_read_system_state(rsync_t)
kernel_read_network_state(rsync_t)
@@ -76902,9 +82682,7 @@ index e3e7c96..ec50426 100644
+
+tunable_policy(`rsync_full_access',`
+ allow rsync_t self:capability { dac_override dac_read_search };
-+ files_manage_non_security_dirs(rsync_t)
-+ files_manage_non_security_files(rsync_t)
-+ #files_relabel_non_security_files(rsync_t)
++ files_manage_non_auth_files(rsync_t)
')
tunable_policy(`rsync_export_all_ro',`
@@ -76967,7 +82745,7 @@ index e3e7c96..ec50426 100644
')
diff --git a/rtas.fc b/rtas.fc
new file mode 100644
-index 0000000..25d96cb
+index 0000000..4552e91
--- /dev/null
+++ b/rtas.fc
@@ -0,0 +1,13 @@
@@ -76979,23 +82757,23 @@ index 0000000..25d96cb
+/var/lock/.*librtas -- gen_context(system_u:object_r:rtas_errd_var_lock_t)
+
+/var/log/rtas_errd.* -- gen_context(system_u:object_r:rtas_errd_log_t)
-+/var/log/platform -- gen_context(system_u:object_r:rtas_errd_log_t)
-+/var/log/epow_status -- gen_context(system_u:object_r:rtas_errd_log_t)
++/var/log/platform.* -- gen_context(system_u:object_r:rtas_errd_log_t)
++/var/log/epow_status.* -- gen_context(system_u:object_r:rtas_errd_log_t)
+
+/var/run/rtas_errd.* -- gen_context(system_u:object_r:rtas_errd_var_run_t,s0)
+
diff --git a/rtas.if b/rtas.if
new file mode 100644
-index 0000000..9381936
+index 0000000..0ec3302
--- /dev/null
+++ b/rtas.if
-@@ -0,0 +1,166 @@
+@@ -0,0 +1,162 @@
+
-+## rtas_errd - Platform diagnostics report firmware events
++## Platform diagnostics report firmware events.
+
+########################################
+##
-+## Execute TEMPLATE in the rtas_errd domin.
++## Execute rtas_errd in the rtas_errd domin.
+##
+##
+##
@@ -77011,6 +82789,7 @@ index 0000000..9381936
+ corecmd_search_bin($1)
+ domtrans_pattern($1, rtas_errd_exec_t, rtas_errd_t)
+')
++
+########################################
+##
+## Read rtas_errd's log files.
@@ -77070,6 +82849,7 @@ index 0000000..9381936
+ manage_files_pattern($1, rtas_errd_log_t, rtas_errd_log_t)
+ manage_lnk_files_pattern($1, rtas_errd_log_t, rtas_errd_log_t)
+')
++
+########################################
+##
+## Read rtas_errd PID files.
@@ -77106,7 +82886,7 @@ index 0000000..9381936
+ ')
+
+ systemd_exec_systemctl($1)
-+ systemd_read_fifo_file_passwd_run($1)
++ systemd_read_fifo_file_passwd_run($1)
+ allow $1 rtas_errd_unit_file_t:file read_file_perms;
+ allow $1 rtas_errd_unit_file_t:service manage_service_perms;
+
@@ -77124,19 +82904,12 @@ index 0000000..9381936
+## Domain allowed access.
+##
+##
-+##
-+##
-+## Role allowed access.
-+##
-+##
-+##
+#
+interface(`rtas_errd_admin',`
+ gen_require(`
+ type rtas_errd_t;
-+ type rtas_errd_log_t;
-+ type rtas_errd_var_run_t;
-+ type rtas_errd_unit_file_t;
++ type rtas_errd_log_t, rtas_errd_var_run_t;
++ type rtas_errd_unit_file_t;
+ ')
+
+ allow $1 rtas_errd_t:process { ptrace signal_perms };
@@ -77151,6 +82924,7 @@ index 0000000..9381936
+ rtas_errd_systemctl($1)
+ admin_pattern($1, rtas_errd_unit_file_t)
+ allow $1 rtas_errd_unit_file_t:service all_service_perms;
++
+ optional_policy(`
+ systemd_passwd_agent_exec($1)
+ systemd_read_fifo_file_passwd_run($1)
@@ -77158,10 +82932,10 @@ index 0000000..9381936
+')
diff --git a/rtas.te b/rtas.te
new file mode 100644
-index 0000000..4e6663f
+index 0000000..9a5164c
--- /dev/null
+++ b/rtas.te
-@@ -0,0 +1,60 @@
+@@ -0,0 +1,95 @@
+policy_module(rtas, 1.0.0)
+
+########################################
@@ -77185,13 +82959,19 @@ index 0000000..4e6663f
+type rtas_errd_unit_file_t;
+systemd_unit_file(rtas_errd_unit_file_t)
+
++type rtas_errd_tmp_t;
++files_tmp_file(rtas_errd_tmp_t)
++
++type rtas_errd_tmpfs_t;
++files_tmpfs_file(rtas_errd_tmpfs_t)
++
+########################################
+#
+# rtas_errd local policy
+#
+
-+allow rtas_errd_t self:capability sys_admin;
-+allow rtas_errd_t self:process fork;
++allow rtas_errd_t self:capability { net_admin chown sys_admin };
++allow rtas_errd_t self:process { fork signull };
+allow rtas_errd_t self:fifo_file rw_fifo_file_perms;
+allow rtas_errd_t self:unix_stream_socket create_stream_socket_perms;
+
@@ -77209,19 +82989,48 @@ index 0000000..4e6663f
+manage_lnk_files_pattern(rtas_errd_t, rtas_errd_var_run_t, rtas_errd_var_run_t)
+files_pid_filetrans(rtas_errd_t, rtas_errd_var_run_t, { dir file lnk_file })
+
++manage_files_pattern(rtas_errd_t, rtas_errd_tmp_t, rtas_errd_tmp_t)
++manage_dirs_pattern(rtas_errd_t, rtas_errd_tmp_t, rtas_errd_tmp_t)
++files_tmp_filetrans(rtas_errd_t, rtas_errd_tmp_t, { file dir })
++
++manage_files_pattern(rtas_errd_t, rtas_errd_tmpfs_t, rtas_errd_tmpfs_t)
++manage_dirs_pattern(rtas_errd_t, rtas_errd_tmpfs_t, rtas_errd_tmpfs_t)
++fs_tmpfs_filetrans(rtas_errd_t, rtas_errd_tmpfs_t, { file dir })
++
++kernel_read_all_sysctls(rtas_errd_t)
+kernel_read_system_state(rtas_errd_t)
++kernel_read_network_state(rtas_errd_t)
++
++domain_read_all_domains_state(rtas_errd_t)
+
+auth_use_nsswitch(rtas_errd_t)
+
+corecmd_exec_bin(rtas_errd_t)
+
++dev_read_rand(rtas_errd_t)
++dev_read_urand(rtas_errd_t)
+dev_read_raw_memory(rtas_errd_t)
+dev_write_raw_memory(rtas_errd_t)
++dev_read_sysfs(rtas_errd_t)
++dev_rw_nvram(rtas_errd_t)
+
+files_manage_system_db_files(rtas_errd_t)
+
++logging_send_syslog_msg(rtas_errd_t)
+logging_read_generic_logs(rtas_errd_t)
+
++optional_policy(`
++ hostname_exec(rtas_errd_t)
++')
++
++optional_policy(`
++ rpm_exec(rtas_errd_t)
++ rpm_dontaudit_manage_db(rtas_errd_t)
++')
++
++optional_policy(`
++ unconfined_domain(rtas_errd_t)
++')
diff --git a/rtkit.if b/rtkit.if
index bd35afe..051addd 100644
--- a/rtkit.if
@@ -77375,10 +83184,10 @@ index 9927d29..6746952 100644
+userdom_getattr_user_terminals(rwho_t)
+
diff --git a/samba.fc b/samba.fc
-index b8b66ff..2ccac49 100644
+index b8b66ff..d1fa967 100644
--- a/samba.fc
+++ b/samba.fc
-@@ -1,42 +1,54 @@
+@@ -1,42 +1,55 @@
-/etc/rc\.d/init\.d/nmb -- gen_context(system_u:object_r:samba_initrc_exec_t,s0)
-/etc/rc\.d/init\.d/smb -- gen_context(system_u:object_r:samba_initrc_exec_t,s0)
+
@@ -77404,6 +83213,7 @@ index b8b66ff..2ccac49 100644
+#
+/usr/lib/systemd/system/smb.* -- gen_context(system_u:object_r:samba_unit_file_t,s0)
+/usr/lib/systemd/system/nmb.* -- gen_context(system_u:object_r:samba_unit_file_t,s0)
++/usr/lib/systemd/system/winbind.* -- gen_context(system_u:object_r:samba_unit_file_t,s0)
-/usr/bin/net -- gen_context(system_u:object_r:samba_net_exec_t,s0)
-/usr/bin/ntlm_auth -- gen_context(system_u:object_r:winbind_helper_exec_t,s0)
@@ -77459,7 +83269,7 @@ index b8b66ff..2ccac49 100644
/var/run/samba/messages\.tdb -- gen_context(system_u:object_r:nmbd_var_run_t,s0)
/var/run/samba/namelist\.debug -- gen_context(system_u:object_r:nmbd_var_run_t,s0)
/var/run/samba/nmbd\.pid -- gen_context(system_u:object_r:nmbd_var_run_t,s0)
-@@ -45,7 +57,11 @@
+@@ -45,7 +58,11 @@
/var/run/samba/smbd\.pid -- gen_context(system_u:object_r:smbd_var_run_t,s0)
/var/run/samba/unexpected\.tdb -- gen_context(system_u:object_r:nmbd_var_run_t,s0)
@@ -78232,7 +84042,7 @@ index aee75af..a6bab06 100644
+ allow $1 samba_unit_file_t:service all_service_perms;
')
diff --git a/samba.te b/samba.te
-index 57c034b..9e91107 100644
+index 57c034b..8736764 100644
--- a/samba.te
+++ b/samba.te
@@ -1,4 +1,4 @@
@@ -78405,7 +84215,14 @@ index 57c034b..9e91107 100644
type smbd_t;
type smbd_exec_t;
-@@ -149,9 +132,10 @@ type smbd_var_run_t;
+@@ -145,13 +128,17 @@ init_daemon_domain(smbd_t, smbd_exec_t)
+ type smbd_tmp_t;
+ files_tmp_file(smbd_tmp_t)
+
++type smbd_tmpfs_t;
++files_tmpfs_file(smbd_tmpfs_t)
++
+ type smbd_var_run_t;
files_pid_file(smbd_var_run_t)
type smbmount_t;
@@ -78418,7 +84235,7 @@ index 57c034b..9e91107 100644
type swat_t;
type swat_exec_t;
-@@ -170,27 +154,29 @@ type winbind_exec_t;
+@@ -170,27 +157,29 @@ type winbind_exec_t;
init_daemon_domain(winbind_t, winbind_exec_t)
type winbind_helper_t;
@@ -78456,7 +84273,7 @@ index 57c034b..9e91107 100644
allow samba_net_t samba_etc_t:file read_file_perms;
-@@ -206,17 +192,22 @@ manage_files_pattern(samba_net_t, samba_var_t, samba_var_t)
+@@ -206,17 +195,22 @@ manage_files_pattern(samba_net_t, samba_var_t, samba_var_t)
manage_lnk_files_pattern(samba_net_t, samba_var_t, samba_var_t)
files_var_filetrans(samba_net_t, samba_var_t, dir, "samba")
@@ -78483,7 +84300,7 @@ index 57c034b..9e91107 100644
dev_read_urand(samba_net_t)
-@@ -229,15 +220,16 @@ auth_manage_cache(samba_net_t)
+@@ -229,15 +223,16 @@ auth_manage_cache(samba_net_t)
logging_send_syslog_msg(samba_net_t)
@@ -78504,7 +84321,7 @@ index 57c034b..9e91107 100644
')
optional_policy(`
-@@ -245,44 +237,56 @@ optional_policy(`
+@@ -245,44 +240,56 @@ optional_policy(`
')
optional_policy(`
@@ -78547,11 +84364,11 @@ index 57c034b..9e91107 100644
-allow smbd_t { swat_t winbind_t smbcontrol_t nmbd_t }:process { signal signull };
+allow smbd_t nmbd_t:process { signal signull };
-+
-+allow smbd_t nmbd_var_run_t:file rw_file_perms;
-+stream_connect_pattern(smbd_t, nmbd_var_run_t, nmbd_var_run_t, nmbd_t)
-allow smbd_t samba_etc_t:file { rw_file_perms setattr_file_perms };
++allow smbd_t nmbd_var_run_t:file rw_file_perms;
++stream_connect_pattern(smbd_t, nmbd_var_run_t, nmbd_var_run_t, nmbd_t)
++
+allow smbd_t samba_etc_t:file { rw_file_perms setattr };
manage_dirs_pattern(smbd_t, samba_log_t, samba_log_t)
@@ -78573,7 +84390,7 @@ index 57c034b..9e91107 100644
manage_lnk_files_pattern(smbd_t, samba_share_t, samba_share_t)
allow smbd_t samba_share_t:filesystem { getattr quotaget };
-@@ -292,6 +296,8 @@ manage_lnk_files_pattern(smbd_t, samba_var_t, samba_var_t)
+@@ -292,20 +299,26 @@ manage_lnk_files_pattern(smbd_t, samba_var_t, samba_var_t)
manage_sock_files_pattern(smbd_t, samba_var_t, samba_var_t)
files_var_filetrans(smbd_t, samba_var_t, dir, "samba")
@@ -78582,7 +84399,13 @@ index 57c034b..9e91107 100644
manage_dirs_pattern(smbd_t, smbd_tmp_t, smbd_tmp_t)
manage_files_pattern(smbd_t, smbd_tmp_t, smbd_tmp_t)
files_tmp_filetrans(smbd_t, smbd_tmp_t, { file dir })
-@@ -301,11 +307,11 @@ manage_files_pattern(smbd_t, smbd_var_run_t, smbd_var_run_t)
+
++manage_dirs_pattern(smbd_t, smbd_tmpfs_t, smbd_tmpfs_t)
++manage_files_pattern(smbd_t, smbd_tmpfs_t, smbd_tmpfs_t)
++fs_tmpfs_filetrans(smbd_t, smbd_tmpfs_t, { file dir })
++
+ manage_dirs_pattern(smbd_t, smbd_var_run_t, smbd_var_run_t)
+ manage_files_pattern(smbd_t, smbd_var_run_t, smbd_var_run_t)
manage_sock_files_pattern(smbd_t, smbd_var_run_t, smbd_var_run_t)
files_pid_filetrans(smbd_t, smbd_var_run_t, { dir file })
@@ -78598,7 +84421,7 @@ index 57c034b..9e91107 100644
kernel_getattr_core_if(smbd_t)
kernel_getattr_message_if(smbd_t)
-@@ -315,43 +321,33 @@ kernel_read_kernel_sysctls(smbd_t)
+@@ -315,42 +328,34 @@ kernel_read_kernel_sysctls(smbd_t)
kernel_read_software_raid_state(smbd_t)
kernel_read_system_state(smbd_t)
@@ -78649,11 +84472,11 @@ index 57c034b..9e91107 100644
-files_dontaudit_getattr_all_dirs(smbd_t)
-files_dontaudit_list_all_mountpoints(smbd_t)
-files_list_mnt(smbd_t)
--
++domain_dontaudit_signull_all_domains(smbd_t)
+
fs_getattr_all_fs(smbd_t)
fs_getattr_all_dirs(smbd_t)
- fs_get_xattr_fs_quotas(smbd_t)
-@@ -360,44 +356,54 @@ fs_getattr_rpc_dirs(smbd_t)
+@@ -360,44 +365,55 @@ fs_getattr_rpc_dirs(smbd_t)
fs_list_inotifyfs(smbd_t)
fs_get_all_fs_quotas(smbd_t)
@@ -78702,6 +84525,7 @@ index 57c034b..9e91107 100644
files_dontaudit_getattr_default_dirs(smbd_t)
files_dontaudit_getattr_boot_dirs(smbd_t)
fs_dontaudit_getattr_tmpfs_dirs(smbd_t)
++ fs_rw_inherited_tmpfs_files(smbd_t)
')
-tunable_policy(`allow_smbd_anon_write',`
@@ -78719,7 +84543,7 @@ index 57c034b..9e91107 100644
')
tunable_policy(`samba_domain_controller',`
-@@ -413,20 +419,10 @@ tunable_policy(`samba_domain_controller',`
+@@ -413,20 +429,10 @@ tunable_policy(`samba_domain_controller',`
')
tunable_policy(`samba_enable_home_dirs',`
@@ -78742,7 +84566,7 @@ index 57c034b..9e91107 100644
tunable_policy(`samba_share_nfs',`
fs_manage_nfs_dirs(smbd_t)
fs_manage_nfs_files(smbd_t)
-@@ -435,6 +431,7 @@ tunable_policy(`samba_share_nfs',`
+@@ -435,6 +441,7 @@ tunable_policy(`samba_share_nfs',`
fs_manage_nfs_named_sockets(smbd_t)
')
@@ -78750,7 +84574,7 @@ index 57c034b..9e91107 100644
tunable_policy(`samba_share_fusefs',`
fs_manage_fusefs_dirs(smbd_t)
fs_manage_fusefs_files(smbd_t)
-@@ -442,17 +439,6 @@ tunable_policy(`samba_share_fusefs',`
+@@ -442,17 +449,6 @@ tunable_policy(`samba_share_fusefs',`
fs_search_fusefs(smbd_t)
')
@@ -78768,7 +84592,7 @@ index 57c034b..9e91107 100644
optional_policy(`
ccs_read_config(smbd_t)
')
-@@ -460,6 +446,7 @@ optional_policy(`
+@@ -460,6 +456,7 @@ optional_policy(`
optional_policy(`
ctdbd_stream_connect(smbd_t)
ctdbd_manage_lib_files(smbd_t)
@@ -78776,7 +84600,7 @@ index 57c034b..9e91107 100644
')
optional_policy(`
-@@ -473,6 +460,11 @@ optional_policy(`
+@@ -473,6 +470,11 @@ optional_policy(`
')
optional_policy(`
@@ -78788,7 +84612,18 @@ index 57c034b..9e91107 100644
lpd_exec_lpr(smbd_t)
')
-@@ -493,9 +485,33 @@ optional_policy(`
+@@ -482,6 +484,10 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ rhcs_signull_cluster(smbd_t)
++')
++
++optional_policy(`
+ rpc_search_nfs_state_data(smbd_t)
+ ')
+
+@@ -493,9 +499,36 @@ optional_policy(`
udev_read_db(smbd_t)
')
@@ -78811,9 +84646,12 @@ index 57c034b..9e91107 100644
+ allow nmbd_t self:capability { dac_read_search dac_override };
+ fs_manage_noxattr_fs_files(smbd_t)
+ files_manage_non_security_files(smbd_t)
++ files_manage_non_security_dirs(smbd_t)
+ fs_manage_noxattr_fs_files(nmbd_t)
+ files_manage_non_security_files(nmbd_t)
++ files_manage_non_security_dirs(nmbd_t)
+')
++
+userdom_filetrans_home_content(nmbd_t)
+
########################################
@@ -78823,7 +84661,7 @@ index 57c034b..9e91107 100644
#
dontaudit nmbd_t self:capability sys_tty_config;
-@@ -506,9 +522,11 @@ allow nmbd_t self:msg { send receive };
+@@ -506,9 +539,11 @@ allow nmbd_t self:msg { send receive };
allow nmbd_t self:msgq create_msgq_perms;
allow nmbd_t self:sem create_sem_perms;
allow nmbd_t self:shm create_shm_perms;
@@ -78838,7 +84676,7 @@ index 57c034b..9e91107 100644
manage_dirs_pattern(nmbd_t, { smbd_var_run_t nmbd_var_run_t }, nmbd_var_run_t)
manage_files_pattern(nmbd_t, nmbd_var_run_t, nmbd_var_run_t)
-@@ -520,20 +538,15 @@ read_files_pattern(nmbd_t, samba_etc_t, samba_etc_t)
+@@ -520,20 +555,15 @@ read_files_pattern(nmbd_t, samba_etc_t, samba_etc_t)
read_lnk_files_pattern(nmbd_t, samba_etc_t, samba_etc_t)
manage_dirs_pattern(nmbd_t, samba_log_t, samba_log_t)
@@ -78862,7 +84700,7 @@ index 57c034b..9e91107 100644
kernel_getattr_core_if(nmbd_t)
kernel_getattr_message_if(nmbd_t)
-@@ -542,52 +555,41 @@ kernel_read_network_state(nmbd_t)
+@@ -542,52 +572,42 @@ kernel_read_network_state(nmbd_t)
kernel_read_software_raid_state(nmbd_t)
kernel_read_system_state(nmbd_t)
@@ -78911,24 +84749,25 @@ index 57c034b..9e91107 100644
-
userdom_use_unpriv_users_fds(nmbd_t)
-userdom_user_home_dir_filetrans_user_home_content(nmbd_t, { file dir })
-+userdom_dontaudit_search_user_home_dirs(nmbd_t)
-
+-
-tunable_policy(`samba_export_all_ro',`
- fs_read_noxattr_fs_files(nmbd_t)
- files_list_non_auth_dirs(nmbd_t)
- files_read_non_auth_files(nmbd_t)
-')
--
++userdom_dontaudit_search_user_home_dirs(nmbd_t)
+
-tunable_policy(`samba_export_all_rw',`
- fs_read_noxattr_fs_files(nmbd_t)
- files_manage_non_auth_files(nmbd_t)
+optional_policy(`
+ ctdbd_stream_connect(nmbd_t)
+ ctdbd_manage_var_files(nmbd_t)
++ ctdbd_manage_lib_files(nmbd_t)
')
optional_policy(`
-@@ -600,19 +602,26 @@ optional_policy(`
+@@ -600,19 +620,26 @@ optional_policy(`
########################################
#
@@ -78936,7 +84775,7 @@ index 57c034b..9e91107 100644
+# smbcontrol local policy
#
-+
++allow smbcontrol_t self:capability2 block_suspend;
allow smbcontrol_t self:process signal;
-allow smbcontrol_t self:fifo_file rw_fifo_file_perms;
+# internal communication is often done using fifo and unix sockets.
@@ -78960,7 +84799,7 @@ index 57c034b..9e91107 100644
samba_search_var(smbcontrol_t)
samba_read_winbind_pid(smbcontrol_t)
-@@ -620,16 +629,12 @@ domain_use_interactive_fds(smbcontrol_t)
+@@ -620,16 +647,12 @@ domain_use_interactive_fds(smbcontrol_t)
dev_read_urand(smbcontrol_t)
@@ -78978,7 +84817,7 @@ index 57c034b..9e91107 100644
optional_policy(`
ctdbd_stream_connect(smbcontrol_t)
-@@ -637,22 +642,23 @@ optional_policy(`
+@@ -637,22 +660,23 @@ optional_policy(`
########################################
#
@@ -79010,7 +84849,7 @@ index 57c034b..9e91107 100644
allow smbmount_t samba_secrets_t:file manage_file_perms;
-@@ -661,26 +667,22 @@ manage_files_pattern(smbmount_t, samba_var_t, samba_var_t)
+@@ -661,26 +685,22 @@ manage_files_pattern(smbmount_t, samba_var_t, samba_var_t)
manage_lnk_files_pattern(smbmount_t, samba_var_t, samba_var_t)
files_var_filetrans(smbmount_t, samba_var_t, dir, "samba")
@@ -79046,7 +84885,7 @@ index 57c034b..9e91107 100644
fs_getattr_cifs(smbmount_t)
fs_mount_cifs(smbmount_t)
-@@ -692,58 +694,77 @@ fs_read_cifs_files(smbmount_t)
+@@ -692,58 +712,77 @@ fs_read_cifs_files(smbmount_t)
storage_raw_read_fixed_disk(smbmount_t)
storage_raw_write_fixed_disk(smbmount_t)
@@ -79138,7 +84977,7 @@ index 57c034b..9e91107 100644
manage_dirs_pattern(swat_t, swat_tmp_t, swat_tmp_t)
manage_files_pattern(swat_t, swat_tmp_t, swat_tmp_t)
-@@ -752,17 +773,13 @@ files_tmp_filetrans(swat_t, swat_tmp_t, { file dir })
+@@ -752,17 +791,13 @@ files_tmp_filetrans(swat_t, swat_tmp_t, { file dir })
manage_files_pattern(swat_t, swat_var_run_t, swat_var_run_t)
files_pid_filetrans(swat_t, swat_var_run_t, file)
@@ -79162,7 +85001,7 @@ index 57c034b..9e91107 100644
kernel_read_kernel_sysctls(swat_t)
kernel_read_system_state(swat_t)
-@@ -770,36 +787,25 @@ kernel_read_network_state(swat_t)
+@@ -770,36 +805,25 @@ kernel_read_network_state(swat_t)
corecmd_search_bin(swat_t)
@@ -79205,7 +85044,7 @@ index 57c034b..9e91107 100644
auth_domtrans_chk_passwd(swat_t)
auth_use_nsswitch(swat_t)
-@@ -811,10 +817,11 @@ logging_send_syslog_msg(swat_t)
+@@ -811,10 +835,11 @@ logging_send_syslog_msg(swat_t)
logging_send_audit_msgs(swat_t)
logging_search_logs(swat_t)
@@ -79219,10 +85058,12 @@ index 57c034b..9e91107 100644
optional_policy(`
cups_read_rw_config(swat_t)
cups_stream_connect(swat_t)
-@@ -834,16 +841,19 @@ optional_policy(`
+@@ -833,17 +858,20 @@ optional_policy(`
+ # Winbind local policy
#
- allow winbind_t self:capability { dac_override ipc_lock setuid sys_nice };
+-allow winbind_t self:capability { dac_override ipc_lock setuid sys_nice };
++allow winbind_t self:capability { kill dac_override ipc_lock setuid sys_nice };
+allow winbind_t self:capability2 block_suspend;
dontaudit winbind_t self:capability sys_tty_config;
allow winbind_t self:process { signal_perms getsched setsched };
@@ -79243,7 +85084,7 @@ index 57c034b..9e91107 100644
allow winbind_t samba_etc_t:dir list_dir_perms;
read_files_pattern(winbind_t, samba_etc_t, samba_etc_t)
-@@ -853,9 +863,7 @@ manage_files_pattern(winbind_t, samba_etc_t, samba_secrets_t)
+@@ -853,9 +881,7 @@ manage_files_pattern(winbind_t, samba_etc_t, samba_secrets_t)
filetrans_pattern(winbind_t, samba_etc_t, samba_secrets_t, file)
manage_dirs_pattern(winbind_t, samba_log_t, samba_log_t)
@@ -79254,7 +85095,7 @@ index 57c034b..9e91107 100644
manage_lnk_files_pattern(winbind_t, samba_log_t, samba_log_t)
manage_dirs_pattern(winbind_t, samba_var_t, samba_var_t)
-@@ -866,23 +874,21 @@ files_var_filetrans(winbind_t, samba_var_t, dir, "samba")
+@@ -866,23 +892,21 @@ files_var_filetrans(winbind_t, samba_var_t, dir, "samba")
rw_files_pattern(winbind_t, smbd_tmp_t, smbd_tmp_t)
@@ -79284,7 +85125,7 @@ index 57c034b..9e91107 100644
manage_sock_files_pattern(winbind_t, smbd_var_run_t, smbd_var_run_t)
kernel_read_network_state(winbind_t)
-@@ -891,13 +897,17 @@ kernel_read_system_state(winbind_t)
+@@ -891,13 +915,17 @@ kernel_read_system_state(winbind_t)
corecmd_exec_bin(winbind_t)
@@ -79305,7 +85146,7 @@ index 57c034b..9e91107 100644
corenet_tcp_connect_smbd_port(winbind_t)
corenet_tcp_connect_epmap_port(winbind_t)
corenet_tcp_connect_all_unreserved_ports(winbind_t)
-@@ -905,10 +915,6 @@ corenet_tcp_connect_all_unreserved_ports(winbind_t)
+@@ -905,10 +933,6 @@ corenet_tcp_connect_all_unreserved_ports(winbind_t)
dev_read_sysfs(winbind_t)
dev_read_urand(winbind_t)
@@ -79316,7 +85157,7 @@ index 57c034b..9e91107 100644
fs_getattr_all_fs(winbind_t)
fs_search_auto_mountpoints(winbind_t)
-@@ -917,26 +923,39 @@ auth_domtrans_chk_passwd(winbind_t)
+@@ -917,26 +941,43 @@ auth_domtrans_chk_passwd(winbind_t)
auth_use_nsswitch(winbind_t)
auth_manage_cache(winbind_t)
@@ -79355,10 +85196,14 @@ index 57c034b..9e91107 100644
optional_policy(`
kerberos_use(winbind_t)
+ kerberos_filetrans_named_content(winbind_t)
++')
++
++optional_policy(`
++ nis_authenticate(winbind_t)
')
optional_policy(`
-@@ -952,31 +971,29 @@ optional_policy(`
+@@ -952,31 +993,29 @@ optional_policy(`
# Winbind helper local policy
#
@@ -79396,7 +85241,7 @@ index 57c034b..9e91107 100644
optional_policy(`
apache_append_log(winbind_helper_t)
-@@ -990,25 +1007,38 @@ optional_policy(`
+@@ -990,25 +1029,38 @@ optional_policy(`
########################################
#
@@ -79417,24 +85262,24 @@ index 57c034b..9e91107 100644
+ role system_r types samba_unconfined_net_t;
+
+ unconfined_domain(samba_unconfined_net_t)
-+
+
+- allow smbd_t samba_unconfined_script_exec_t:dir search_dir_perms;
+- allow smbd_t samba_unconfined_script_exec_t:file ioctl;
+ manage_files_pattern(samba_unconfined_net_t, samba_etc_t, samba_secrets_t)
+ filetrans_pattern(samba_unconfined_net_t, samba_etc_t, samba_secrets_t, file)
+ userdom_use_inherited_user_terminals(samba_unconfined_net_t)
+')
-+
+
+type samba_unconfined_script_t;
+type samba_unconfined_script_exec_t;
+domain_type(samba_unconfined_script_t)
+domain_entry_file(samba_unconfined_script_t, samba_unconfined_script_exec_t)
+corecmd_shell_entry_type(samba_unconfined_script_t)
+role system_r types samba_unconfined_script_t;
-
-- allow smbd_t samba_unconfined_script_exec_t:dir search_dir_perms;
-- allow smbd_t samba_unconfined_script_exec_t:file ioctl;
++
+allow smbd_t samba_unconfined_script_exec_t:dir search_dir_perms;
+allow smbd_t samba_unconfined_script_exec_t:file ioctl;
-
++
+optional_policy(`
unconfined_domain(samba_unconfined_script_t)
+')
@@ -79522,10 +85367,10 @@ index 0000000..b7db254
+# Empty
diff --git a/sandbox.if b/sandbox.if
new file mode 100644
-index 0000000..577dfa7
+index 0000000..89bc443
--- /dev/null
+++ b/sandbox.if
-@@ -0,0 +1,55 @@
+@@ -0,0 +1,57 @@
+
+## policy for sandbox
+
@@ -79556,6 +85401,8 @@ index 0000000..577dfa7
+ allow sandbox_domain $1:process { sigchld signull };
+ allow sandbox_domain $1:fifo_file rw_inherited_fifo_file_perms;
+ dontaudit sandbox_domain $1:process signal;
++ dontaudit sandbox_domain $1:key { link read search view };
++ dontaudit sandbox_domain $1:unix_stream_socket rw_socket_perms;
+')
+
+########################################
@@ -79583,10 +85430,10 @@ index 0000000..577dfa7
+')
diff --git a/sandbox.te b/sandbox.te
new file mode 100644
-index 0000000..b12aada
+index 0000000..62a9666
--- /dev/null
+++ b/sandbox.te
-@@ -0,0 +1,62 @@
+@@ -0,0 +1,63 @@
+policy_module(sandbox,1.0.0)
+
+attribute sandbox_domain;
@@ -79632,6 +85479,7 @@ index 0000000..b12aada
+')
+
+kernel_dontaudit_read_system_state(sandbox_domain)
++kernel_dontaudit_getattr_core_if(sandbox_domain)
+
+corecmd_exec_all_executables(sandbox_domain)
+
@@ -79659,10 +85507,10 @@ index 0000000..6caef63
+/usr/share/sandbox/start -- gen_context(system_u:object_r:sandbox_exec_t,s0)
diff --git a/sandboxX.if b/sandboxX.if
new file mode 100644
-index 0000000..5da5bff
+index 0000000..3258f45
--- /dev/null
+++ b/sandboxX.if
-@@ -0,0 +1,392 @@
+@@ -0,0 +1,394 @@
+
+## policy for sandboxX
+
@@ -79704,10 +85552,11 @@ index 0000000..5da5bff
+ dontaudit sandbox_xserver_t $1:file read;
+ allow sandbox_x_domain sandbox_x_domain:process signal;
+ # Dontaudit leaked file descriptors
++ dontaudit sandbox_x_domain $1:key { link read search view };
+ dontaudit sandbox_x_domain $1:fifo_file { read write };
+ dontaudit sandbox_x_domain $1:tcp_socket rw_socket_perms;
+ dontaudit sandbox_x_domain $1:udp_socket rw_socket_perms;
-+ dontaudit sandbox_x_domain $1:unix_stream_socket { read write };
++ dontaudit sandbox_x_domain $1:unix_stream_socket rw_socket_perms;
+ dontaudit sandbox_x_domain $1:process { signal sigkill };
+
+ allow $1 sandbox_tmpfs_type:file manage_file_perms;
@@ -79786,6 +85635,7 @@ index 0000000..5da5bff
+
+ domtrans_pattern($1_t, sandbox_exec_t, $1_client_t)
+ domain_entry_file($1_client_t, sandbox_exec_t)
++ allow $1_client_t $1_t:shm { unix_read unix_write };
+
+ ps_process_pattern(sandbox_xserver_t, $1_client_t)
+ ps_process_pattern(sandbox_xserver_t, $1_t)
@@ -80057,10 +85907,10 @@ index 0000000..5da5bff
+')
diff --git a/sandboxX.te b/sandboxX.te
new file mode 100644
-index 0000000..710df6b
+index 0000000..330fea5
--- /dev/null
+++ b/sandboxX.te
-@@ -0,0 +1,483 @@
+@@ -0,0 +1,502 @@
+policy_module(sandboxX,1.0.0)
+
+dbus_stub()
@@ -80185,7 +86035,7 @@ index 0000000..710df6b
+#
+# sandbox_x_domain local policy
+#
-+allow sandbox_x_domain self:process { getattr signal_perms getsched setsched setpgid execstack };
++allow sandbox_x_domain self:process { getattr signal_perms getsched setsched setpgid execstack getcap setcap };
+tunable_policy(`deny_execmem',`',`
+ allow sandbox_x_domain self:process execmem;
+')
@@ -80277,6 +86127,10 @@ index 0000000..710df6b
+storage_dontaudit_rw_fuse(sandbox_x_domain)
+
+optional_policy(`
++ bluetooth_dbus_chat(sandbox_x_domain)
++')
++
++optional_policy(`
+ consolekit_dbus_chat(sandbox_x_domain)
+')
+
@@ -80295,6 +86149,8 @@ index 0000000..710df6b
+
+optional_policy(`
+ gnome_read_gconf_config(sandbox_x_domain)
++ gnome_dontaudit_rw_inherited_config(sandbox_x_domain)
++ gnome_dontaudit_rw_inherited_config(sandbox_xserver_t)
+')
+
+optional_policy(`
@@ -80342,6 +86198,10 @@ index 0000000..710df6b
+ fs_exec_fusefs_files(sandbox_x_domain)
+')
+
++optional_policy(`
++ networkmanager_dontaudit_dbus_chat(sandbox_x_domain)
++')
++
+files_search_home(sandbox_x_t)
+userdom_use_user_ptys(sandbox_x_t)
+
@@ -80363,6 +86223,10 @@ index 0000000..710df6b
+logging_send_syslog_msg(sandbox_x_client_t)
+
+optional_policy(`
++ avahi_dbus_chat(sandbox_x_client_t)
++')
++
++optional_policy(`
+ colord_dbus_chat(sandbox_x_client_t)
+')
+
@@ -80474,6 +86338,10 @@ index 0000000..710df6b
+')
+
+optional_policy(`
++ avahi_dbus_chat(sandbox_web_type)
++')
++
++optional_policy(`
+ bluetooth_dontaudit_dbus_chat(sandbox_web_type)
+')
+
@@ -80486,6 +86354,10 @@ index 0000000..710df6b
+')
+
+optional_policy(`
++ mozilla_plugin_rw_sem(sandbox_web_type)
++')
++
++optional_policy(`
+ nsplugin_manage_rw(sandbox_web_type)
+ nsplugin_read_rw_files(sandbox_web_type)
+ nsplugin_rw_exec(sandbox_web_type)
@@ -80507,10 +86379,6 @@ index 0000000..710df6b
+')
+
+optional_policy(`
-+ networkmanager_dontaudit_dbus_chat(sandbox_web_type)
-+')
-+
-+optional_policy(`
+ udev_read_state(sandbox_web_type)
+')
+
@@ -80540,10 +86408,11 @@ index 0000000..710df6b
+ mozilla_dontaudit_rw_user_home_files(sandbox_x_t)
+ mozilla_dontaudit_rw_user_home_files(sandbox_xserver_t)
+ mozilla_dontaudit_rw_user_home_files(sandbox_x_domain)
-+ mozilla_plugin_dontaudit_rw_sem(sandbox_x_domain)
++ mozilla_plugin_rw_sem(sandbox_x_domain)
+ mozilla_plugin_dontaudit_leaks(sandbox_x_domain)
+')
+userdom_dontaudit_open_user_ptys(sandbox_x_domain)
++
diff --git a/sanlock.fc b/sanlock.fc
index 3df2a0f..9059165 100644
--- a/sanlock.fc
@@ -81036,7 +86905,7 @@ index 68a550d..e976fc6 100644
/var/run/gather(/.*)? gen_context(system_u:object_r:sblim_var_run_t,s0)
diff --git a/sblim.if b/sblim.if
-index 98c9e0a..df51942 100644
+index 98c9e0a..d4aa009 100644
--- a/sblim.if
+++ b/sblim.if
@@ -1,8 +1,36 @@
@@ -81087,25 +86956,41 @@ index 98c9e0a..df51942 100644
##
##
##
-@@ -40,34 +68,33 @@ interface(`sblim_read_pid_files',`
+@@ -40,34 +68,51 @@ interface(`sblim_read_pid_files',`
########################################
##
-## All of the rules required to
-## administrate an sblim environment.
-+## All of the rules required to administrate
-+## an gatherd environment
++## Transition to sblim named content
##
##
##
- ## Domain allowed access.
+-## Domain allowed access.
++## Domain allowed access.
##
##
-##
--##
++#
++interface(`sblim_filetrans_named_content',`
++ gen_require(`
++ type sblim_var_run_t;
++ ')
++
++ files_pid_filetrans($1, sblim_var_run_t, dir, "gather")
++')
++
++########################################
++##
++## All of the rules required to administrate
++## an gatherd environment
++##
++##
+ ##
-## Role allowed access.
--##
--##
++## Domain allowed access.
+ ##
+ ##
##
#
interface(`sblim_admin',`
@@ -81137,7 +87022,7 @@ index 98c9e0a..df51942 100644
files_search_pids($1)
admin_pattern($1, sblim_var_run_t)
diff --git a/sblim.te b/sblim.te
-index 4a23d84..62df1db 100644
+index 4a23d84..20f5040 100644
--- a/sblim.te
+++ b/sblim.te
@@ -7,13 +7,11 @@ policy_module(sblim, 1.0.3)
@@ -81174,10 +87059,12 @@ index 4a23d84..62df1db 100644
######################################
#
# Common sblim domain local policy
-@@ -32,11 +39,18 @@ manage_dirs_pattern(sblim_domain, sblim_var_run_t, sblim_var_run_t)
+@@ -31,32 +38,38 @@ allow sblim_domain self:tcp_socket create_stream_socket_perms;
+ manage_dirs_pattern(sblim_domain, sblim_var_run_t, sblim_var_run_t)
manage_files_pattern(sblim_domain, sblim_var_run_t, sblim_var_run_t)
manage_sock_files_pattern(sblim_domain, sblim_var_run_t, sblim_var_run_t)
-
++files_pid_filetrans(sblim_domain, sblim_var_run_t,dir,"gather")
++
+manage_dirs_pattern(sblim_domain, sblim_var_lib_t, sblim_var_lib_t)
+manage_files_pattern(sblim_domain, sblim_var_lib_t, sblim_var_lib_t)
+manage_lnk_files_pattern(sblim_domain, sblim_var_lib_t, sblim_var_lib_t)
@@ -81187,7 +87074,7 @@ index 4a23d84..62df1db 100644
+manage_files_pattern(sblim_domain, sblim_tmp_t, sblim_tmp_t)
+manage_sock_files_pattern(sblim_domain, sblim_tmp_t, sblim_tmp_t)
+files_tmp_filetrans(sblim_domain, sblim_tmp_t, { dir file sock_file})
-+
+
kernel_read_network_state(sblim_domain)
-kernel_read_system_state(sblim_domain)
@@ -81196,9 +87083,11 @@ index 4a23d84..62df1db 100644
corenet_tcp_sendrecv_generic_if(sblim_domain)
corenet_tcp_sendrecv_generic_node(sblim_domain)
-@@ -44,19 +58,15 @@ corenet_tcp_sendrecv_repository_port(sblim_domain)
+ corenet_tcp_sendrecv_repository_port(sblim_domain)
dev_read_sysfs(sblim_domain)
++dev_read_rand(sblim_domain)
++dev_read_urand(sblim_domain)
-logging_send_syslog_msg(sblim_domain)
-
@@ -81219,7 +87108,7 @@ index 4a23d84..62df1db 100644
allow sblim_gatherd_t self:fifo_file rw_fifo_file_perms;
allow sblim_gatherd_t self:unix_stream_socket { accept listen };
-@@ -84,6 +94,8 @@ storage_raw_read_removable_device(sblim_gatherd_t)
+@@ -84,6 +97,8 @@ storage_raw_read_removable_device(sblim_gatherd_t)
init_read_utmp(sblim_gatherd_t)
@@ -81228,7 +87117,7 @@ index 4a23d84..62df1db 100644
sysnet_dns_name_resolve(sblim_gatherd_t)
term_getattr_pty_fs(sblim_gatherd_t)
-@@ -103,8 +115,9 @@ optional_policy(`
+@@ -103,8 +118,9 @@ optional_policy(`
')
optional_policy(`
@@ -81239,7 +87128,7 @@ index 4a23d84..62df1db 100644
')
optional_policy(`
-@@ -117,6 +130,29 @@ optional_policy(`
+@@ -117,6 +133,33 @@ optional_policy(`
# Reposd local policy
#
@@ -81266,7 +87155,11 @@ index 4a23d84..62df1db 100644
+
+auth_use_nsswitch(sblim_sfcbd_t)
+
-+corenet_tcp_bind_pegasus_https_port(sblim_sfcbd_t)
++corenet_tcp_bind_pegasus_http_port(sblim_sfcbd_t)
++corenet_tcp_connect_pegasus_http_port(sblim_sfcbd_t)
++
++dev_read_rand(sblim_sfcbd_t)
++dev_read_urand(sblim_sfcbd_t)
+
+domain_read_all_domains_state(sblim_sfcbd_t)
+domain_use_interactive_fds(sblim_sfcbd_t)
@@ -82242,20 +88135,24 @@ index 5f35d78..50651d2 100644
+ uucp_domtrans_uux(sendmail_t)
')
diff --git a/sensord.fc b/sensord.fc
-index 8185d5a..719ac47 100644
+index 8185d5a..97926d2 100644
--- a/sensord.fc
+++ b/sensord.fc
-@@ -1,3 +1,5 @@
+@@ -1,5 +1,9 @@
+/lib/systemd/system/sensord.service -- gen_context(system_u:object_r:sensord_unit_file_t,s0)
+
/etc/rc\.d/init\.d/sensord -- gen_context(system_u:object_r:sensord_initrc_exec_t,s0)
/usr/sbin/sensord -- gen_context(system_u:object_r:sensord_exec_t,s0)
+
++/var/log/sensord\.rrd -- gen_context(system_u:object_r:sensord_log_t,s0)
++
+ /var/run/sensord\.pid -- gen_context(system_u:object_r:sensord_var_run_t,s0)
diff --git a/sensord.if b/sensord.if
-index d204752..5eba5fd 100644
+index d204752..31cc6e6 100644
--- a/sensord.if
+++ b/sensord.if
-@@ -1,35 +1,75 @@
+@@ -1,35 +1,80 @@
-## Sensor information logging daemon.
+
+## Sensor information logging daemon
@@ -82323,7 +88220,9 @@ index d204752..5eba5fd 100644
gen_require(`
- type sensord_t, sensord_initrc_exec_t, sensord_var_run_t;
+ type sensord_t;
-+ type sensord_unit_file_t;
++ type sensord_unit_file_t;
++ type sensord_log_t;
++ type sensord_var_run_t;
')
allow $1 sensord_t:process { ptrace signal_perms };
@@ -82338,17 +88237,19 @@ index d204752..5eba5fd 100644
+ allow $1 sensord_unit_file_t:service all_service_perms;
- files_search_pids($1)
-- admin_pattern($1, sensord_var_run_t)
++ admin_pattern($1, sensord_log_t)
+ admin_pattern($1, sensord_var_run_t)
++
+ optional_policy(`
+ systemd_passwd_agent_exec($1)
+ systemd_read_fifo_file_passwd_run($1)
+ ')
')
diff --git a/sensord.te b/sensord.te
-index 5e82fd6..fa352d8 100644
+index 5e82fd6..f3e5808 100644
--- a/sensord.te
+++ b/sensord.te
-@@ -9,6 +9,9 @@ type sensord_t;
+@@ -9,12 +9,18 @@ type sensord_t;
type sensord_exec_t;
init_daemon_domain(sensord_t, sensord_exec_t)
@@ -82358,7 +88259,24 @@ index 5e82fd6..fa352d8 100644
type sensord_initrc_exec_t;
init_script_file(sensord_initrc_exec_t)
-@@ -28,8 +31,5 @@ files_pid_filetrans(sensord_t, sensord_var_run_t, file)
+ type sensord_var_run_t;
+ files_pid_file(sensord_var_run_t)
+
++type sensord_log_t;
++logging_log_file(sensord_log_t)
++
+ ########################################
+ #
+ # Local policy
+@@ -23,13 +29,13 @@ files_pid_file(sensord_var_run_t)
+ allow sensord_t self:fifo_file rw_fifo_file_perms;
+ allow sensord_t self:unix_stream_socket create_stream_socket_perms;
+
++manage_files_pattern(sensord_t, sensord_log_t, sensord_log_t)
++logging_log_filetrans(sensord_t, sensord_log_t, file)
++
+ manage_files_pattern(sensord_t, sensord_var_run_t, sensord_var_run_t)
+ files_pid_filetrans(sensord_t, sensord_var_run_t, file)
dev_read_sysfs(sensord_t)
@@ -82386,7 +88304,7 @@ index 0b3a971..397a522 100644
-/var/lib/setroubleshoot(/.*)? gen_context(system_u:object_r:setroubleshoot_var_lib_t,s0)
+/var/lib/setroubleshoot(/.*)? gen_context(system_u:object_r:setroubleshoot_var_lib_t,s0)
diff --git a/setroubleshoot.if b/setroubleshoot.if
-index 3a9a70b..039b0c8 100644
+index 3a9a70b..903109c 100644
--- a/setroubleshoot.if
+++ b/setroubleshoot.if
@@ -1,9 +1,8 @@
@@ -82413,7 +88331,32 @@ index 3a9a70b..039b0c8 100644
##
##
##
-@@ -107,8 +105,27 @@ interface(`setroubleshoot_dbus_chat_fixit',`
+@@ -42,6 +40,24 @@ interface(`setroubleshoot_dontaudit_stream_connect',`
+ dontaudit $1 setroubleshootd_t:unix_stream_socket connectto;
+ ')
+
++#######################################
++##
++## Send null signals to setroubleshoot.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`setroubleshoot_signull',`
++ gen_require(`
++ type setroubleshootd_t;
++ ')
++
++ allow $1 setroubleshootd_t:process signull;
++')
++
+ ########################################
+ ##
+ ## Send and receive messages from
+@@ -107,8 +123,27 @@ interface(`setroubleshoot_dbus_chat_fixit',`
########################################
##
@@ -82443,7 +88386,7 @@ index 3a9a70b..039b0c8 100644
##
##
##
-@@ -119,12 +136,15 @@ interface(`setroubleshoot_dbus_chat_fixit',`
+@@ -119,12 +154,15 @@ interface(`setroubleshoot_dbus_chat_fixit',`
#
interface(`setroubleshoot_admin',`
gen_require(`
@@ -82464,7 +88407,7 @@ index 3a9a70b..039b0c8 100644
logging_list_logs($1)
admin_pattern($1, setroubleshoot_var_log_t)
diff --git a/setroubleshoot.te b/setroubleshoot.te
-index 49b12ae..d686e4a 100644
+index 49b12ae..0f1e101 100644
--- a/setroubleshoot.te
+++ b/setroubleshoot.te
@@ -1,4 +1,4 @@
@@ -82473,7 +88416,7 @@ index 49b12ae..d686e4a 100644
########################################
#
-@@ -7,43 +7,50 @@ policy_module(setroubleshoot, 1.11.2)
+@@ -7,43 +7,52 @@ policy_module(setroubleshoot, 1.11.2)
type setroubleshootd_t alias setroubleshoot_t;
type setroubleshootd_exec_t;
@@ -82505,6 +88448,8 @@ index 49b12ae..d686e4a 100644
allow setroubleshootd_t self:capability { dac_override sys_nice sys_ptrace sys_tty_config };
-allow setroubleshootd_t self:process { getattr getsched setsched sigkill signull signal execmem execstack };
++dontaudit setroubleshootd_t self:capability net_admin;
++
+allow setroubleshootd_t self:process { getattr getsched setsched sigkill signull signal };
+# if bad library causes setroubleshoot to require these, we want to give it so setroubleshoot can continue to run
+allow setroubleshootd_t self:process { execmem execstack };
@@ -82535,7 +88480,14 @@ index 49b12ae..d686e4a 100644
manage_dirs_pattern(setroubleshootd_t, setroubleshoot_var_run_t, setroubleshoot_var_run_t)
manage_files_pattern(setroubleshootd_t, setroubleshoot_var_run_t, setroubleshoot_var_run_t)
manage_sock_files_pattern(setroubleshootd_t, setroubleshoot_var_run_t, setroubleshoot_var_run_t)
-@@ -61,14 +68,13 @@ corecmd_exec_bin(setroubleshootd_t)
+@@ -55,20 +64,20 @@ kernel_read_net_sysctls(setroubleshootd_t)
+ kernel_read_network_state(setroubleshootd_t)
+ kernel_dontaudit_list_all_proc(setroubleshootd_t)
+ kernel_read_irq_sysctls(setroubleshootd_t)
++kernel_read_rpc_sysctls(setroubleshootd_t)
+ kernel_read_unlabeled_state(setroubleshootd_t)
+
+ corecmd_exec_bin(setroubleshootd_t)
corecmd_exec_shell(setroubleshootd_t)
corecmd_read_all_executables(setroubleshootd_t)
@@ -82553,7 +88505,7 @@ index 49b12ae..d686e4a 100644
dev_read_urand(setroubleshootd_t)
dev_read_sysfs(setroubleshootd_t)
-@@ -76,10 +82,9 @@ dev_getattr_all_blk_files(setroubleshootd_t)
+@@ -76,10 +85,9 @@ dev_getattr_all_blk_files(setroubleshootd_t)
dev_getattr_all_chr_files(setroubleshootd_t)
dev_getattr_mtrr_dev(setroubleshootd_t)
@@ -82565,7 +88517,7 @@ index 49b12ae..d686e4a 100644
files_list_all(setroubleshootd_t)
files_getattr_all_files(setroubleshootd_t)
files_getattr_all_pipes(setroubleshootd_t)
-@@ -101,33 +106,32 @@ selinux_read_policy(setroubleshootd_t)
+@@ -101,33 +109,32 @@ selinux_read_policy(setroubleshootd_t)
term_dontaudit_use_all_ptys(setroubleshootd_t)
term_dontaudit_use_all_ttys(setroubleshootd_t)
@@ -82606,7 +88558,7 @@ index 49b12ae..d686e4a 100644
')
optional_policy(`
-@@ -135,10 +139,18 @@ optional_policy(`
+@@ -135,10 +142,18 @@ optional_policy(`
')
optional_policy(`
@@ -82625,7 +88577,7 @@ index 49b12ae..d686e4a 100644
rpm_exec(setroubleshootd_t)
rpm_signull(setroubleshootd_t)
rpm_read_db(setroubleshootd_t)
-@@ -148,26 +160,36 @@ optional_policy(`
+@@ -148,26 +163,36 @@ optional_policy(`
########################################
#
@@ -82664,7 +88616,7 @@ index 49b12ae..d686e4a 100644
files_list_tmp(setroubleshoot_fixit_t)
auth_use_nsswitch(setroubleshoot_fixit_t)
-@@ -175,23 +197,26 @@ auth_use_nsswitch(setroubleshoot_fixit_t)
+@@ -175,23 +200,26 @@ auth_use_nsswitch(setroubleshoot_fixit_t)
logging_send_audit_msgs(setroubleshoot_fixit_t)
logging_send_syslog_msg(setroubleshoot_fixit_t)
@@ -83125,10 +89077,18 @@ index 1aeef8a..d5ce40a 100644
admin_pattern($1, shorewall_etc_t)
diff --git a/shorewall.te b/shorewall.te
-index ca03de6..c3b5559 100644
+index ca03de6..e0ebb61 100644
--- a/shorewall.te
+++ b/shorewall.te
-@@ -44,9 +44,7 @@ manage_files_pattern(shorewall_t, shorewall_lock_t, shorewall_lock_t)
+@@ -34,6 +34,7 @@ logging_log_file(shorewall_log_t)
+
+ allow shorewall_t self:capability { dac_override net_admin net_raw setuid setgid sys_nice sys_admin };
+ dontaudit shorewall_t self:capability sys_tty_config;
++allow shorewall_t self:process signal_perms;
+ allow shorewall_t self:fifo_file rw_fifo_file_perms;
+ allow shorewall_t self:netlink_socket create_socket_perms;
+
+@@ -44,9 +45,7 @@ manage_files_pattern(shorewall_t, shorewall_lock_t, shorewall_lock_t)
files_lock_filetrans(shorewall_t, shorewall_lock_t, file)
manage_dirs_pattern(shorewall_t, shorewall_log_t, shorewall_log_t)
@@ -83139,7 +89099,7 @@ index ca03de6..c3b5559 100644
logging_log_filetrans(shorewall_t, shorewall_log_t, { file dir })
manage_dirs_pattern(shorewall_t, shorewall_tmp_t, shorewall_tmp_t)
-@@ -57,6 +55,9 @@ exec_files_pattern(shorewall_t, shorewall_var_lib_t, shorewall_var_lib_t)
+@@ -57,6 +56,9 @@ exec_files_pattern(shorewall_t, shorewall_var_lib_t, shorewall_var_lib_t)
manage_dirs_pattern(shorewall_t, shorewall_var_lib_t, shorewall_var_lib_t)
manage_files_pattern(shorewall_t, shorewall_var_lib_t, shorewall_var_lib_t)
files_var_lib_filetrans(shorewall_t, shorewall_var_lib_t, { dir file })
@@ -83149,7 +89109,7 @@ index ca03de6..c3b5559 100644
allow shorewall_t shorewall_initrc_exec_t:file read_file_perms;
-@@ -74,7 +75,6 @@ dev_read_urand(shorewall_t)
+@@ -74,7 +76,6 @@ dev_read_urand(shorewall_t)
domain_read_all_domains_state(shorewall_t)
files_getattr_kernel_modules(shorewall_t)
@@ -83157,7 +89117,7 @@ index ca03de6..c3b5559 100644
files_search_kernel_modules(shorewall_t)
fs_getattr_all_fs(shorewall_t)
-@@ -86,12 +86,11 @@ init_rw_utmp(shorewall_t)
+@@ -86,12 +87,11 @@ init_rw_utmp(shorewall_t)
logging_read_generic_logs(shorewall_t)
logging_send_syslog_msg(shorewall_t)
@@ -83379,9 +89339,18 @@ index 7880d1f..8804935 100644
+ xserver_xdm_append_log(shutdown_t)
')
diff --git a/slocate.te b/slocate.te
-index ba26427..83d21aa 100644
+index ba26427..8417705 100644
--- a/slocate.te
+++ b/slocate.te
+@@ -18,7 +18,7 @@ files_type(locate_var_lib_t)
+ #
+
+ allow locate_t self:capability { chown dac_read_search dac_override fowner fsetid };
+-allow locate_t self:process { execmem execheap execstack signal };
++allow locate_t self:process { execmem execheap execstack signal setsched };
+ allow locate_t self:fifo_file rw_fifo_file_perms;
+ allow locate_t self:unix_stream_socket create_socket_perms;
+
@@ -53,7 +53,6 @@ fs_read_noxattr_fs_symlinks(locate_t)
auth_use_nsswitch(locate_t)
@@ -83459,10 +89428,29 @@ index ca32e89..98278dd 100644
+
')
diff --git a/slpd.te b/slpd.te
-index 66ac42a..1a4c952 100644
+index 66ac42a..5efa3fd 100644
--- a/slpd.te
+++ b/slpd.te
-@@ -50,6 +50,10 @@ corenet_sendrecv_svrloc_server_packets(slpd_t)
+@@ -23,7 +23,7 @@ files_pid_file(slpd_var_run_t)
+ # Local policy
+ #
+
+-allow slpd_t self:capability { kill setgid setuid };
++allow slpd_t self:capability { kill net_admin setgid setuid };
+ allow slpd_t self:process signal;
+ allow slpd_t self:fifo_file rw_fifo_file_perms;
+ allow slpd_t self:tcp_socket { accept listen };
+@@ -35,6 +35,9 @@ logging_log_filetrans(slpd_t, slpd_log_t, file)
+ manage_files_pattern(slpd_t, slpd_var_run_t, slpd_var_run_t)
+ files_pid_filetrans(slpd_t, slpd_var_run_t, file)
+
++kernel_read_system_state(slpd_t)
++kernel_read_network_state(slpd_t)
++
+ corenet_all_recvfrom_unlabeled(slpd_t)
+ corenet_all_recvfrom_netlabel(slpd_t)
+ corenet_tcp_sendrecv_generic_if(slpd_t)
+@@ -50,6 +53,12 @@ corenet_sendrecv_svrloc_server_packets(slpd_t)
corenet_tcp_bind_svrloc_port(slpd_t)
corenet_udp_bind_svrloc_port(slpd_t)
@@ -83473,6 +89461,8 @@ index 66ac42a..1a4c952 100644
auth_use_nsswitch(slpd_t)
-miscfiles_read_localization(slpd_t)
++logging_send_syslog_msg(slpd_t)
++
+sysnet_dns_name_resolve(slpd_t)
diff --git a/slrnpull.te b/slrnpull.te
index 5437237..3dfc982 100644
@@ -83651,7 +89641,7 @@ index a8b1aaf..fc0a2be 100644
netutils_domtrans_ping(httpd_smokeping_cgi_script_t)
diff --git a/smoltclient.te b/smoltclient.te
-index 9c8f9a5..14f15a4 100644
+index 9c8f9a5..f074b4d 100644
--- a/smoltclient.te
+++ b/smoltclient.te
@@ -51,14 +51,12 @@ fs_list_auto_mountpoints(smoltclient_t)
@@ -83669,6 +89659,17 @@ index 9c8f9a5..14f15a4 100644
optional_policy(`
abrt_stream_connect(smoltclient_t)
+@@ -77,6 +75,10 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ libs_exec_ldconfig(smoltclient_t)
++')
++
++optional_policy(`
+ rpm_exec(smoltclient_t)
+ rpm_read_db(smoltclient_t)
+ ')
diff --git a/smsd.fc b/smsd.fc
new file mode 100644
index 0000000..4c3fcec
@@ -84108,11 +90109,18 @@ index cbfe369..6594af3 100644
files_search_var_lib($1)
diff --git a/snapper.fc b/snapper.fc
new file mode 100644
-index 0000000..3f412d5
+index 0000000..660fcd2
--- /dev/null
+++ b/snapper.fc
-@@ -0,0 +1 @@
+@@ -0,0 +1,8 @@
++HOME_DIR/\.snapshots -d gen_context(system_u:object_r:snapperd_home_t,s0)
++
+/usr/sbin/snapperd -- gen_context(system_u:object_r:snapperd_exec_t,s0)
++
++/etc/snapper(/.*)? gen_context(system_u:object_r:snapperd_conf_t,s0)
++/etc/sysconfig/snapper -- gen_context(system_u:object_r:snapperd_conf_t,s0)
++
++/var/log/snapper\.log.* -- gen_context(system_u:object_r:snapperd_log_t,s0)
diff --git a/snapper.if b/snapper.if
new file mode 100644
index 0000000..94105ee
@@ -84163,10 +90171,10 @@ index 0000000..94105ee
+')
diff --git a/snapper.te b/snapper.te
new file mode 100644
-index 0000000..ad232be
+index 0000000..3591c8e
--- /dev/null
+++ b/snapper.te
-@@ -0,0 +1,33 @@
+@@ -0,0 +1,81 @@
+policy_module(snapper, 1.0.0)
+
+########################################
@@ -84178,6 +90186,18 @@ index 0000000..ad232be
+type snapperd_exec_t;
+init_daemon_domain(snapperd_t, snapperd_exec_t)
+
++type snapperd_log_t;
++logging_log_file(snapperd_log_t)
++
++type snapperd_conf_t;
++files_config_file(snapperd_conf_t)
++
++type snapperd_data_t;
++files_type(snapperd_data_t)
++
++type snapperd_home_t;
++userdom_user_home_content(snapperd_home_t)
++
+########################################
+#
+# snapperd local policy
@@ -84186,13 +90206,41 @@ index 0000000..ad232be
+allow snapperd_t self:fifo_file rw_fifo_file_perms;
+allow snapperd_t self:unix_stream_socket create_stream_socket_perms;
+
++manage_files_pattern(snapperd_t, snapperd_log_t, snapperd_log_t)
++logging_log_filetrans(snapperd_t, snapperd_log_t, file)
++
++manage_files_pattern(snapperd_t, snapperd_conf_t, snapperd_conf_t)
++manage_dirs_pattern(snapperd_t, snapperd_conf_t, snapperd_conf_t)
++manage_lnk_files_pattern(snapperd_t, snapperd_conf_t, snapperd_conf_t)
++
++manage_files_pattern(snapperd_t, snapperd_data_t, snapperd_data_t)
++manage_dirs_pattern(snapperd_t, snapperd_data_t, snapperd_data_t)
++manage_lnk_files_pattern(snapperd_t, snapperd_data_t, snapperd_data_t)
++
++manage_files_pattern(snapperd_t, snapperd_home_t, snapperd_home_t)
++manage_dirs_pattern(snapperd_t, snapperd_home_t, snapperd_home_t)
++manage_lnk_files_pattern(snapperd_t, snapperd_home_t, snapperd_home_t)
++
++domain_read_all_domains_state(snapperd_t)
++
++corecmd_exec_shell(snapperd_t)
++corecmd_exec_bin(snapperd_t)
++
++files_write_all_dirs(snapperd_t)
++files_setattr_all_mountpoints(snapperd_t)
++files_relabelto_all_mountpoints(snapperd_t)
++files_relabelfrom_isid_type(snapperd_t)
++files_read_all_files(snapperd_t)
++files_list_all(snapperd_t)
++
++fs_getattr_all_fs(snapperd_t)
++
+storage_raw_read_fixed_disk(snapperd_t)
+
+auth_use_nsswitch(snapperd_t)
+
-+miscfiles_read_localization(snapperd_t)
-+
+optional_policy(`
++ dbus_system_domain(snapperd_t, snapperd_exec_t)
+ dbus_system_bus_client(snapperd_t)
+ dbus_connect_system_bus(snapperd_t)
+')
@@ -84200,8 +90248,16 @@ index 0000000..ad232be
+optional_policy(`
+ mount_domtrans(snapperd_t)
+')
++
++optional_policy(`
++ lvm_domtrans(snapperd_t)
++')
++
++optional_policy(`
++ unconfined_domain(snapperd_t)
++')
diff --git a/snmp.fc b/snmp.fc
-index c73fa24..408ff61 100644
+index c73fa24..50d80f4 100644
--- a/snmp.fc
+++ b/snmp.fc
@@ -1,6 +1,6 @@
@@ -84220,10 +90276,11 @@ index c73fa24..408ff61 100644
/var/log/snmpd\.log.* -- gen_context(system_u:object_r:snmpd_log_t,s0)
+-/var/run/net-snmpd(/.*)? gen_context(system_u:object_r:snmpd_var_run_t,s0)
+-/var/run/snmpd(/.*)? gen_context(system_u:object_r:snmpd_var_run_t,s0)
+/var/net-snmp(/.*)? gen_context(system_u:object_r:snmpd_var_lib_t,s0)
+
- /var/run/net-snmpd(/.*)? gen_context(system_u:object_r:snmpd_var_run_t,s0)
--/var/run/snmpd(/.*)? gen_context(system_u:object_r:snmpd_var_run_t,s0)
++/var/run/net-snmp(/.*)? gen_context(system_u:object_r:snmpd_var_run_t,s0)
+/var/run/snmpd(/.*)? gen_context(system_u:object_r:snmpd_var_run_t,s0)
/var/run/snmpd\.pid -- gen_context(system_u:object_r:snmpd_var_run_t,s0)
diff --git a/snmp.if b/snmp.if
@@ -84341,7 +90398,7 @@ index 7a9cc9d..86cbca9 100644
init_labeled_script_domtrans($1, snmpd_initrc_exec_t)
domain_system_change_exemption($1)
diff --git a/snmp.te b/snmp.te
-index 81864ce..4b6b771 100644
+index 81864ce..e0f790d 100644
--- a/snmp.te
+++ b/snmp.te
@@ -27,14 +27,16 @@ files_type(snmpd_var_lib_t)
@@ -84397,7 +90454,14 @@ index 81864ce..4b6b771 100644
files_read_etc_runtime_files(snmpd_t)
files_search_home(snmpd_t)
-@@ -112,10 +112,12 @@ auth_use_nsswitch(snmpd_t)
+@@ -107,15 +107,19 @@ fs_search_auto_mountpoints(snmpd_t)
+ storage_dontaudit_read_fixed_disk(snmpd_t)
+ storage_dontaudit_read_removable_device(snmpd_t)
+ storage_dontaudit_write_removable_device(snmpd_t)
++storage_getattr_fixed_disk_dev(snmpd_t)
++storage_getattr_removable_dev(snmpd_t)
+
+ auth_use_nsswitch(snmpd_t)
init_read_utmp(snmpd_t)
init_dontaudit_write_utmp(snmpd_t)
@@ -84411,7 +90475,7 @@ index 81864ce..4b6b771 100644
seutil_dontaudit_search_config(snmpd_t)
-@@ -131,7 +133,11 @@ optional_policy(`
+@@ -131,7 +135,11 @@ optional_policy(`
')
optional_policy(`
@@ -84424,6 +90488,14 @@ index 81864ce..4b6b771 100644
')
optional_policy(`
+@@ -140,6 +148,7 @@ optional_policy(`
+
+ optional_policy(`
+ mta_read_config(snmpd_t)
++ mta_read_aliases(snmpd_t)
+ mta_search_queue(snmpd_t)
+ ')
+
diff --git a/snort.if b/snort.if
index 7d86b34..5f58180 100644
--- a/snort.if
@@ -84457,7 +90529,7 @@ index 7d86b34..5f58180 100644
+ files_list_pids($1)
')
diff --git a/snort.te b/snort.te
-index ccd28bb..80106ac 100644
+index ccd28bb..6e335a9 100644
--- a/snort.te
+++ b/snort.te
@@ -32,10 +32,13 @@ files_pid_file(snort_var_run_t)
@@ -84475,7 +90547,18 @@ index ccd28bb..80106ac 100644
allow snort_t self:netlink_firewall_socket create_socket_perms;
allow snort_t snort_etc_t:dir list_dir_perms;
-@@ -63,7 +66,6 @@ kernel_request_load_module(snort_t)
+@@ -43,9 +46,7 @@ allow snort_t snort_etc_t:file read_file_perms;
+ allow snort_t snort_etc_t:lnk_file read_lnk_file_perms;
+
+ manage_dirs_pattern(snort_t, snort_log_t, snort_log_t)
+-append_files_pattern(snort_t, snort_log_t, snort_log_t)
+-create_files_pattern(snort_t, snort_log_t, snort_log_t)
+-setattr_files_pattern(snort_t, snort_log_t, snort_log_t)
++manage_files_pattern(snort_t, snort_log_t, snort_log_t)
+ logging_log_filetrans(snort_t, snort_log_t, { file dir })
+
+ manage_dirs_pattern(snort_t, snort_tmp_t, snort_tmp_t)
+@@ -63,7 +64,6 @@ kernel_request_load_module(snort_t)
kernel_dontaudit_read_system_state(snort_t)
kernel_read_network_state(snort_t)
@@ -84483,7 +90566,7 @@ index ccd28bb..80106ac 100644
corenet_all_recvfrom_netlabel(snort_t)
corenet_tcp_sendrecv_generic_if(snort_t)
corenet_udp_sendrecv_generic_if(snort_t)
-@@ -86,18 +88,17 @@ dev_rw_generic_usb_dev(snort_t)
+@@ -86,18 +86,17 @@ dev_rw_generic_usb_dev(snort_t)
domain_use_interactive_fds(snort_t)
@@ -84518,7 +90601,7 @@ index 634c6b4..e1edfd9 100644
########################################
diff --git a/sosreport.te b/sosreport.te
-index 703efa3..499d7e9 100644
+index 703efa3..08a6332 100644
--- a/sosreport.te
+++ b/sosreport.te
@@ -19,6 +19,9 @@ files_tmp_file(sosreport_tmp_t)
@@ -84539,7 +90622,7 @@ index 703efa3..499d7e9 100644
-allow sosreport_t self:process { setsched signull };
+allow sosreport_t self:capability { kill net_admin net_raw setuid sys_admin sys_nice dac_override chown };
+dontaudit sosreport_t self:capability sys_ptrace;
-+allow sosreport_t self:process { setpgid setsched signull };
++allow sosreport_t self:process { setpgid setsched signal_perms };
allow sosreport_t self:fifo_file rw_fifo_file_perms;
allow sosreport_t self:tcp_socket { accept listen };
allow sosreport_t self:unix_stream_socket { accept listen };
@@ -84561,10 +90644,12 @@ index 703efa3..499d7e9 100644
manage_files_pattern(sosreport_t, sosreport_tmpfs_t, sosreport_tmpfs_t)
fs_tmpfs_filetrans(sosreport_t, sosreport_tmpfs_t, file)
-@@ -49,6 +61,17 @@ kernel_read_software_raid_state(sosreport_t)
+@@ -48,6 +60,18 @@ kernel_read_all_sysctls(sosreport_t)
+ kernel_read_software_raid_state(sosreport_t)
kernel_search_debugfs(sosreport_t)
kernel_read_messages(sosreport_t)
-
++kernel_request_load_module(sosreport_t)
++
+corenet_all_recvfrom_netlabel(sosreport_t)
+corenet_tcp_sendrecv_generic_if(sosreport_t)
+corenet_tcp_sendrecv_generic_node(sosreport_t)
@@ -84575,21 +90660,21 @@ index 703efa3..499d7e9 100644
+corenet_tcp_connect_http_port(sosreport_t)
+corenet_tcp_connect_all_ports(sosreport_t)
+corenet_sendrecv_http_client_packets(sosreport_t)
-+
+
corecmd_exec_all_executables(sosreport_t)
- dev_getattr_all_chr_files(sosreport_t)
-@@ -58,6 +81,9 @@ dev_read_rand(sosreport_t)
+@@ -58,6 +82,10 @@ dev_read_rand(sosreport_t)
dev_read_urand(sosreport_t)
dev_read_raw_memory(sosreport_t)
dev_read_sysfs(sosreport_t)
+dev_rw_generic_usb_dev(sosreport_t)
++dev_rw_lvm_control(sosreport_t)
+dev_getattr_all_chr_files(sosreport_t)
+dev_getattr_all_blk_files(sosreport_t)
domain_getattr_all_domains(sosreport_t)
domain_read_all_domains_state(sosreport_t)
-@@ -65,12 +91,13 @@ domain_getattr_all_sockets(sosreport_t)
+@@ -65,12 +93,13 @@ domain_getattr_all_sockets(sosreport_t)
domain_getattr_all_pipes(sosreport_t)
files_getattr_all_sockets(sosreport_t)
@@ -84604,7 +90689,7 @@ index 703efa3..499d7e9 100644
files_read_var_lib_files(sosreport_t)
files_read_var_symlinks(sosreport_t)
files_read_kernel_modules(sosreport_t)
-@@ -79,27 +106,41 @@ files_manage_etc_runtime_files(sosreport_t)
+@@ -79,27 +108,49 @@ files_manage_etc_runtime_files(sosreport_t)
files_etc_filetrans_etc_runtime(sosreport_t, file)
fs_getattr_all_fs(sosreport_t)
@@ -84627,8 +90712,11 @@ index 703efa3..499d7e9 100644
init_domtrans_script(sosreport_t)
+init_getattr_initctl(sosreport_t)
++init_status(sosreport_t)
++init_stream_connect(sosreport_t)
libs_domtrans_ldconfig(sosreport_t)
++libs_use_ld_so(sosreport_t)
logging_read_all_logs(sosreport_t)
logging_send_syslog_msg(sosreport_t)
@@ -84642,6 +90730,11 @@ index 703efa3..499d7e9 100644
abrt_manage_pid_files(sosreport_t)
abrt_manage_cache(sosreport_t)
+ abrt_stream_connect(sosreport_t)
++ abrt_signal(sosreport_t)
++')
++
++optional_policy(`
++ bootloader_exec(sosreport_t)
+')
+
+optional_policy(`
@@ -84649,10 +90742,15 @@ index 703efa3..499d7e9 100644
')
optional_policy(`
-@@ -111,6 +152,11 @@ optional_policy(`
+@@ -111,6 +162,16 @@ optional_policy(`
')
optional_policy(`
++ lvm_read_config(sosreport_t)
++ lvm_dontaudit_access_check_lock(sosreport_t)
++')
++
++optional_policy(`
+ # needed by modinfo
+ modutils_read_module_deps(sosreport_t)
+')
@@ -84661,6 +90759,61 @@ index 703efa3..499d7e9 100644
fstools_domtrans(sosreport_t)
')
+@@ -120,6 +181,10 @@ optional_policy(`
+ optional_policy(`
+ hal_dbus_chat(sosreport_t)
+ ')
++
++ optional_policy(`
++ rpm_dbus_chat(sosreport_t)
++ ')
+ ')
+
+ optional_policy(`
+@@ -131,15 +196,40 @@ optional_policy(`
+ ')
+
+ optional_policy(`
++ prelink_domtrans(sosreport_t)
++')
++
++optional_policy(`
+ pulseaudio_run(sosreport_t, sosreport_roles)
+ ')
+
+ optional_policy(`
+- rpm_exec(sosreport_t)
+- rpm_dontaudit_manage_db(sosreport_t)
+- rpm_read_db(sosreport_t)
++ rhsmcertd_manage_lib_files(sosreport_t)
++ rhsmcertd_manage_pid_files(sosreport_t)
++')
++
++optional_policy(`
++ rpm_dontaudit_manage_db(sosreport_t)
++ rpm_manage_cache(sosreport_t)
++ rpm_manage_log(sosreport_t)
++ rpm_manage_pid_files(sosreport_t)
++ rpm_named_filetrans_log_files(sosreport_t)
++ rpm_read_db(sosreport_t)
++ rpm_signull(sosreport_t)
++')
++
++optional_policy(`
++ setroubleshoot_signull(sosreport_t)
++')
++
++optional_policy(`
++ unconfined_signull(sosreport_t)
+ ')
+
+ optional_policy(`
+ xserver_stream_connect(sosreport_t)
+ ')
++
++optional_policy(`
++ unconfined_domain(sosreport_t)
++')
diff --git a/soundserver.if b/soundserver.if
index a5abc5a..b9eff74 100644
--- a/soundserver.if
@@ -85229,7 +91382,7 @@ index 1499b0b..6950cab 100644
- spamassassin_role($2, $1)
')
diff --git a/spamassassin.te b/spamassassin.te
-index 4faa7e0..4babad1 100644
+index 4faa7e0..32f670e 100644
--- a/spamassassin.te
+++ b/spamassassin.te
@@ -1,4 +1,4 @@
@@ -85308,7 +91461,7 @@ index 4faa7e0..4babad1 100644
type spamd_initrc_exec_t;
init_script_file(spamd_initrc_exec_t)
-@@ -72,87 +39,196 @@ type spamd_log_t;
+@@ -72,87 +39,199 @@ type spamd_log_t;
logging_log_file(spamd_log_t)
type spamd_spool_t;
@@ -85445,6 +91598,8 @@ index 4faa7e0..4babad1 100644
+manage_lnk_files_pattern(spamd_t, spamassassin_home_t, spamassassin_home_t)
+manage_fifo_files_pattern(spamd_t, spamassassin_home_t, spamassassin_home_t)
+manage_sock_files_pattern(spamd_t, spamassassin_home_t, spamassassin_home_t)
++userdom_user_home_dir_filetrans(spamd_t, spamassassin_home_t, dir, ".spamassassin")
++userdom_admin_home_dir_filetrans(spamd_t, spamassassin_home_t, dir, ".spamassassin")
+userdom_home_manager(spamassassin_t)
+
kernel_read_kernel_sysctls(spamassassin_t)
@@ -85510,6 +91665,7 @@ index 4faa7e0..4babad1 100644
+ userdom_manage_user_home_content_dirs(spamd_t)
+ userdom_manage_user_home_content_files(spamd_t)
+ userdom_manage_user_home_content_symlinks(spamd_t)
++ userdom_exec_user_bin_files(spamd_t)
')
-tunable_policy(`use_samba_home_dirs',`
@@ -85527,7 +91683,7 @@ index 4faa7e0..4babad1 100644
nis_use_ypbind_uncond(spamassassin_t)
')
')
-@@ -160,6 +236,8 @@ optional_policy(`
+@@ -160,6 +239,8 @@ optional_policy(`
optional_policy(`
mta_read_config(spamassassin_t)
sendmail_stub(spamassassin_t)
@@ -85536,7 +91692,7 @@ index 4faa7e0..4babad1 100644
')
########################################
-@@ -167,72 +245,85 @@ optional_policy(`
+@@ -167,72 +248,85 @@ optional_policy(`
# Client local policy
#
@@ -85653,7 +91809,7 @@ index 4faa7e0..4babad1 100644
optional_policy(`
abrt_stream_connect(spamc_t)
-@@ -243,6 +334,7 @@ optional_policy(`
+@@ -243,6 +337,7 @@ optional_policy(`
')
optional_policy(`
@@ -85661,7 +91817,7 @@ index 4faa7e0..4babad1 100644
evolution_stream_connect(spamc_t)
')
-@@ -251,52 +343,55 @@ optional_policy(`
+@@ -251,52 +346,55 @@ optional_policy(`
')
optional_policy(`
@@ -85742,7 +91898,7 @@ index 4faa7e0..4babad1 100644
logging_log_filetrans(spamd_t, spamd_log_t, file)
manage_dirs_pattern(spamd_t, spamd_spool_t, spamd_spool_t)
-@@ -308,7 +403,8 @@ manage_dirs_pattern(spamd_t, spamd_tmp_t, spamd_tmp_t)
+@@ -308,7 +406,8 @@ manage_dirs_pattern(spamd_t, spamd_tmp_t, spamd_tmp_t)
manage_files_pattern(spamd_t, spamd_tmp_t, spamd_tmp_t)
files_tmp_filetrans(spamd_t, spamd_tmp_t, { file dir })
@@ -85752,7 +91908,7 @@ index 4faa7e0..4babad1 100644
manage_files_pattern(spamd_t, spamd_var_lib_t, spamd_var_lib_t)
manage_lnk_files_pattern(spamd_t, spamd_var_lib_t, spamd_var_lib_t)
-@@ -317,12 +413,13 @@ manage_files_pattern(spamd_t, spamd_var_run_t, spamd_var_run_t)
+@@ -317,12 +416,13 @@ manage_files_pattern(spamd_t, spamd_var_run_t, spamd_var_run_t)
manage_sock_files_pattern(spamd_t, spamd_var_run_t, spamd_var_run_t)
files_pid_filetrans(spamd_t, spamd_var_run_t, { file dir })
@@ -85768,7 +91924,7 @@ index 4faa7e0..4babad1 100644
corenet_all_recvfrom_netlabel(spamd_t)
corenet_tcp_sendrecv_generic_if(spamd_t)
corenet_udp_sendrecv_generic_if(spamd_t)
-@@ -331,78 +428,58 @@ corenet_udp_sendrecv_generic_node(spamd_t)
+@@ -331,78 +431,59 @@ corenet_udp_sendrecv_generic_node(spamd_t)
corenet_tcp_sendrecv_all_ports(spamd_t)
corenet_udp_sendrecv_all_ports(spamd_t)
corenet_tcp_bind_generic_node(spamd_t)
@@ -85778,6 +91934,7 @@ index 4faa7e0..4babad1 100644
corenet_tcp_bind_spamd_port(spamd_t)
-
-corenet_sendrecv_razor_client_packets(spamd_t)
++corenet_tcp_connect_spamd_port(spamd_t)
corenet_tcp_connect_razor_port(spamd_t)
-
-corenet_sendrecv_smtp_client_packets(spamd_t)
@@ -85871,7 +92028,7 @@ index 4faa7e0..4babad1 100644
')
optional_policy(`
-@@ -421,21 +498,13 @@ optional_policy(`
+@@ -421,21 +502,13 @@ optional_policy(`
')
optional_policy(`
@@ -85895,7 +92052,7 @@ index 4faa7e0..4babad1 100644
')
optional_policy(`
-@@ -443,8 +512,8 @@ optional_policy(`
+@@ -443,8 +516,8 @@ optional_policy(`
')
optional_policy(`
@@ -85905,7 +92062,7 @@ index 4faa7e0..4babad1 100644
')
optional_policy(`
-@@ -455,7 +524,12 @@ optional_policy(`
+@@ -455,7 +528,12 @@ optional_policy(`
optional_policy(`
razor_domtrans(spamd_t)
razor_read_lib_files(spamd_t)
@@ -85919,7 +92076,7 @@ index 4faa7e0..4babad1 100644
')
optional_policy(`
-@@ -463,9 +537,9 @@ optional_policy(`
+@@ -463,9 +541,9 @@ optional_policy(`
')
optional_policy(`
@@ -85930,7 +92087,7 @@ index 4faa7e0..4babad1 100644
')
optional_policy(`
-@@ -474,32 +548,32 @@ optional_policy(`
+@@ -474,32 +552,32 @@ optional_policy(`
########################################
#
@@ -85973,7 +92130,7 @@ index 4faa7e0..4babad1 100644
corecmd_exec_bin(spamd_update_t)
corecmd_exec_shell(spamd_update_t)
-@@ -508,25 +582,21 @@ dev_read_urand(spamd_update_t)
+@@ -508,25 +586,21 @@ dev_read_urand(spamd_update_t)
domain_use_interactive_fds(spamd_update_t)
@@ -86005,6 +92162,222 @@ index 4faa7e0..4babad1 100644
+ gpg_manage_home_content(spamd_update_t)
')
+
+diff --git a/speech-dispatcher.fc b/speech-dispatcher.fc
+new file mode 100644
+index 0000000..545f682
+--- /dev/null
++++ b/speech-dispatcher.fc
+@@ -0,0 +1,5 @@
++/usr/bin/speech-dispatcher -- gen_context(system_u:object_r:speech-dispatcher_exec_t,s0)
++
++/usr/lib/systemd/system/speech-dispatcherd.service -- gen_context(system_u:object_r:speech-dispatcher_unit_file_t,s0)
++
++/var/log/speech-dispatcher(/.*)? gen_context(system_u:object_r:speech-dispatcher_log_t,s0)
+diff --git a/speech-dispatcher.if b/speech-dispatcher.if
+new file mode 100644
+index 0000000..ddfed09
+--- /dev/null
++++ b/speech-dispatcher.if
+@@ -0,0 +1,142 @@
++
++## speech-dispatcher - server process managing speech requests in Speech Dispatcher
++
++########################################
++##
++## Execute speech-dispatcher in the speech-dispatcher domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`speech-dispatcher_domtrans',`
++ gen_require(`
++ type speech-dispatcher_t, speech-dispatcher_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, speech-dispatcher_exec_t, speech-dispatcher_t)
++')
++########################################
++##
++## Read speech-dispatcher's log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`speech-dispatcher_read_log',`
++ gen_require(`
++ type speech-dispatcher_log_t;
++ ')
++
++ logging_search_logs($1)
++ read_files_pattern($1, speech-dispatcher_log_t, speech-dispatcher_log_t)
++')
++
++########################################
++##
++## Append to speech-dispatcher log files.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`speech-dispatcher_append_log',`
++ gen_require(`
++ type speech-dispatcher_log_t;
++ ')
++
++ logging_search_logs($1)
++ append_files_pattern($1, speech-dispatcher_log_t, speech-dispatcher_log_t)
++')
++
++########################################
++##
++## Manage speech-dispatcher log files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`speech-dispatcher_manage_log',`
++ gen_require(`
++ type speech-dispatcher_log_t;
++ ')
++
++ logging_search_logs($1)
++ manage_dirs_pattern($1, speech-dispatcher_log_t, speech-dispatcher_log_t)
++ manage_files_pattern($1, speech-dispatcher_log_t, speech-dispatcher_log_t)
++ manage_lnk_files_pattern($1, speech-dispatcher_log_t, speech-dispatcher_log_t)
++')
++########################################
++##
++## Execute speech-dispatcher server in the speech-dispatcher domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`speech-dispatcher_systemctl',`
++ gen_require(`
++ type speech-dispatcher_t;
++ type speech-dispatcher_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 speech-dispatcher_unit_file_t:file read_file_perms;
++ allow $1 speech-dispatcher_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, speech-dispatcher_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an speech-dispatcher environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`speech-dispatcher_admin',`
++ gen_require(`
++ type speech-dispatcher_t;
++ type speech-dispatcher_log_t;
++ type speech-dispatcher_unit_file_t;
++ ')
++
++ allow $1 speech-dispatcher_t:process { signal_perms };
++ ps_process_pattern($1, speech-dispatcher_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 speech-dispatcher_t:process ptrace;
++ ')
++
++ logging_search_logs($1)
++ admin_pattern($1, speech-dispatcher_log_t)
++
++ speech-dispatcher_systemctl($1)
++ admin_pattern($1, speech-dispatcher_unit_file_t)
++ allow $1 speech-dispatcher_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/speech-dispatcher.te b/speech-dispatcher.te
+new file mode 100644
+index 0000000..931fa6c
+--- /dev/null
++++ b/speech-dispatcher.te
+@@ -0,0 +1,51 @@
++policy_module(speech-dispatcher, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++type speech-dispatcher_t;
++type speech-dispatcher_exec_t;
++init_daemon_domain(speech-dispatcher_t, speech-dispatcher_exec_t)
++application_executable_file(speech-dispatcher_exec_t)
++
++type speech-dispatcher_log_t;
++logging_log_file(speech-dispatcher_log_t)
++
++type speech-dispatcher_unit_file_t;
++systemd_unit_file(speech-dispatcher_unit_file_t)
++
++type speech-dispatcher_tmp_t;
++files_tmp_file(speech-dispatcher_tmp_t)
++
++type speech-dispatcher_tmpfs_t;
++files_tmpfs_file(speech-dispatcher_tmpfs_t)
++
++########################################
++#
++# speech-dispatcher local policy
++#
++allow speech-dispatcher_t self:process { fork signal_perms };
++allow speech-dispatcher_t self:fifo_file rw_fifo_file_perms;
++allow speech-dispatcher_t self:unix_stream_socket create_stream_socket_perms;
++allow speech-dispatcher_t self:tcp_socket create_socket_perms;
++
++manage_dirs_pattern(speech-dispatcher_t, speech-dispatcher_log_t, speech-dispatcher_log_t)
++manage_files_pattern(speech-dispatcher_t, speech-dispatcher_log_t, speech-dispatcher_log_t)
++logging_log_filetrans(speech-dispatcher_t, speech-dispatcher_log_t, { dir })
++
++manage_files_pattern(speech-dispatcher_t, speech-dispatcher_tmp_t, speech-dispatcher_tmp_t)
++files_tmp_filetrans(speech-dispatcher_t, speech-dispatcher_tmp_t, { file })
++
++manage_files_pattern(speech-dispatcher_t, speech-dispatcher_tmpfs_t, speech-dispatcher_tmpfs_t)
++fs_tmpfs_filetrans(speech-dispatcher_t, speech-dispatcher_tmpfs_t, { file })
++
++kernel_read_system_state(speech-dispatcher_t)
++
++auth_read_passwd(speech-dispatcher_t)
++
++corenet_tcp_connect_pdps_port(speech-dispatcher_t)
++
++dev_read_urand(speech-dispatcher_t)
++
diff --git a/speedtouch.te b/speedtouch.te
index 9025dbd..388ce0a 100644
--- a/speedtouch.te
@@ -86278,7 +92651,7 @@ index dbb005a..45291bb 100644
-/var/run/sssd\.pid -- gen_context(system_u:object_r:sssd_var_run_t,s0)
+/var/run/sssd.pid -- gen_context(system_u:object_r:sssd_var_run_t,s0)
diff --git a/sssd.if b/sssd.if
-index a240455..16a04bf 100644
+index a240455..3dd6f00 100644
--- a/sssd.if
+++ b/sssd.if
@@ -1,21 +1,21 @@
@@ -86572,7 +92945,7 @@ index a240455..16a04bf 100644
##
##
##
-@@ -317,8 +388,27 @@ interface(`sssd_stream_connect',`
+@@ -317,8 +388,46 @@ interface(`sssd_stream_connect',`
########################################
##
@@ -86597,12 +92970,31 @@ index a240455..16a04bf 100644
+
+########################################
+##
++## Manage keys for all user domains.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`sssd_manage_keys',`
++ gen_require(`
++ type sssd_t;
++ ')
++
++ allow $1 sssd_t:key manage_key_perms;
++ allow sssd_t $1:key manage_key_perms;
++')
++
++########################################
++##
+## All of the rules required to administrate
+## an sssd environment
##
##
##
-@@ -327,7 +417,7 @@ interface(`sssd_stream_connect',`
+@@ -327,7 +436,7 @@ interface(`sssd_stream_connect',`
##
##
##
@@ -86611,7 +93003,7 @@ index a240455..16a04bf 100644
##
##
##
-@@ -335,27 +425,29 @@ interface(`sssd_stream_connect',`
+@@ -335,27 +444,29 @@ interface(`sssd_stream_connect',`
interface(`sssd_admin',`
gen_require(`
type sssd_t, sssd_public_t, sssd_initrc_exec_t;
@@ -86653,7 +93045,7 @@ index a240455..16a04bf 100644
- admin_pattern($1, sssd_log_t)
')
diff --git a/sssd.te b/sssd.te
-index 8b537aa..3bce4df 100644
+index 8b537aa..fb39837 100644
--- a/sssd.te
+++ b/sssd.te
@@ -1,4 +1,4 @@
@@ -86696,9 +93088,11 @@ index 8b537aa..3bce4df 100644
logging_log_filetrans(sssd_t, sssd_var_log_t, file)
manage_dirs_pattern(sssd_t, sssd_var_run_t, sssd_var_run_t)
-@@ -63,16 +64,9 @@ files_pid_filetrans(sssd_t, sssd_var_run_t, { file dir })
+@@ -62,17 +63,11 @@ files_pid_filetrans(sssd_t, sssd_var_run_t, { file dir })
+
kernel_read_network_state(sssd_t)
kernel_read_system_state(sssd_t)
++kernel_request_load_module(sssd_t)
-corenet_all_recvfrom_unlabeled(sssd_t)
-corenet_all_recvfrom_netlabel(sssd_t)
@@ -86714,7 +93108,7 @@ index 8b537aa..3bce4df 100644
corecmd_exec_bin(sssd_t)
-@@ -83,9 +77,7 @@ domain_read_all_domains_state(sssd_t)
+@@ -83,9 +78,7 @@ domain_read_all_domains_state(sssd_t)
domain_obj_id_change_exemption(sssd_t)
files_list_tmp(sssd_t)
@@ -86724,7 +93118,7 @@ index 8b537aa..3bce4df 100644
files_list_var_lib(sssd_t)
fs_list_inotifyfs(sssd_t)
-@@ -94,14 +86,15 @@ selinux_validate_context(sssd_t)
+@@ -94,14 +87,15 @@ selinux_validate_context(sssd_t)
seutil_read_file_contexts(sssd_t)
# sssd wants to write /etc/selinux//logins/ for SELinux PAM module
@@ -86742,7 +93136,7 @@ index 8b537aa..3bce4df 100644
auth_domtrans_chk_passwd(sssd_t)
auth_domtrans_upd_passwd(sssd_t)
auth_manage_cache(sssd_t)
-@@ -112,18 +105,32 @@ logging_send_syslog_msg(sssd_t)
+@@ -112,18 +106,34 @@ logging_send_syslog_msg(sssd_t)
logging_send_audit_msgs(sssd_t)
miscfiles_read_generic_certs(sssd_t)
@@ -86753,6 +93147,7 @@ index 8b537aa..3bce4df 100644
+userdom_manage_tmp_role(system_r, sssd_t)
+userdom_manage_all_users_keys(sssd_t)
++userdom_home_reader(sssd_t)
+
optional_policy(`
dbus_system_bus_client(sssd_t)
@@ -86769,15 +93164,16 @@ index 8b537aa..3bce4df 100644
+
+optional_policy(`
+ dirsrv_stream_connect(sssd_t)
- ')
++')
+
+optional_policy(`
+ ldap_stream_connect(sssd_t)
-+ ldap_read_certs(sssd_t)
++ ldap_read_certs(sssd_t)
+')
+
-+userdom_home_reader(sssd_t)
-+
++optional_policy(`
++ systemd_login_read_pid_files(sssd_t)
+ ')
diff --git a/stapserver.fc b/stapserver.fc
new file mode 100644
index 0000000..0ccce59
@@ -87253,7 +93649,7 @@ index 2ac91b6..dd2ac36 100644
')
+
diff --git a/svnserve.te b/svnserve.te
-index c6aaac7..a5600a8 100644
+index c6aaac7..84cdcac 100644
--- a/svnserve.te
+++ b/svnserve.te
@@ -12,12 +12,18 @@ init_daemon_domain(svnserve_t, svnserve_exec_t)
@@ -87297,12 +93693,16 @@ index c6aaac7..a5600a8 100644
corenet_all_recvfrom_unlabeled(svnserve_t)
corenet_all_recvfrom_netlabel(svnserve_t)
corenet_tcp_sendrecv_generic_if(svnserve_t)
-@@ -54,6 +62,4 @@ corenet_udp_sendrecv_svn_port(svnserve_t)
+@@ -52,8 +60,8 @@ corenet_tcp_sendrecv_svn_port(svnserve_t)
+ corenet_udp_bind_svn_port(svnserve_t)
+ corenet_udp_sendrecv_svn_port(svnserve_t)
- logging_send_syslog_msg(svnserve_t)
+-logging_send_syslog_msg(svnserve_t)
++dev_read_urand(svnserve_t)
-miscfiles_read_localization(svnserve_t)
--
++logging_send_syslog_msg(svnserve_t)
+
sysnet_dns_name_resolve(svnserve_t)
diff --git a/swift.fc b/swift.fc
new file mode 100644
@@ -87465,10 +93865,10 @@ index 0000000..df82c36
+')
diff --git a/swift.te b/swift.te
new file mode 100644
-index 0000000..c7b2bf6
+index 0000000..7bef550
--- /dev/null
+++ b/swift.te
-@@ -0,0 +1,69 @@
+@@ -0,0 +1,80 @@
+policy_module(swift, 1.0.0)
+
+########################################
@@ -87480,6 +93880,9 @@ index 0000000..c7b2bf6
+type swift_exec_t;
+init_daemon_domain(swift_t, swift_exec_t)
+
++type swift_tmp_t;
++files_tmpfs_file(swift_tmp_t)
++
+type swift_var_cache_t;
+files_type(swift_var_cache_t)
+
@@ -87504,6 +93907,10 @@ index 0000000..c7b2bf6
+allow swift_t self:unix_stream_socket create_stream_socket_perms;
+allow swift_t self:unix_dgram_socket create_socket_perms;
+
++manage_dirs_pattern(swift_t, swift_tmp_t, swift_tmp_t)
++manage_files_pattern(swift_t, swift_tmp_t, swift_tmp_t)
++files_tmp_filetrans(swift_t, swift_tmp_t, { dir file })
++
+manage_dirs_pattern(swift_t, swift_var_cache_t, swift_var_cache_t)
+manage_files_pattern(swift_t, swift_var_cache_t, swift_var_cache_t)
+manage_lnk_files_pattern(swift_t, swift_var_cache_t, swift_var_cache_t)
@@ -87538,6 +93945,10 @@ index 0000000..c7b2bf6
+logging_send_syslog_msg(swift_t)
+
+userdom_dontaudit_search_user_home_dirs(swift_t)
++
++optional_policy(`
++ rpm_exec(swift_t)
++')
diff --git a/swift_alias.fc b/swift_alias.fc
new file mode 100644
index 0000000..b7db254
@@ -89724,11 +96135,10 @@ index 0000000..39d17b7
+files_pid_filetrans(thin_aeolus_configserver_t, thin_aeolus_configserver_var_run_t, { dir file })
diff --git a/thumb.fc b/thumb.fc
new file mode 100644
-index 0000000..92b6843
+index 0000000..115bf6c
--- /dev/null
+++ b/thumb.fc
-@@ -0,0 +1,18 @@
-+HOME_DIR/\.texlive2012(/.*)? gen_context(system_u:object_r:thumb_home_t,s0)
+@@ -0,0 +1,17 @@
+HOME_DIR/\.thumbnails(/.*)? gen_context(system_u:object_r:thumb_home_t,s0)
+HOME_DIR/\.cache/thumbnails(/.*)? gen_context(system_u:object_r:thumb_home_t,s0)
+HOME_DIR/missfont\.log.* gen_context(system_u:object_r:thumb_home_t,s0)
@@ -89745,7 +96155,7 @@ index 0000000..92b6843
+/usr/bin/ffmpegthumbnailer -- gen_context(system_u:object_r:thumb_exec_t,s0)
+/usr/bin/mate-thumbnail-font -- gen_context(system_u:object_r:thumb_exec_t,s0)
+
-+/usr/lib/tumbler[^/]*/tumblerd -- gen_context(system_u:object_r:thumb_exec_t,s0)
++/usr/lib/tumbler-?[^/]*/tumblerd -- gen_context(system_u:object_r:thumb_exec_t,s0)
diff --git a/thumb.if b/thumb.if
new file mode 100644
index 0000000..c1fd8b4
@@ -89887,10 +96297,10 @@ index 0000000..c1fd8b4
+')
diff --git a/thumb.te b/thumb.te
new file mode 100644
-index 0000000..b57cc3c
+index 0000000..0e30ce2
--- /dev/null
+++ b/thumb.te
-@@ -0,0 +1,149 @@
+@@ -0,0 +1,157 @@
+policy_module(thumb, 1.0.0)
+
+########################################
@@ -89940,6 +96350,7 @@ index 0000000..b57cc3c
+userdom_user_home_dir_filetrans(thumb_t, thumb_home_t, file, "missfont.log")
+userdom_dontaudit_access_check_user_content(thumb_t)
+userdom_rw_inherited_user_tmpfs_files(thumb_t)
++userdom_manage_home_texlive(thumb_t)
+
+manage_files_pattern(thumb_t, thumb_tmp_t, thumb_tmp_t)
+manage_dirs_pattern(thumb_t, thumb_tmp_t, thumb_tmp_t)
@@ -90005,14 +96416,21 @@ index 0000000..b57cc3c
+xserver_use_user_fonts(thumb_t)
+
+optional_policy(`
-+ dbus_dontaudit_stream_connect_session_bus(thumb_t)
-+ dbus_dontaudit_chat_session_bus(thumb_t)
++ bumblebee_stream_connect(thumb_t)
++')
++
++optional_policy(`
++ dbus_exec_dbusd(thumb_t)
++ dbus_connect_session_bus(thumb_t)
++ dbus_stream_connect_session_bus(thumb_t)
++ dbus_chat_session_bus(thumb_t)
+')
+
+optional_policy(`
+ # .config
+ gnome_dontaudit_search_config(thumb_t)
+ gnome_dontaudit_write_config_files(thumb_t)
++ gnome_append_home_config(thumb_t)
+ gnome_append_generic_cache_files(thumb_t)
+ gnome_read_generic_data_home_files(thumb_t)
+ gnome_dontaudit_rw_generic_cache_files(thumb_t)
@@ -90782,7 +97200,7 @@ index 61c2e07..5e1df41 100644
+ ')
')
diff --git a/tor.te b/tor.te
-index 964a395..78962c4 100644
+index 964a395..ea77295 100644
--- a/tor.te
+++ b/tor.te
@@ -13,6 +13,13 @@ policy_module(tor, 1.8.4)
@@ -90817,7 +97235,15 @@ index 964a395..78962c4 100644
corenet_sendrecv_dns_server_packets(tor_t)
corenet_udp_bind_dns_port(tor_t)
corenet_udp_sendrecv_dns_port(tor_t)
-@@ -98,19 +107,22 @@ dev_read_urand(tor_t)
+@@ -85,6 +94,7 @@ corenet_udp_sendrecv_dns_port(tor_t)
+ corenet_sendrecv_tor_server_packets(tor_t)
+ corenet_tcp_bind_tor_port(tor_t)
+ corenet_tcp_sendrecv_tor_port(tor_t)
++corenet_tcp_bind_hplip_port(tor_t)
+
+ corenet_sendrecv_all_client_packets(tor_t)
+ corenet_tcp_connect_all_ports(tor_t)
+@@ -98,19 +108,22 @@ dev_read_urand(tor_t)
domain_use_interactive_fds(tor_t)
files_read_etc_runtime_files(tor_t)
@@ -90934,7 +97360,7 @@ index e29db63..061fb98 100644
domain_system_change_exemption($1)
role_transition $2 tuned_initrc_exec_t system_r;
diff --git a/tuned.te b/tuned.te
-index 7116181..6b315d8 100644
+index 7116181..3f42127 100644
--- a/tuned.te
+++ b/tuned.te
@@ -21,6 +21,9 @@ files_config_file(tuned_rw_etc_t)
@@ -90947,7 +97373,7 @@ index 7116181..6b315d8 100644
type tuned_var_run_t;
files_pid_file(tuned_var_run_t)
-@@ -29,10 +32,13 @@ files_pid_file(tuned_var_run_t)
+@@ -29,10 +32,14 @@ files_pid_file(tuned_var_run_t)
# Local policy
#
@@ -90960,10 +97386,11 @@ index 7116181..6b315d8 100644
+allow tuned_t self:netlink_kobject_uevent_socket create_socket_perms;
+allow tuned_t self:netlink_socket create_socket_perms;
+allow tuned_t self:udp_socket create_socket_perms;
++allow tuned_t self:socket create_socket_perms;
read_files_pattern(tuned_t, tuned_etc_t, tuned_etc_t)
exec_files_pattern(tuned_t, tuned_etc_t, tuned_etc_t)
-@@ -41,14 +47,18 @@ manage_files_pattern(tuned_t, tuned_etc_t, tuned_rw_etc_t)
+@@ -41,14 +48,19 @@ manage_files_pattern(tuned_t, tuned_etc_t, tuned_rw_etc_t)
files_etc_filetrans(tuned_t, tuned_rw_etc_t, file, "active_profile")
manage_dirs_pattern(tuned_t, tuned_log_t, tuned_log_t)
@@ -90982,11 +97409,12 @@ index 7116181..6b315d8 100644
manage_files_pattern(tuned_t, tuned_var_run_t, tuned_var_run_t)
manage_dirs_pattern(tuned_t, tuned_var_run_t, tuned_var_run_t)
files_pid_filetrans(tuned_t, tuned_var_run_t, { dir file })
++allow tuned_t tuned_var_run_t:file relabel_file_perms;
+can_exec(tuned_t, tuned_var_run_t)
kernel_read_system_state(tuned_t)
kernel_read_network_state(tuned_t)
-@@ -57,6 +67,8 @@ kernel_request_load_module(tuned_t)
+@@ -57,6 +69,8 @@ kernel_request_load_module(tuned_t)
kernel_rw_kernel_sysctl(tuned_t)
kernel_rw_hotplug_sysctls(tuned_t)
kernel_rw_vm_sysctls(tuned_t)
@@ -90995,7 +97423,7 @@ index 7116181..6b315d8 100644
corecmd_exec_bin(tuned_t)
corecmd_exec_shell(tuned_t)
-@@ -64,31 +76,55 @@ corecmd_exec_shell(tuned_t)
+@@ -64,31 +78,60 @@ corecmd_exec_shell(tuned_t)
dev_getattr_all_blk_files(tuned_t)
dev_getattr_all_chr_files(tuned_t)
dev_read_urand(tuned_t)
@@ -91008,18 +97436,23 @@ index 7116181..6b315d8 100644
files_dontaudit_search_home(tuned_t)
-files_dontaudit_list_tmp(tuned_t)
+files_list_tmp(tuned_t)
-
--fs_getattr_xattr_fs(tuned_t)
++
+fs_getattr_all_fs(tuned_t)
+fs_search_all(tuned_t)
+fs_rw_hugetlbfs_files(tuned_t)
-+
+
+-fs_getattr_xattr_fs(tuned_t)
+auth_use_nsswitch(tuned_t)
logging_send_syslog_msg(tuned_t)
++#bug in tuned
++logging_manage_syslog_config(tuned_t)
++logging_filetrans_named_conf(tuned_t)
-miscfiles_read_localization(tuned_t)
+mount_read_pid_files(tuned_t)
++
++modutils_domtrans_insmod(tuned_t)
udev_read_pid_files(tuned_t)
@@ -91055,6 +97488,14 @@ index 7116181..6b315d8 100644
optional_policy(`
sysnet_domtrans_ifconfig(tuned_t)
')
+@@ -96,3 +139,7 @@ optional_policy(`
+ optional_policy(`
+ unconfined_dbus_send(tuned_t)
+ ')
++
++optional_policy(`
++ unconfined_domain(tuned_t)
++')
diff --git a/tvtime.if b/tvtime.if
index 1bb0f7c..372be2f 100644
--- a/tvtime.if
@@ -92158,7 +98599,7 @@ index af9acc0..cdaf82e 100644
admin_pattern($1, uucpd_log_t)
diff --git a/uucp.te b/uucp.te
-index 380902c..75545d6 100644
+index 380902c..c09534e 100644
--- a/uucp.te
+++ b/uucp.te
@@ -31,7 +31,7 @@ type uucpd_ro_t;
@@ -92170,7 +98611,7 @@ index 380902c..75545d6 100644
type uucpd_log_t;
logging_log_file(uucpd_log_t)
-@@ -84,15 +84,19 @@ kernel_read_kernel_sysctls(uucpd_t)
+@@ -84,15 +84,20 @@ kernel_read_kernel_sysctls(uucpd_t)
kernel_read_system_state(uucpd_t)
kernel_read_network_state(uucpd_t)
@@ -92186,12 +98627,13 @@ index 380902c..75545d6 100644
corenet_tcp_connect_ssh_port(uucpd_t)
corenet_tcp_sendrecv_ssh_port(uucpd_t)
++corenet_tcp_bind_uucpd_port(uucpd_t)
+corenet_tcp_connect_uucpd_port(uucpd_t)
+
corecmd_exec_bin(uucpd_t)
corecmd_exec_shell(uucpd_t)
-@@ -110,7 +114,7 @@ auth_use_nsswitch(uucpd_t)
+@@ -110,7 +115,7 @@ auth_use_nsswitch(uucpd_t)
logging_send_syslog_msg(uucpd_t)
@@ -92200,7 +98642,7 @@ index 380902c..75545d6 100644
optional_policy(`
cron_system_entry(uucpd_t, uucpd_exec_t)
-@@ -125,10 +129,6 @@ optional_policy(`
+@@ -125,10 +130,6 @@ optional_policy(`
')
optional_policy(`
@@ -92211,7 +98653,7 @@ index 380902c..75545d6 100644
ssh_exec(uucpd_t)
')
-@@ -160,10 +160,15 @@ auth_use_nsswitch(uux_t)
+@@ -160,10 +161,15 @@ auth_use_nsswitch(uux_t)
logging_search_logs(uux_t)
logging_send_syslog_msg(uux_t)
@@ -92336,7 +98778,7 @@ index 1c35171..2cba4df 100644
domain_system_change_exemption($1)
role_transition $2 varnishd_initrc_exec_t system_r;
diff --git a/varnishd.te b/varnishd.te
-index 9d4d8cb..f50c3ff 100644
+index 9d4d8cb..a58e2dd 100644
--- a/varnishd.te
+++ b/varnishd.te
@@ -21,7 +21,7 @@ type varnishd_initrc_exec_t;
@@ -92348,7 +98790,7 @@ index 9d4d8cb..f50c3ff 100644
type varnishd_tmp_t;
files_tmp_file(varnishd_tmp_t)
-@@ -43,7 +43,7 @@ type varnishlog_var_run_t;
+@@ -43,16 +43,16 @@ type varnishlog_var_run_t;
files_pid_file(varnishlog_var_run_t)
type varnishlog_log_t;
@@ -92357,9 +98799,11 @@ index 9d4d8cb..f50c3ff 100644
########################################
#
-@@ -52,7 +52,7 @@ files_type(varnishlog_log_t)
+ # Local policy
+ #
- allow varnishd_t self:capability { kill dac_override ipc_lock setuid setgid };
+-allow varnishd_t self:capability { kill dac_override ipc_lock setuid setgid };
++allow varnishd_t self:capability { kill dac_override ipc_lock setuid setgid chown };
dontaudit varnishd_t self:capability sys_tty_config;
-allow varnishd_t self:process signal;
+allow varnishd_t self:process { execmem signal };
@@ -92501,7 +98945,7 @@ index 31c752e..ef52235 100644
init_labeled_script_domtrans($1, vdagentd_initrc_exec_t)
domain_system_change_exemption($1)
diff --git a/vdagent.te b/vdagent.te
-index 77be35a..0e9a7d1 100644
+index 77be35a..9ed83d0 100644
--- a/vdagent.te
+++ b/vdagent.te
@@ -25,6 +25,7 @@ logging_log_file(vdagent_log_t)
@@ -92512,7 +98956,7 @@ index 77be35a..0e9a7d1 100644
allow vdagent_t self:fifo_file rw_fifo_file_perms;
allow vdagent_t self:unix_stream_socket { accept listen };
-@@ -39,17 +40,20 @@ create_files_pattern(vdagent_t, vdagent_log_t, vdagent_log_t)
+@@ -39,20 +40,25 @@ create_files_pattern(vdagent_t, vdagent_log_t, vdagent_log_t)
setattr_files_pattern(vdagent_t, vdagent_log_t, vdagent_log_t)
logging_log_filetrans(vdagent_t, vdagent_log_t, file)
@@ -92529,14 +98973,19 @@ index 77be35a..0e9a7d1 100644
-logging_send_syslog_msg(vdagent_t)
+systemd_read_logind_sessions_files(vdagent_t)
+systemd_login_read_pid_files(vdagent_t)
-+
-+term_use_virtio_console(vdagent_t)
-miscfiles_read_localization(vdagent_t)
++term_use_virtio_console(vdagent_t)
++
+logging_send_syslog_msg(vdagent_t)
userdom_read_all_users_state(vdagent_t)
++xserver_read_xdm_state(vdagent_t)
++
+ optional_policy(`
+ dbus_system_bus_client(vdagent_t)
+
diff --git a/vhostmd.if b/vhostmd.if
index 22edd58..c3a5364 100644
--- a/vhostmd.if
@@ -92584,7 +99033,7 @@ index 0be8535..b96e329 100644
optional_policy(`
diff --git a/virt.fc b/virt.fc
-index c30da4c..9bad8b9 100644
+index c30da4c..6351bcb 100644
--- a/virt.fc
+++ b/virt.fc
@@ -1,52 +1,92 @@
@@ -92717,10 +99166,10 @@ index c30da4c..9bad8b9 100644
+/var/run/qemu-ga\.pid -- gen_context(system_u:object_r:virt_qemu_ga_var_run_t,s0)
+/var/run/qga\.state -- gen_context(system_u:object_r:virt_qemu_ga_var_run_t,s0)
+
-+/var/log/qemu-ga\.log -- gen_context(system_u:object_r:virt_qemu_ga_log_t,s0)
++/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 9dec06c..73549fd 100644
+index 9dec06c..88dcafb 100644
--- a/virt.if
+++ b/virt.if
@@ -1,120 +1,51 @@
@@ -93171,17 +99620,35 @@ index 9dec06c..73549fd 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 +251,7 @@ interface(`virt_manage_config',`
+@@ -414,8 +251,25 @@ interface(`virt_manage_config',`
########################################
##
-## Create, read, write, and delete
-## virt image files.
+## Allow domain to manage virt image files
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`virt_getattr_content',`
++ gen_require(`
++ type virt_content_t;
++ ')
++
++ allow $1 virt_content_t:file getattr_file_perms;
++')
++
++########################################
++##
++## Allow domain to manage virt image files
##
##
##
-@@ -450,8 +286,7 @@ interface(`virt_read_content',`
+@@ -450,8 +304,7 @@ interface(`virt_read_content',`
########################################
##
@@ -93191,7 +99658,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -459,35 +294,17 @@ interface(`virt_read_content',`
+@@ -459,35 +312,17 @@ interface(`virt_read_content',`
##
##
#
@@ -93230,7 +99697,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -495,53 +312,37 @@ interface(`virt_manage_virt_content',`
+@@ -495,53 +330,37 @@ interface(`virt_manage_virt_content',`
##
##
#
@@ -93294,7 +99761,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -549,34 +350,21 @@ interface(`virt_home_filetrans_virt_content',`
+@@ -549,34 +368,21 @@ interface(`virt_home_filetrans_virt_content',`
##
##
#
@@ -93337,7 +99804,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -584,32 +372,36 @@ interface(`virt_manage_svirt_home_content',`
+@@ -584,32 +390,36 @@ interface(`virt_manage_svirt_home_content',`
##
##
#
@@ -93386,7 +99853,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -618,54 +410,36 @@ interface(`virt_relabel_svirt_home_content',`
+@@ -618,54 +428,36 @@ interface(`virt_relabel_svirt_home_content',`
##
##
#
@@ -93450,7 +99917,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -673,54 +447,38 @@ interface(`virt_home_filetrans',`
+@@ -673,54 +465,38 @@ interface(`virt_home_filetrans',`
##
##
#
@@ -93517,7 +99984,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -728,52 +486,39 @@ interface(`virt_manage_generic_virt_home_content',`
+@@ -728,52 +504,58 @@ interface(`virt_manage_generic_virt_home_content',`
##
##
#
@@ -93556,14 +100023,31 @@ index 9dec06c..73549fd 100644
-##
-##
-##
--##
--## The name of the object being created.
--##
--##
+##
++#
++interface(`virt_read_log',`
++ gen_require(`
++ type virt_log_t;
++ ')
++
++ logging_search_logs($1)
++ read_files_pattern($1, virt_log_t, virt_log_t)
++')
++
++########################################
++##
++## Allow the specified domain to append
++## virt log files.
++##
++##
+ ##
+-## The name of the object being created.
++## Domain allowed access.
+ ##
+ ##
#
-interface(`virt_home_filetrans_virt_home',`
-+interface(`virt_read_log',`
++interface(`virt_append_log',`
gen_require(`
- type virt_home_t;
+ type virt_log_t;
@@ -93571,23 +100055,22 @@ index 9dec06c..73549fd 100644
- userdom_user_home_dir_filetrans($1, virt_home_t, $2, $3)
+ logging_search_logs($1)
-+ read_files_pattern($1, virt_log_t, virt_log_t)
++ append_files_pattern($1, virt_log_t, virt_log_t)
')
########################################
##
-## Read virt pid files.
-+## Allow the specified domain to append
-+## virt log files.
++## Allow domain to manage virt log files
##
##
##
-@@ -781,19 +526,18 @@ interface(`virt_home_filetrans_virt_home',`
+@@ -781,19 +563,19 @@ interface(`virt_home_filetrans_virt_home',`
##
##
#
-interface(`virt_read_pid_files',`
-+interface(`virt_append_log',`
++interface(`virt_manage_log',`
gen_require(`
- type virt_var_run_t;
+ type virt_log_t;
@@ -93595,34 +100078,34 @@ index 9dec06c..73549fd 100644
- files_search_pids($1)
- read_files_pattern($1, virt_var_run_t, virt_var_run_t)
-+ logging_search_logs($1)
-+ append_files_pattern($1, virt_log_t, virt_log_t)
++ manage_dirs_pattern($1, virt_log_t, virt_log_t)
++ manage_files_pattern($1, virt_log_t, virt_log_t)
++ manage_lnk_files_pattern($1, virt_log_t, virt_log_t)
')
########################################
##
-## Create, read, write, and delete
-## virt pid files.
-+## Allow domain to manage virt log files
++## Allow domain to getattr virt image direcories
##
##
##
-@@ -801,18 +545,19 @@ interface(`virt_read_pid_files',`
+@@ -801,18 +583,18 @@ interface(`virt_read_pid_files',`
##
##
#
-interface(`virt_manage_pid_files',`
-+interface(`virt_manage_log',`
++interface(`virt_getattr_images',`
gen_require(`
- type virt_var_run_t;
-+ type virt_log_t;
++ attribute virt_image_type;
')
- files_search_pids($1)
- manage_files_pattern($1, virt_var_run_t, virt_var_run_t)
-+ manage_dirs_pattern($1, virt_log_t, virt_log_t)
-+ manage_files_pattern($1, virt_log_t, virt_log_t)
-+ manage_lnk_files_pattern($1, virt_log_t, virt_log_t)
++ virt_search_lib($1)
++ allow $1 virt_image_type:file getattr_file_perms;
')
########################################
@@ -93632,7 +100115,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -820,18 +565,18 @@ interface(`virt_manage_pid_files',`
+@@ -820,18 +602,18 @@ interface(`virt_manage_pid_files',`
##
##
#
@@ -93656,7 +100139,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -839,20 +584,73 @@ interface(`virt_search_lib',`
+@@ -839,20 +621,73 @@ interface(`virt_search_lib',`
##
##
#
@@ -93735,44 +100218,40 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -860,94 +658,189 @@ interface(`virt_read_lib_files',`
+@@ -860,74 +695,265 @@ interface(`virt_read_lib_files',`
##
##
#
-interface(`virt_manage_lib_files',`
+interface(`virt_manage_cache',`
- gen_require(`
-- type virt_var_lib_t;
++ gen_require(`
+ type virt_cache_t;
- ')
-
-- files_search_var_lib($1)
-- manage_files_pattern($1, virt_var_lib_t, virt_var_lib_t)
++ ')
++
+ files_search_var($1)
+ manage_dirs_pattern($1, virt_cache_t, virt_cache_t)
+ manage_files_pattern($1, virt_cache_t, virt_cache_t)
+ manage_lnk_files_pattern($1, virt_cache_t, virt_cache_t)
- ')
-
- ########################################
- ##
--## Create objects in virt pid
--## directories with a private type.
++')
++
++########################################
++##
+## Allow domain to manage virt image files
- ##
- ##
- ##
- ## Domain allowed access.
- ##
- ##
--##
++##
++##
++##
++## Domain allowed access.
++##
++##
+#
+interface(`virt_manage_images',`
-+ gen_require(`
-+ type virt_var_lib_t;
+ gen_require(`
+ type virt_var_lib_t;
+ attribute virt_image_type;
-+ ')
-+
+ ')
+
+- files_search_var_lib($1)
+- manage_files_pattern($1, virt_var_lib_t, virt_var_lib_t)
+ virt_search_lib($1)
+ allow $1 virt_image_type:dir list_dir_perms;
+ manage_dirs_pattern($1, virt_image_type, virt_image_type)
@@ -93802,19 +100281,19 @@ index 9dec06c..73549fd 100644
+ manage_dirs_pattern($1, virt_image_t, virt_image_t)
+ manage_files_pattern($1, virt_image_t, virt_image_t)
+ read_lnk_files_pattern($1, virt_image_t, virt_image_t)
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Create objects in virt pid
+-## directories with a private type.
+## Execute virt server in the virt domain.
+##
+##
- ##
--## The type of the object to be created.
++##
+## Domain allowed to transition.
- ##
- ##
--##
++##
++##
+#
+interface(`virt_systemctl',`
+ gen_require(`
@@ -93834,24 +100313,85 @@ index 9dec06c..73549fd 100644
+## Ptrace the svirt domain
+##
+##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`virt_ptrace',`
++ gen_require(`
++ attribute virt_domain;
++ ')
++
++ allow $1 virt_domain:process ptrace;
++')
++
++#######################################
++##
++## Execute Sandbox Files
+ ##
+ ##
+ ##
+ ## Domain allowed access.
+ ##
+ ##
+-##
++#
++interface(`virt_exec_sandbox_files',`
++ gen_require(`
++ type svirt_sandbox_file_t;
++ ')
++
++ can_exec($1, svirt_sandbox_file_t)
++')
++
++#######################################
++##
++## Manage Sandbox Files
++##
++##
+ ##
+-## The type of the object to be created.
++## Domain allowed access.
+ ##
+ ##
+-##
++#
++interface(`virt_manage_sandbox_files',`
++ gen_require(`
++ type svirt_sandbox_file_t;
++ ')
++
++ manage_dirs_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t)
++ manage_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t)
++ manage_fifo_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t)
++ manage_chr_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t)
++ manage_lnk_files_pattern($1, svirt_sandbox_file_t, svirt_sandbox_file_t)
++')
++
++#######################################
++##
++## Relabel Sandbox File systems
++##
++##
##
-## The object class of the object being created.
-+## Domain allowed to transition.
++## Domain allowed access.
##
##
-##
+#
-+interface(`virt_ptrace',`
++interface(`virt_relabel_sandbox_filesystem',`
+ gen_require(`
-+ attribute virt_domain;
++ type svirt_sandbox_file_t;
+ ')
+
-+ allow $1 virt_domain:process ptrace;
++ allow $1 svirt_sandbox_file_t:filesystem { relabelfrom relabelto };
+')
+
+#######################################
+##
-+## Connect to virt over a unix domain stream socket.
++## Mounton Sandbox Files
+##
+##
##
@@ -93862,9 +100402,27 @@ index 9dec06c..73549fd 100644
-##
#
-interface(`virt_pid_filetrans',`
-+interface(`virt_stream_connect_sandbox',`
++interface(`virt_mounton_sandbox_file',`
gen_require(`
- type virt_var_run_t;
++ type svirt_sandbox_file_t;
++ ')
++
++ allow $1 svirt_sandbox_file_t:dir_file_class_set mounton;
++')
++
++#######################################
++##
++## Connect to virt over a unix domain stream socket.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`virt_stream_connect_sandbox',`
++ gen_require(`
+ attribute svirt_sandbox_domain;
+ type svirt_sandbox_file_t;
')
@@ -93926,93 +100484,110 @@ index 9dec06c..73549fd 100644
##
-## Append virt log files.
+## Do not audit attempts to write virt daemon unnamed pipes.
++##
++##
++##
++## Domain to not audit.
++##
++##
++#
++interface(`virt_dontaudit_write_pipes',`
++ gen_require(`
++ type virtd_t;
++ ')
++
++ dontaudit $1 virtd_t:fd use;
++ dontaudit $1 virtd_t:fifo_file write_fifo_file_perms;
++')
++
++########################################
++##
++## Send a sigkill to virtual machines
##
##
##
--## Domain allowed access.
-+## Domain to not audit.
+@@ -935,19 +961,17 @@ interface(`virt_read_log',`
##
##
#
-interface(`virt_append_log',`
-+interface(`virt_dontaudit_write_pipes',`
++interface(`virt_kill_svirt',`
gen_require(`
- type virt_log_t;
-+ type virtd_t;
++ attribute virt_domain;
')
- logging_search_logs($1)
- append_files_pattern($1, virt_log_t, virt_log_t)
-+ dontaudit $1 virtd_t:fd use;
-+ dontaudit $1 virtd_t:fifo_file write_fifo_file_perms;
++ allow $1 virt_domain:process sigkill;
')
########################################
##
-## Create, read, write, and delete
-## virt log files.
-+## Send a sigkill to virtual machines
++## Send a sigkill to virtd daemon.
##
##
##
-@@ -955,20 +848,17 @@ interface(`virt_append_log',`
+@@ -955,20 +979,17 @@ interface(`virt_append_log',`
##
##
#
-interface(`virt_manage_log',`
-+interface(`virt_kill_svirt',`
++interface(`virt_kill',`
gen_require(`
- type virt_log_t;
-+ attribute virt_domain;
++ type virtd_t;
')
- logging_search_logs($1)
- manage_dirs_pattern($1, virt_log_t, virt_log_t)
- manage_files_pattern($1, virt_log_t, virt_log_t)
- manage_lnk_files_pattern($1, virt_log_t, virt_log_t)
-+ allow $1 virt_domain:process sigkill;
++ allow $1 virtd_t:process sigkill;
')
########################################
##
-## Search virt image directories.
-+## Send a sigkill to virtd daemon.
++## Send a signal to virtual machines
##
##
##
-@@ -976,18 +866,17 @@ interface(`virt_manage_log',`
+@@ -976,18 +997,17 @@ interface(`virt_manage_log',`
##
##
#
-interface(`virt_search_images',`
-+interface(`virt_kill',`
++interface(`virt_signal_svirt',`
gen_require(`
- attribute virt_image_type;
-+ type virtd_t;
++ attribute virt_domain;
')
- virt_search_lib($1)
- allow $1 virt_image_type:dir search_dir_perms;
-+ allow $1 virtd_t:process sigkill;
++ allow $1 virt_domain:process signal;
')
########################################
##
-## Read virt image files.
-+## Send a signal to virtual machines
++## Manage virt home files.
##
##
##
-@@ -995,73 +884,75 @@ interface(`virt_search_images',`
+@@ -995,36 +1015,57 @@ interface(`virt_search_images',`
##
##
#
-interface(`virt_read_images',`
-+interface(`virt_signal_svirt',`
++interface(`virt_manage_home_files',`
gen_require(`
- type virt_var_lib_t;
- attribute virt_image_type;
-+ attribute virt_domain;
++ type virt_home_t;
')
- virt_search_lib($1)
@@ -94021,7 +100596,8 @@ index 9dec06c..73549fd 100644
- read_files_pattern($1, virt_image_type, virt_image_type)
- read_lnk_files_pattern($1, virt_image_type, virt_image_type)
- read_blk_files_pattern($1, virt_image_type, virt_image_type)
-+ allow $1 virt_domain:process signal;
++ userdom_search_user_home_dirs($1)
++ manage_files_pattern($1, virt_home_t, virt_home_t)
+')
- tunable_policy(`virt_use_nfs',`
@@ -94030,105 +100606,70 @@ index 9dec06c..73549fd 100644
- fs_read_nfs_symlinks($1)
+########################################
+##
-+## Manage virt home files.
++## allow domain to read
++## virt tmpfs files
+##
+##
+##
-+## Domain allowed access.
++## Domain allowed access
+##
+##
+#
-+interface(`virt_manage_home_files',`
++interface(`virt_read_tmpfs_files',`
+ gen_require(`
-+ type virt_home_t;
++ attribute virt_tmpfs_type;
')
- tunable_policy(`virt_use_samba',`
- fs_list_cifs($1)
- fs_read_cifs_files($1)
- fs_read_cifs_symlinks($1)
-- ')
-+ userdom_search_user_home_dirs($1)
-+ manage_files_pattern($1, virt_home_t, virt_home_t)
- ')
-
- ########################################
- ##
--## Read and write all virt image
--## character files.
-+## allow domain to read
-+## virt tmpfs files
- ##
- ##
- ##
--## Domain allowed access.
-+## Domain allowed access
- ##
- ##
- #
--interface(`virt_rw_all_image_chr_files',`
-+interface(`virt_read_tmpfs_files',`
- gen_require(`
-- attribute virt_image_type;
-+ attribute virt_tmpfs_type;
- ')
-
-- virt_search_lib($1)
-- allow $1 virt_image_type:dir list_dir_perms;
-- rw_chr_files_pattern($1, virt_image_type, virt_image_type)
+ allow $1 virt_tmpfs_type:file read_file_perms;
- ')
-
- ########################################
- ##
--## Create, read, write, and delete
--## svirt cache files.
++')
++
++########################################
++##
+## allow domain to manage
+## virt tmpfs files
- ##
- ##
- ##
--## Domain allowed access.
++##
++##
++##
+## Domain allowed access
- ##
- ##
- #
--interface(`virt_manage_svirt_cache',`
-- refpolicywarn(`$0($*) has been deprecated, use virt_manage_virt_cache() instead.')
-- virt_manage_virt_cache($1)
++##
++##
++#
+interface(`virt_manage_tmpfs_files',`
+ gen_require(`
+ attribute virt_tmpfs_type;
-+ ')
+ ')
+
+ allow $1 virt_tmpfs_type:file manage_file_perms;
')
########################################
##
--## Create, read, write, and delete
--## virt cache content.
+-## Read and write all virt image
+-## character files.
+## Create .virt directory in the user home directory
+## with an correct label.
##
##
##
-@@ -1069,21 +960,28 @@ interface(`virt_manage_svirt_cache',`
+@@ -1032,20 +1073,28 @@ interface(`virt_read_images',`
##
##
#
--interface(`virt_manage_virt_cache',`
+-interface(`virt_rw_all_image_chr_files',`
+interface(`virt_filetrans_home_content',`
gen_require(`
-- type virt_cache_t;
+- attribute virt_image_type;
+ type virt_home_t;
+ type svirt_home_t;
')
-- files_search_var($1)
-- manage_dirs_pattern($1, virt_cache_t, virt_cache_t)
-- manage_files_pattern($1, virt_cache_t, virt_cache_t)
-- manage_lnk_files_pattern($1, virt_cache_t, virt_cache_t)
+- virt_search_lib($1)
+- allow $1 virt_image_type:dir list_dir_perms;
+- rw_chr_files_pattern($1, virt_image_type, virt_image_type)
+ userdom_user_home_dir_filetrans($1, virt_home_t, dir, ".libvirt")
+ userdom_user_home_dir_filetrans($1, virt_home_t, dir, ".virtinst")
+ filetrans_pattern($1, virt_home_t, svirt_home_t, dir, "qemu")
@@ -94145,40 +100686,34 @@ index 9dec06c..73549fd 100644
########################################
##
-## Create, read, write, and delete
--## virt image files.
+-## svirt cache files.
+## Dontaudit attempts to Read virt_image_type devices.
##
##
##
-@@ -1091,36 +989,148 @@ interface(`virt_manage_virt_cache',`
+@@ -1053,37 +1102,133 @@ interface(`virt_rw_all_image_chr_files',`
##
##
#
--interface(`virt_manage_images',`
+-interface(`virt_manage_svirt_cache',`
+- refpolicywarn(`$0($*) has been deprecated, use virt_manage_virt_cache() instead.')
+- virt_manage_virt_cache($1)
+interface(`virt_dontaudit_read_chr_dev',`
- gen_require(`
-- type virt_var_lib_t;
- attribute virt_image_type;
- ')
-
-- virt_search_lib($1)
-- allow $1 virt_image_type:dir list_dir_perms;
-- manage_dirs_pattern($1, virt_image_type, virt_image_type)
-- manage_files_pattern($1, virt_image_type, virt_image_type)
-- read_lnk_files_pattern($1, virt_image_type, virt_image_type)
-- rw_blk_files_pattern($1, virt_image_type, virt_image_type)
++ gen_require(`
++ attribute virt_image_type;
++ ')
++
+ dontaudit $1 virt_image_type:chr_file read_chr_file_perms;
-+')
+ ')
-- tunable_policy(`virt_use_nfs',`
-- fs_manage_nfs_dirs($1)
-- fs_manage_nfs_files($1)
-- fs_read_nfs_symlinks($1)
-+########################################
-+##
+ ########################################
+ ##
+-## Create, read, write, and delete
+-## virt cache content.
+## Creates types and rules for a basic
+## virt_lxc process domain.
-+##
+ ##
+-##
+##
+##
+## Prefix for the domain.
@@ -94188,12 +100723,8 @@ index 9dec06c..73549fd 100644
+template(`virt_sandbox_domain_template',`
+ gen_require(`
+ attribute svirt_sandbox_domain;
- ')
-
-- tunable_policy(`virt_use_samba',`
-- fs_manage_cifs_files($1)
-- fs_manage_cifs_files($1)
-- fs_read_cifs_symlinks($1)
++ ')
++
+ type $1_t, svirt_sandbox_domain;
+ domain_type($1_t)
+ domain_user_exemption_target($1_t)
@@ -94201,6 +100732,8 @@ index 9dec06c..73549fd 100644
+ mcs_constrained($1_t)
+ role system_r types $1_t;
+
++ logging_send_syslog_msg($1_t)
++
+ kernel_read_system_state($1_t)
+')
+
@@ -94209,7 +100742,7 @@ index 9dec06c..73549fd 100644
+## Make the specified type usable as a lxc domain
+##
+##
-+##
+ ##
+## Type to be used as a lxc domain
+##
+##
@@ -94228,7 +100761,7 @@ index 9dec06c..73549fd 100644
+##
+##
+##
-+## Domain allowed access.
+ ## Domain allowed access.
+##
+##
+#
@@ -94247,22 +100780,30 @@ index 9dec06c..73549fd 100644
+##
+##
+## Domain allowed access.
-+##
-+##
-+#
+ ##
+ ##
+ #
+-interface(`virt_manage_virt_cache',`
+interface(`virt_filetrans_named_content',`
-+ gen_require(`
+ gen_require(`
+- type virt_cache_t;
+ type virt_lxc_var_run_t;
+ type virt_var_run_t;
-+ ')
-+
+ ')
+
+- files_search_var($1)
+- manage_dirs_pattern($1, virt_cache_t, virt_cache_t)
+- manage_files_pattern($1, virt_cache_t, virt_cache_t)
+- manage_lnk_files_pattern($1, virt_cache_t, virt_cache_t)
+ files_pid_filetrans($1, virt_lxc_var_run_t, dir, "libvirt-sandbox")
+ files_pid_filetrans($1, virt_var_run_t, dir, "libvirt")
+ files_pid_filetrans($1, virt_var_run_t, dir, "libguestfs")
-+')
-+
-+########################################
-+##
+ ')
+
+ ########################################
+ ##
+-## Create, read, write, and delete
+-## virt image files.
+## Execute qemu in the svirt domain, and
+## allow the specified role the svirt domain.
+##
@@ -94283,11 +100824,66 @@ index 9dec06c..73549fd 100644
+ attribute svirt_sandbox_domain;
+ ')
+
-+ allow $1 svirt_sandbox_domain:process transition;
++ allow $1 svirt_sandbox_domain:process { transition signal_perms };
+ role $2 types svirt_sandbox_domain;
+ allow $1 svirt_sandbox_domain:unix_dgram_socket sendto;
+
++ allow svirt_sandbox_domain $1:fifo_file rw_fifo_file_perms;
+ allow svirt_sandbox_domain $1:process sigchld;
++ ps_process_pattern($1, svirt_sandbox_domain)
++')
++
++########################################
++##
++## Read and write to svirt_image devices.
+ ##
+ ##
+ ##
+@@ -1091,36 +1236,54 @@ interface(`virt_manage_virt_cache',`
+ ##
+ ##
+ #
+-interface(`virt_manage_images',`
++interface(`virt_rw_svirt_dev',`
+ gen_require(`
+- type virt_var_lib_t;
+- attribute virt_image_type;
++ type svirt_image_t;
+ ')
+
+- virt_search_lib($1)
+- allow $1 virt_image_type:dir list_dir_perms;
+- manage_dirs_pattern($1, virt_image_type, virt_image_type)
+- manage_files_pattern($1, virt_image_type, virt_image_type)
+- read_lnk_files_pattern($1, virt_image_type, virt_image_type)
+- rw_blk_files_pattern($1, virt_image_type, virt_image_type)
++ allow $1 svirt_image_t:chr_file rw_file_perms;
++')
+
+- tunable_policy(`virt_use_nfs',`
+- fs_manage_nfs_dirs($1)
+- fs_manage_nfs_files($1)
+- fs_read_nfs_symlinks($1)
++########################################
++##
++## Read and write to svirt_image devices.
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`virt_rlimitinh',`
++ gen_require(`
++ type virtd_t;
+ ')
+
+- tunable_policy(`virt_use_samba',`
+- fs_manage_cifs_files($1)
+- fs_manage_cifs_files($1)
+- fs_read_cifs_symlinks($1)
++ allow $1 virtd_t:process { rlimitinh };
+')
+
+########################################
@@ -94300,12 +100896,12 @@ index 9dec06c..73549fd 100644
+##
+##
+#
-+interface(`virt_rw_svirt_dev',`
++interface(`virt_noatsecure',`
+ gen_require(`
-+ type svirt_image_t;
++ type virtd_t;
')
+
-+ allow $1 svirt_image_t:chr_file rw_file_perms;
++ allow $1 virtd_t:process { noatsecure rlimitinh };
')
########################################
@@ -94317,7 +100913,7 @@ index 9dec06c..73549fd 100644
##
##
##
-@@ -1136,50 +1146,36 @@ interface(`virt_manage_images',`
+@@ -1136,50 +1299,36 @@ interface(`virt_manage_images',`
#
interface(`virt_admin',`
gen_require(`
@@ -94365,11 +100961,11 @@ index 9dec06c..73549fd 100644
-
- logging_search_logs($1)
- admin_pattern($1, virt_log_t)
-+ allow $1 virt_domain:process signal_perms;
-
+-
- files_search_pids($1)
- admin_pattern($1, { virt_var_run_t virtd_lxc_var_run_t svirt_var_run_t })
--
++ allow $1 virt_domain:process signal_perms;
+
- files_search_var($1)
- admin_pattern($1, svirt_cache_t)
-
@@ -94390,10 +100986,10 @@ index 9dec06c..73549fd 100644
+ virt_stream_connect($1)
')
diff --git a/virt.te b/virt.te
-index 1f22fba..15485c6 100644
+index 1f22fba..57af4d0 100644
--- a/virt.te
+++ b/virt.te
-@@ -1,147 +1,173 @@
+@@ -1,147 +1,209 @@
-policy_module(virt, 1.6.10)
+policy_module(virt, 1.5.0)
@@ -94405,7 +101001,7 @@ index 1f22fba..15485c6 100644
+gen_require(`
+ class passwd rootok;
+ class passwd passwd;
-+ ')
++')
+
+attribute virsh_transition_domain;
+attribute virt_ptynode;
@@ -94531,34 +101127,67 @@ index 1f22fba..15485c6 100644
-attribute virt_image_type;
-attribute virt_tmp_type;
-attribute virt_tmpfs_type;
--
--attribute svirt_lxc_domain;
--
--attribute_role virt_domain_roles;
--roleattribute system_r virt_domain_roles;
+##
+##
+## Allow confined virtual guests to use usb devices
+##
+##
+gen_tunable(virt_use_usb, true)
++
++##
++##
++## Allow sandbox containers to manage nfs files
++##
++##
++gen_tunable(virt_sandbox_use_nfs, false)
++
++##
++##
++## Allow sandbox containers to manage samba/cifs files
++##
++##
++gen_tunable(virt_sandbox_use_samba, false)
+
+-attribute svirt_lxc_domain;
++##
++##
++## Allow sandbox containers to send audit messages
+
+-attribute_role virt_domain_roles;
+-roleattribute system_r virt_domain_roles;
++##
++##
++gen_tunable(virt_sandbox_use_audit, true)
-attribute_role virt_bridgehelper_roles;
-roleattribute system_r virt_bridgehelper_roles;
-+virt_domain_template(svirt)
-+role system_r types svirt_t;
-+typealias svirt_t alias qemu_t;
++##
++##
++## Allow sandbox containers to use netlink system calls
++##
++##
++gen_tunable(virt_sandbox_use_netlink, false)
-attribute_role svirt_lxc_domain_roles;
-roleattribute system_r svirt_lxc_domain_roles;
-+virt_domain_template(svirt_tcg)
-+role system_r types svirt_tcg_t;
++##
++##
++## Allow sandbox containers to use sys_admin system calls, for example mount
++##
++##
++gen_tunable(virt_sandbox_use_sys_admin, false)
--virt_domain_template(svirt)
+ virt_domain_template(svirt)
-virt_domain_template(svirt_prot_exec)
-+type qemu_exec_t, virt_file_type;
++role system_r types svirt_t;
++typealias svirt_t alias qemu_t;
++
++virt_domain_template(svirt_tcg)
++role system_r types svirt_tcg_t;
-type virt_cache_t alias svirt_cache_t;
++type qemu_exec_t, virt_file_type;
++
+type virt_cache_t alias svirt_cache_t, virt_file_type;
files_type(virt_cache_t)
@@ -94640,7 +101269,7 @@ index 1f22fba..15485c6 100644
ifdef(`enable_mcs',`
init_ranged_daemon_domain(virtd_t, virtd_exec_t, s0 - mcs_systemhigh)
')
-@@ -150,295 +176,142 @@ ifdef(`enable_mls',`
+@@ -150,295 +212,130 @@ ifdef(`enable_mls',`
init_ranged_daemon_domain(virtd_t, virtd_exec_t, s0 - mls_systemhigh)
')
@@ -94833,80 +101462,60 @@ index 1f22fba..15485c6 100644
- fs_manage_nfs_named_sockets(virt_domain)
- fs_read_nfs_symlinks(virt_domain)
-')
-+type virtd_lxc_t, virt_system_domain;
-+type virtd_lxc_exec_t, virt_file_type;
-+init_system_domain(virtd_lxc_t, virtd_lxc_exec_t)
-
+-
-tunable_policy(`virt_use_samba',`
- fs_manage_cifs_dirs(virt_domain)
- fs_manage_cifs_files(virt_domain)
- fs_manage_cifs_named_sockets(virt_domain)
- fs_read_cifs_symlinks(virt_domain)
-')
-+type virt_lxc_var_run_t, virt_file_type;
-+files_pid_file(virt_lxc_var_run_t)
-+typealias virt_lxc_var_run_t alias virtd_lxc_var_run_t;
-
+-
-tunable_policy(`virt_use_sysfs',`
- dev_rw_sysfs(virt_domain)
-')
-+# virt lxc container files
-+type svirt_sandbox_file_t alias svirt_lxc_file_t, svirt_file_type;
-+files_mountpoint(svirt_sandbox_file_t)
-
+-
-tunable_policy(`virt_use_usb',`
- dev_rw_usbfs(virt_domain)
- dev_read_sysfs(virt_domain)
- fs_manage_dos_dirs(virt_domain)
- fs_manage_dos_files(virt_domain)
-')
-+########################################
-+#
-+# svirt local policy
-+#
-
+-
-optional_policy(`
- tunable_policy(`virt_use_xserver',`
- xserver_read_xdm_pid(virt_domain)
- xserver_stream_connect(virt_domain)
- ')
-')
-+# it was a part of auth_use_nsswitch
-+allow svirt_t self:netlink_route_socket r_netlink_socket_perms;
-
+-
-optional_policy(`
- dbus_read_lib_files(virt_domain)
-')
-+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_udp_bind_all_ports(svirt_t)
-+corenet_tcp_bind_all_ports(svirt_t)
-+corenet_tcp_connect_all_ports(svirt_t)
-
+-
-optional_policy(`
- nscd_use(virt_domain)
-')
-+miscfiles_read_generic_certs(svirt_t)
++type virtd_lxc_t, virt_system_domain;
++type virtd_lxc_exec_t, virt_file_type;
++init_system_domain(virtd_lxc_t, virtd_lxc_exec_t)
- optional_policy(`
+-optional_policy(`
- samba_domtrans_smbd(virt_domain)
-+ nscd_dontaudit_write_sock_file(svirt_t)
- ')
+-')
++type virt_lxc_var_run_t, virt_file_type;
++files_pid_file(virt_lxc_var_run_t)
++typealias virt_lxc_var_run_t alias virtd_lxc_var_run_t;
- optional_policy(`
+-optional_policy(`
- xen_rw_image_files(virt_domain)
-+ sssd_dontaudit_stream_connect(svirt_t)
-+ sssd_dontaudit_read_lib(svirt_t)
-+ sssd_dontaudit_read_public_files(svirt_t)
- ')
+-')
++# virt lxc container files
++type svirt_sandbox_file_t alias svirt_lxc_file_t, svirt_file_type;
++files_mountpoint(svirt_sandbox_file_t)
--########################################
-+#######################################
+ ########################################
#
--# svirt local policy
-+# svirt_prot_exec local policy
+ # svirt local policy
#
-list_dirs_pattern(svirt_t, virt_content_t, virt_content_t)
@@ -94928,26 +101537,35 @@ index 1f22fba..15485c6 100644
-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_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)
--corenet_tcp_bind_all_ports(svirt_t)
+ corenet_udp_bind_all_ports(svirt_t)
+ corenet_tcp_bind_all_ports(svirt_t)
+-
+-corenet_sendrecv_all_client_packets(svirt_t)
+ corenet_tcp_connect_all_ports(svirt_t)
+
++#######################################
++#
++# svirt_prot_exec local policy
++#
++
+allow svirt_tcg_t self:process { execmem execstack };
+allow svirt_tcg_t self:netlink_route_socket r_netlink_socket_perms;
-
--corenet_sendrecv_all_client_packets(svirt_t)
--corenet_tcp_connect_all_ports(svirt_t)
++
+corenet_udp_sendrecv_generic_if(svirt_tcg_t)
+corenet_udp_sendrecv_generic_node(svirt_tcg_t)
+corenet_udp_sendrecv_all_ports(svirt_tcg_t)
@@ -94955,7 +101573,7 @@ index 1f22fba..15485c6 100644
+corenet_udp_bind_all_ports(svirt_tcg_t)
+corenet_tcp_bind_all_ports(svirt_tcg_t)
+corenet_tcp_connect_all_ports(svirt_tcg_t)
-
++
########################################
#
# virtd local policy
@@ -95022,7 +101640,7 @@ index 1f22fba..15485c6 100644
read_files_pattern(virtd_t, virt_etc_t, virt_etc_t)
read_lnk_files_pattern(virtd_t, virt_etc_t, virt_etc_t)
-@@ -448,42 +321,29 @@ manage_files_pattern(virtd_t, virt_etc_rw_t, virt_etc_rw_t)
+@@ -448,42 +345,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)
@@ -95069,29 +101687,29 @@ index 1f22fba..15485c6 100644
logging_log_filetrans(virtd_t, virt_log_t, { file dir })
manage_dirs_pattern(virtd_t, virt_var_lib_t, virt_var_lib_t)
-@@ -496,16 +356,12 @@ manage_files_pattern(virtd_t, virt_var_run_t, virt_var_run_t)
+@@ -496,16 +380,12 @@ 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)
+-
+-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)
kernel_rw_net_sysctls(virtd_t)
-@@ -513,6 +369,7 @@ kernel_read_kernel_sysctls(virtd_t)
+@@ -513,6 +393,7 @@ kernel_read_kernel_sysctls(virtd_t)
kernel_request_load_module(virtd_t)
kernel_search_debugfs(virtd_t)
kernel_setsched(virtd_t)
@@ -95099,7 +101717,7 @@ index 1f22fba..15485c6 100644
corecmd_exec_bin(virtd_t)
corecmd_exec_shell(virtd_t)
-@@ -520,24 +377,16 @@ corecmd_exec_shell(virtd_t)
+@@ -520,24 +401,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)
@@ -95127,7 +101745,7 @@ index 1f22fba..15485c6 100644
dev_rw_sysfs(virtd_t)
dev_read_urand(virtd_t)
dev_read_rand(virtd_t)
-@@ -548,22 +397,27 @@ dev_rw_vhost(virtd_t)
+@@ -548,22 +421,27 @@ dev_rw_vhost(virtd_t)
dev_setattr_generic_usb_dev(virtd_t)
dev_relabel_generic_usb_dev(virtd_t)
@@ -95160,7 +101778,7 @@ index 1f22fba..15485c6 100644
fs_rw_anon_inodefs_files(virtd_t)
fs_list_inotifyfs(virtd_t)
fs_manage_cgroup_dirs(virtd_t)
-@@ -594,15 +448,18 @@ term_use_ptmx(virtd_t)
+@@ -594,15 +472,18 @@ term_use_ptmx(virtd_t)
auth_use_nsswitch(virtd_t)
@@ -95180,7 +101798,7 @@ index 1f22fba..15485c6 100644
selinux_validate_context(virtd_t)
-@@ -613,18 +470,26 @@ seutil_read_file_contexts(virtd_t)
+@@ -613,18 +494,26 @@ seutil_read_file_contexts(virtd_t)
sysnet_signull_ifconfig(virtd_t)
sysnet_signal_ifconfig(virtd_t)
sysnet_domtrans_ifconfig(virtd_t)
@@ -95217,7 +101835,7 @@ index 1f22fba..15485c6 100644
tunable_policy(`virt_use_nfs',`
fs_manage_nfs_dirs(virtd_t)
-@@ -633,7 +498,7 @@ tunable_policy(`virt_use_nfs',`
+@@ -633,7 +522,7 @@ tunable_policy(`virt_use_nfs',`
')
tunable_policy(`virt_use_samba',`
@@ -95226,7 +101844,7 @@ index 1f22fba..15485c6 100644
fs_manage_cifs_files(virtd_t)
fs_read_cifs_symlinks(virtd_t)
')
-@@ -658,20 +523,12 @@ optional_policy(`
+@@ -658,20 +547,12 @@ optional_policy(`
')
optional_policy(`
@@ -95247,7 +101865,7 @@ index 1f22fba..15485c6 100644
')
optional_policy(`
-@@ -684,14 +541,20 @@ optional_policy(`
+@@ -684,14 +565,20 @@ optional_policy(`
dnsmasq_kill(virtd_t)
dnsmasq_signull(virtd_t)
dnsmasq_create_pid_dirs(virtd_t)
@@ -95270,7 +101888,7 @@ index 1f22fba..15485c6 100644
iptables_manage_config(virtd_t)
')
-@@ -704,11 +567,13 @@ optional_policy(`
+@@ -704,11 +591,13 @@ optional_policy(`
')
optional_policy(`
@@ -95284,7 +101902,7 @@ index 1f22fba..15485c6 100644
policykit_domtrans_auth(virtd_t)
policykit_domtrans_resolve(virtd_t)
policykit_read_lib(virtd_t)
-@@ -719,10 +584,18 @@ optional_policy(`
+@@ -719,10 +608,18 @@ optional_policy(`
')
optional_policy(`
@@ -95303,7 +101921,7 @@ index 1f22fba..15485c6 100644
kernel_read_xen_state(virtd_t)
kernel_write_xen_state(virtd_t)
-@@ -737,44 +610,264 @@ optional_policy(`
+@@ -737,44 +634,277 @@ optional_policy(`
udev_read_db(virtd_t)
')
@@ -95331,28 +101949,23 @@ index 1f22fba..15485c6 100644
-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;
+
-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)
+
-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)
-manage_chr_files_pattern(virsh_t, svirt_lxc_file_t, svirt_lxc_file_t)
-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)
-+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;
-
--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")
-+kernel_read_net_sysctls(virt_domain)
-
--dontaudit virsh_t virt_var_lib_t:file read_file_perms;
+userdom_search_user_home_content(virt_domain)
+userdom_read_user_home_content_symlinks(virt_domain)
+userdom_read_all_users_state(virt_domain)
@@ -95363,12 +101976,14 @@ index 1f22fba..15485c6 100644
+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)
--allow virsh_t svirt_lxc_domain:process transition;
+-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 })
--can_exec(virsh_t, virsh_exec_t)
+-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)
@@ -95399,9 +102014,11 @@ index 1f22fba..15485c6 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)
@@ -95417,7 +102034,7 @@ index 1f22fba..15485c6 100644
+corenet_tcp_bind_virt_migration_port(virt_domain)
+corenet_tcp_connect_virt_migration_port(virt_domain)
+corenet_rw_inherited_tun_tap_dev(virt_domain)
-
++
+dev_list_sysfs(virt_domain)
+dev_getattr_fs(virt_domain)
+dev_dontaudit_getattr_all(virt_domain)
@@ -95449,6 +102066,8 @@ index 1f22fba..15485c6 100644
+
+# I think we need these for now.
+miscfiles_read_public_files(virt_domain)
++miscfiles_read_generic_certs(virt_domain)
++
+storage_raw_read_removable_device(virt_domain)
+
+sysnet_read_config(virt_domain)
@@ -95467,6 +102086,10 @@ index 1f22fba..15485c6 100644
+')
+
+optional_policy(`
++ nscd_dontaudit_write_sock_file(virt_domain)
++')
++
++optional_policy(`
+ ptchown_domtrans(virt_domain)
+')
+
@@ -95475,6 +102098,12 @@ index 1f22fba..15485c6 100644
+')
+
+optional_policy(`
++ sssd_dontaudit_stream_connect(virt_domain)
++ sssd_dontaudit_read_lib(virt_domain)
++ sssd_dontaudit_read_public_files(virt_domain)
++')
++
++optional_policy(`
+ virt_read_config(virt_domain)
+ virt_read_lib_files(virt_domain)
+ virt_read_content(virt_domain)
@@ -95554,7 +102183,7 @@ index 1f22fba..15485c6 100644
+allow virsh_t self:fifo_file rw_fifo_file_perms;
+allow virsh_t self:unix_stream_socket { create_stream_socket_perms connectto };
+allow virsh_t self:tcp_socket create_stream_socket_perms;
-+
+
+ps_process_pattern(virsh_t, svirt_sandbox_domain)
+
+can_exec(virsh_t, virsh_exec_t)
@@ -95592,7 +102221,7 @@ index 1f22fba..15485c6 100644
kernel_read_system_state(virsh_t)
kernel_read_network_state(virsh_t)
kernel_read_kernel_sysctls(virsh_t)
-@@ -785,25 +878,18 @@ kernel_write_xen_state(virsh_t)
+@@ -785,25 +915,18 @@ kernel_write_xen_state(virsh_t)
corecmd_exec_bin(virsh_t)
corecmd_exec_shell(virsh_t)
@@ -95619,7 +102248,7 @@ index 1f22fba..15485c6 100644
fs_getattr_all_fs(virsh_t)
fs_manage_xenfs_dirs(virsh_t)
-@@ -812,23 +898,23 @@ fs_search_auto_mountpoints(virsh_t)
+@@ -812,23 +935,25 @@ fs_search_auto_mountpoints(virsh_t)
storage_raw_read_fixed_disk(virsh_t)
@@ -95639,20 +102268,21 @@ index 1f22fba..15485c6 100644
-miscfiles_read_localization(virsh_t)
+auth_read_passwd(virsh_t)
-
--sysnet_dns_name_resolve(virsh_t)
++
+logging_send_syslog_msg(virsh_t)
+ sysnet_dns_name_resolve(virsh_t)
+
-tunable_policy(`virt_use_fusefs',`
- fs_manage_fusefs_dirs(virsh_t)
- fs_manage_fusefs_files(virsh_t)
- fs_read_fusefs_symlinks(virsh_t)
-')
-+sysnet_dns_name_resolve(virsh_t)
++userdom_stream_connect(virsh_t)
tunable_policy(`virt_use_nfs',`
fs_manage_nfs_dirs(virsh_t)
-@@ -847,14 +933,20 @@ optional_policy(`
+@@ -847,14 +972,20 @@ optional_policy(`
')
optional_policy(`
@@ -95674,7 +102304,7 @@ index 1f22fba..15485c6 100644
xen_stream_connect(virsh_t)
xen_stream_connect_xenstore(virsh_t)
')
-@@ -879,49 +971,65 @@ optional_policy(`
+@@ -879,49 +1010,65 @@ optional_policy(`
kernel_read_xen_state(virsh_ssh_t)
kernel_write_xen_state(virsh_ssh_t)
@@ -95714,7 +102344,7 @@ index 1f22fba..15485c6 100644
manage_files_pattern(virtd_lxc_t, virt_image_t, virt_image_t)
+domtrans_pattern(virtd_t, virtd_lxc_exec_t, virtd_lxc_t)
-+allow virtd_t virtd_lxc_t:process { getattr signal signull sigkill };
++allow virtd_t virtd_lxc_t:process { getattr noatsecure signal_perms };
+
allow virtd_lxc_t virt_var_run_t:dir search_dir_perms;
-manage_dirs_pattern(virtd_lxc_t, virtd_lxc_var_run_t, virtd_lxc_var_run_t)
@@ -95758,7 +102388,7 @@ index 1f22fba..15485c6 100644
corecmd_exec_bin(virtd_lxc_t)
corecmd_exec_shell(virtd_lxc_t)
-@@ -933,17 +1041,16 @@ dev_read_urand(virtd_lxc_t)
+@@ -933,17 +1080,16 @@ dev_read_urand(virtd_lxc_t)
domain_use_interactive_fds(virtd_lxc_t)
@@ -95778,7 +102408,7 @@ index 1f22fba..15485c6 100644
fs_getattr_all_fs(virtd_lxc_t)
fs_manage_tmpfs_dirs(virtd_lxc_t)
fs_manage_tmpfs_chr_files(virtd_lxc_t)
-@@ -955,8 +1062,23 @@ fs_rw_cgroup_files(virtd_lxc_t)
+@@ -955,8 +1101,23 @@ fs_rw_cgroup_files(virtd_lxc_t)
fs_unmount_all_fs(virtd_lxc_t)
fs_relabelfrom_tmpfs(virtd_lxc_t)
@@ -95802,7 +102432,7 @@ index 1f22fba..15485c6 100644
selinux_get_enforce_mode(virtd_lxc_t)
selinux_get_fs_mount(virtd_lxc_t)
selinux_validate_context(virtd_lxc_t)
-@@ -965,194 +1087,246 @@ selinux_compute_create_context(virtd_lxc_t)
+@@ -965,194 +1126,294 @@ selinux_compute_create_context(virtd_lxc_t)
selinux_compute_relabel_context(virtd_lxc_t)
selinux_compute_user_contexts(virtd_lxc_t)
@@ -95829,14 +102459,18 @@ index 1f22fba..15485c6 100644
-seutil_read_config(virtd_lxc_t)
-seutil_read_default_contexts(virtd_lxc_t)
+optional_policy(`
++ docker_exec_lib(virtd_lxc_t)
++')
++
++optional_policy(`
+ gnome_read_generic_cache_files(virtd_lxc_t)
+')
-
--sysnet_domtrans_ifconfig(virtd_lxc_t)
++
+optional_policy(`
+ setrans_manage_pid_files(virtd_lxc_t)
+')
-+
+
+-sysnet_domtrans_ifconfig(virtd_lxc_t)
+optional_policy(`
+ unconfined_domain(virtd_lxc_t)
+')
@@ -95856,83 +102490,8 @@ index 1f22fba..15485c6 100644
+allow svirt_sandbox_domain self:unix_dgram_socket { sendto create_socket_perms };
+allow svirt_sandbox_domain self:passwd rootok;
+
-+allow virtd_t svirt_sandbox_domain:unix_stream_socket { create_stream_socket_perms connectto };
-+allow virtd_t svirt_sandbox_domain:process { signal_perms getattr };
-+allow virtd_lxc_t svirt_sandbox_domain:process { getattr getsched setsched setrlimit transition signal_perms };
-+
-+allow svirt_sandbox_domain virtd_lxc_t:process sigchld;
-+allow svirt_sandbox_domain virtd_lxc_t:fd use;
-+allow svirt_sandbox_domain virtd_lxc_t:unix_stream_socket { connectto rw_socket_perms };
-+
-+manage_dirs_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
-+manage_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
-+manage_lnk_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
-+manage_sock_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
-+manage_fifo_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
-+allow svirt_sandbox_domain svirt_sandbox_file_t:chr_file setattr;
-+rw_chr_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
-+
-+allow svirt_sandbox_domain svirt_sandbox_file_t:blk_file setattr;
-+rw_blk_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
-+can_exec(svirt_sandbox_domain, svirt_sandbox_file_t)
-+allow svirt_sandbox_domain svirt_sandbox_file_t:dir mounton;
-+allow svirt_sandbox_domain svirt_sandbox_file_t:filesystem getattr;
-+
-+kernel_getattr_proc(svirt_sandbox_domain)
-+kernel_list_all_proc(svirt_sandbox_domain)
-+kernel_read_all_sysctls(svirt_sandbox_domain)
-+kernel_rw_net_sysctls(svirt_sandbox_domain)
-+kernel_dontaudit_search_kernel_sysctl(svirt_sandbox_domain)
-+
-+corecmd_exec_all_executables(svirt_sandbox_domain)
-+
-+files_dontaudit_getattr_all_dirs(svirt_sandbox_domain)
-+files_dontaudit_getattr_all_files(svirt_sandbox_domain)
-+files_dontaudit_getattr_all_symlinks(svirt_sandbox_domain)
-+files_dontaudit_getattr_all_pipes(svirt_sandbox_domain)
-+files_dontaudit_getattr_all_sockets(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_list_var(svirt_sandbox_domain)
-+files_list_var_lib(svirt_sandbox_domain)
-+files_search_all(svirt_sandbox_domain)
-+files_read_config_files(svirt_sandbox_domain)
-+files_read_usr_symlinks(svirt_sandbox_domain)
-+files_search_locks(svirt_sandbox_domain)
-+files_dontaudit_unmount_all_mountpoints(svirt_sandbox_domain)
-+
-+fs_getattr_all_fs(svirt_sandbox_domain)
-+fs_list_inotifyfs(svirt_sandbox_domain)
-+fs_rw_inherited_tmpfs_files(svirt_sandbox_domain)
-+fs_read_fusefs_files(svirt_sandbox_domain)
-+
-+auth_dontaudit_read_passwd(svirt_sandbox_domain)
-+auth_dontaudit_read_login_records(svirt_sandbox_domain)
-+auth_dontaudit_write_login_records(svirt_sandbox_domain)
-+auth_search_pam_console_data(svirt_sandbox_domain)
-+
-+clock_read_adjtime(svirt_sandbox_domain)
-+
-+init_read_utmp(svirt_sandbox_domain)
-+init_dontaudit_write_utmp(svirt_sandbox_domain)
-+
-+libs_dontaudit_setattr_lib_files(svirt_sandbox_domain)
-+
-+miscfiles_dontaudit_access_check_cert(svirt_sandbox_domain)
-+miscfiles_dontaudit_setattr_fonts_cache_dirs(svirt_sandbox_domain)
-+miscfiles_read_fonts(svirt_sandbox_domain)
-+miscfiles_read_hwdata(svirt_sandbox_domain)
-+
-+systemd_read_unit_files(svirt_sandbox_domain)
-+
-+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)
++tunable_policy(`deny_ptrace',`',`
++ allow svirt_sandbox_domain self:process ptrace;
+')
-allow svirt_lxc_domain self:capability { kill setuid setgid dac_override sys_boot };
@@ -96017,23 +102576,122 @@ index 1f22fba..15485c6 100644
-miscfiles_read_fonts(svirt_lxc_domain)
-
-mta_dontaudit_read_spool_symlinks(svirt_lxc_domain)
-+optional_policy(`
-+ mta_dontaudit_read_spool_symlinks(svirt_sandbox_domain)
-+')
++allow virtd_t svirt_sandbox_domain:unix_stream_socket { create_stream_socket_perms connectto };
++allow virtd_t svirt_sandbox_domain:process { signal_perms getattr };
++allow virtd_lxc_t svirt_sandbox_domain:process { getattr getsched setsched setrlimit transition signal_perms };
++
++allow svirt_sandbox_domain virtd_lxc_t:process sigchld;
++allow svirt_sandbox_domain virtd_lxc_t:fd use;
++allow svirt_sandbox_domain virtd_lxc_t:unix_stream_socket { connectto rw_socket_perms };
++
++manage_dirs_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
++manage_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
++manage_lnk_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
++manage_sock_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
++manage_fifo_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
++allow svirt_sandbox_domain svirt_sandbox_file_t:chr_file setattr;
++rw_chr_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
++
++allow svirt_sandbox_domain svirt_sandbox_file_t:blk_file setattr;
++rw_blk_files_pattern(svirt_sandbox_domain, svirt_sandbox_file_t, svirt_sandbox_file_t)
++can_exec(svirt_sandbox_domain, svirt_sandbox_file_t)
++allow svirt_sandbox_domain svirt_sandbox_file_t:dir mounton;
++allow svirt_sandbox_domain svirt_sandbox_file_t:filesystem getattr;
++
++kernel_getattr_proc(svirt_sandbox_domain)
++kernel_list_all_proc(svirt_sandbox_domain)
++kernel_read_all_sysctls(svirt_sandbox_domain)
++kernel_rw_net_sysctls(svirt_sandbox_domain)
++kernel_dontaudit_search_kernel_sysctl(svirt_sandbox_domain)
++
++corecmd_exec_all_executables(svirt_sandbox_domain)
++
++files_dontaudit_getattr_all_dirs(svirt_sandbox_domain)
++files_dontaudit_getattr_all_files(svirt_sandbox_domain)
++files_dontaudit_getattr_all_symlinks(svirt_sandbox_domain)
++files_dontaudit_getattr_all_pipes(svirt_sandbox_domain)
++files_dontaudit_getattr_all_sockets(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_list_var(svirt_sandbox_domain)
++files_list_var_lib(svirt_sandbox_domain)
++files_search_all(svirt_sandbox_domain)
++files_read_config_files(svirt_sandbox_domain)
++files_read_usr_symlinks(svirt_sandbox_domain)
++files_search_locks(svirt_sandbox_domain)
++files_dontaudit_unmount_all_mountpoints(svirt_sandbox_domain)
++
++fs_getattr_all_fs(svirt_sandbox_domain)
++fs_list_inotifyfs(svirt_sandbox_domain)
++fs_rw_inherited_tmpfs_files(svirt_sandbox_domain)
++fs_read_fusefs_files(svirt_sandbox_domain)
++
++auth_dontaudit_read_passwd(svirt_sandbox_domain)
++auth_dontaudit_read_login_records(svirt_sandbox_domain)
++auth_dontaudit_write_login_records(svirt_sandbox_domain)
++auth_search_pam_console_data(svirt_sandbox_domain)
++
++clock_read_adjtime(svirt_sandbox_domain)
++
++init_read_utmp(svirt_sandbox_domain)
++init_dontaudit_write_utmp(svirt_sandbox_domain)
++
++libs_dontaudit_setattr_lib_files(svirt_sandbox_domain)
++
++miscfiles_dontaudit_access_check_cert(svirt_sandbox_domain)
++miscfiles_dontaudit_setattr_fonts_cache_dirs(svirt_sandbox_domain)
++miscfiles_read_fonts(svirt_sandbox_domain)
++miscfiles_read_hwdata(svirt_sandbox_domain)
++
++systemd_read_unit_files(svirt_sandbox_domain)
++
++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(`
- udev_read_pid_files(svirt_lxc_domain)
-+ ssh_use_ptys(svirt_sandbox_domain)
++ apache_exec_modules(svirt_sandbox_domain)
++ apache_read_sys_content(svirt_sandbox_domain)
')
optional_policy(`
- apache_exec_modules(svirt_lxc_domain)
- apache_read_sys_content(svirt_lxc_domain)
++ docker_manage_lib_files(svirt_lxc_net_t)
++ docker_manage_lib_dirs(svirt_lxc_net_t)
++ docker_read_share_files(svirt_sandbox_domain)
++ docker_lib_filetrans(svirt_sandbox_domain,svirt_sandbox_file_t, sock_file)
++ docker_use_ptys(svirt_sandbox_domain)
++')
++
++optional_policy(`
++ mta_dontaudit_read_spool_symlinks(svirt_sandbox_domain)
++')
++
++optional_policy(`
++ ssh_use_ptys(svirt_sandbox_domain)
++')
++
++optional_policy(`
+ udev_read_pid_files(svirt_sandbox_domain)
+')
+
+optional_policy(`
+ userhelper_dontaudit_write_config(svirt_sandbox_domain)
++')
++
++tunable_policy(`virt_use_nfs',`
++ fs_manage_nfs_dirs(svirt_sandbox_domain)
++ fs_manage_nfs_files(svirt_sandbox_domain)
++ fs_read_nfs_symlinks(svirt_sandbox_domain)
++')
++
++tunable_policy(`virt_use_samba',`
++ fs_manage_nfs_files(svirt_sandbox_domain)
++ fs_manage_cifs_files(svirt_sandbox_domain)
++ fs_read_cifs_symlinks(svirt_sandbox_domain)
')
########################################
@@ -96045,7 +102703,7 @@ index 1f22fba..15485c6 100644
+typeattribute svirt_lxc_net_t sandbox_net_domain;
-allow svirt_lxc_net_t self:capability { chown dac_read_search dac_override fowner fsetid net_raw net_admin sys_admin sys_nice sys_ptrace sys_resource setpcap };
-+allow svirt_lxc_net_t self:capability { kill setuid setgid sys_boot ipc_lock chown dac_read_search dac_override fowner fsetid sys_chroot sys_admin sys_nice sys_ptrace sys_resource setpcap };
++allow svirt_lxc_net_t self:capability { kill setuid setgid setfcap sys_boot ipc_lock chown dac_read_search dac_override fowner fsetid sys_chroot sys_nice sys_ptrace sys_resource setpcap };
dontaudit svirt_lxc_net_t self:capability2 block_suspend;
-allow svirt_lxc_net_t self:process setrlimit;
-allow svirt_lxc_net_t self:tcp_socket { accept listen };
@@ -96053,15 +102711,18 @@ index 1f22fba..15485c6 100644
-allow svirt_lxc_net_t self:packet_socket create_socket_perms;
-allow svirt_lxc_net_t self:socket create_socket_perms;
-allow svirt_lxc_net_t self:rawip_socket create_socket_perms;
-+allow svirt_lxc_net_t self:process { execstack execmem };
- allow svirt_lxc_net_t self:netlink_socket create_socket_perms;
+-allow svirt_lxc_net_t self:netlink_socket create_socket_perms;
-allow svirt_lxc_net_t self:netlink_tcpdiag_socket create_socket_perms;
-+allow svirt_lxc_net_t self:netlink_tcpdiag_socket create_netlink_socket_perms;
- allow svirt_lxc_net_t self:netlink_kobject_uevent_socket create_socket_perms;
-
+-allow svirt_lxc_net_t self:netlink_kobject_uevent_socket create_socket_perms;
+-
-kernel_read_network_state(svirt_lxc_net_t)
-kernel_read_irq_sysctls(svirt_lxc_net_t)
--
++allow svirt_lxc_net_t self:process { execstack execmem };
++
++tunable_policy(`virt_sandbox_use_sys_admin',`
++ allow svirt_lxc_net_t self:capability sys_admin;
++')
+
-corenet_all_recvfrom_unlabeled(svirt_lxc_net_t)
-corenet_all_recvfrom_netlabel(svirt_lxc_net_t)
-corenet_tcp_sendrecv_generic_if(svirt_lxc_net_t)
@@ -96072,13 +102733,20 @@ index 1f22fba..15485c6 100644
-corenet_udp_sendrecv_all_ports(svirt_lxc_net_t)
-corenet_tcp_bind_generic_node(svirt_lxc_net_t)
-corenet_udp_bind_generic_node(svirt_lxc_net_t)
-+allow svirt_lxc_net_t virt_lxc_var_run_t:dir list_dir_perms;
-+allow svirt_lxc_net_t virt_lxc_var_run_t:file read_file_perms;
++tunable_policy(`virt_sandbox_use_netlink',`
++ allow svirt_lxc_net_t self:netlink_socket create_socket_perms;
++ allow svirt_lxc_net_t self:netlink_tcpdiag_socket create_netlink_socket_perms;
++ allow svirt_lxc_net_t self:netlink_kobject_uevent_socket create_socket_perms;
++', `
++ logging_dontaudit_send_audit_msgs(svirt_lxc_net_t)
++')
-corenet_sendrecv_all_server_packets(svirt_lxc_net_t)
-corenet_udp_bind_all_ports(svirt_lxc_net_t)
-corenet_tcp_bind_all_ports(svirt_lxc_net_t)
--
++allow svirt_lxc_net_t virt_lxc_var_run_t:dir list_dir_perms;
++allow svirt_lxc_net_t virt_lxc_var_run_t:file read_file_perms;
+
-corenet_sendrecv_all_client_packets(svirt_lxc_net_t)
-corenet_tcp_connect_all_ports(svirt_lxc_net_t)
+kernel_read_irq_sysctls(svirt_lxc_net_t)
@@ -96101,17 +102769,21 @@ index 1f22fba..15485c6 100644
auth_use_nsswitch(svirt_lxc_net_t)
+-logging_send_audit_msgs(svirt_lxc_net_t)
+rpm_read_db(svirt_lxc_net_t)
-+
- logging_send_audit_msgs(svirt_lxc_net_t)
- userdom_use_user_ptys(svirt_lxc_net_t)
+-userdom_use_user_ptys(svirt_lxc_net_t)
++logging_send_syslog_msg(svirt_lxc_net_t)
-optional_policy(`
- rpm_read_db(svirt_lxc_net_t)
--')
--
++tunable_policy(`virt_sandbox_use_audit',`
++ logging_send_audit_msgs(svirt_lxc_net_t)
+ ')
+
-#######################################
++userdom_use_user_ptys(svirt_lxc_net_t)
++
+########################################
#
-# Prot exec local policy
@@ -96123,9 +102795,12 @@ index 1f22fba..15485c6 100644
+allow svirt_qemu_net_t self:capability { kill setuid setgid sys_boot ipc_lock chown dac_read_search dac_override fowner fsetid sys_chroot sys_admin sys_nice sys_ptrace sys_resource setpcap };
+dontaudit svirt_qemu_net_t self:capability2 block_suspend;
+allow svirt_qemu_net_t self:process { execstack execmem };
-+allow svirt_qemu_net_t self:netlink_socket create_socket_perms;
-+allow svirt_qemu_net_t self:netlink_tcpdiag_socket create_netlink_socket_perms;
-+allow svirt_qemu_net_t self:netlink_kobject_uevent_socket create_socket_perms;
++
++tunable_policy(`virt_sandbox_use_netlink',`
++ allow svirt_qemu_net_t self:netlink_socket create_socket_perms;
++ allow svirt_qemu_net_t self:netlink_tcpdiag_socket create_netlink_socket_perms;
++ allow svirt_qemu_net_t self:netlink_kobject_uevent_socket create_socket_perms;
++')
+
+manage_dirs_pattern(sandbox_net_domain, svirt_home_t, svirt_home_t)
+manage_files_pattern(sandbox_net_domain, svirt_home_t, svirt_home_t)
@@ -96147,8 +102822,7 @@ index 1f22fba..15485c6 100644
+append_files_pattern(svirt_qemu_net_t, virt_log_t, virt_log_t)
+
+kernel_read_irq_sysctls(svirt_qemu_net_t)
-
--allow svirt_prot_exec_t self:process { execmem execstack };
++
+dev_read_sysfs(svirt_qemu_net_t)
+dev_getattr_mtrr_dev(svirt_qemu_net_t)
+dev_read_rand(svirt_qemu_net_t)
@@ -96162,12 +102836,17 @@ index 1f22fba..15485c6 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)
+
-+logging_send_audit_msgs(svirt_qemu_net_t)
++logging_send_syslog_msg(svirt_qemu_net_t)
++
++tunable_policy(`virt_sandbox_use_audit',`
++ logging_send_audit_msgs(svirt_qemu_net_t)
++')
+
+userdom_use_user_ptys(svirt_qemu_net_t)
@@ -96185,7 +102864,7 @@ index 1f22fba..15485c6 100644
allow virt_qmf_t self:tcp_socket create_stream_socket_perms;
allow virt_qmf_t self:netlink_route_socket create_netlink_socket_perms;
-@@ -1165,12 +1339,12 @@ dev_read_sysfs(virt_qmf_t)
+@@ -1165,12 +1426,12 @@ dev_read_sysfs(virt_qmf_t)
dev_read_rand(virt_qmf_t)
dev_read_urand(virt_qmf_t)
@@ -96200,7 +102879,7 @@ index 1f22fba..15485c6 100644
sysnet_read_config(virt_qmf_t)
optional_policy(`
-@@ -1183,9 +1357,8 @@ optional_policy(`
+@@ -1183,9 +1444,8 @@ optional_policy(`
########################################
#
@@ -96211,7 +102890,7 @@ index 1f22fba..15485c6 100644
allow virt_bridgehelper_t self:process { setcap getcap };
allow virt_bridgehelper_t self:capability { setpcap setgid setuid net_admin };
allow virt_bridgehelper_t self:tcp_socket create_stream_socket_perms;
-@@ -1198,5 +1371,193 @@ kernel_read_network_state(virt_bridgehelper_t)
+@@ -1198,5 +1458,218 @@ kernel_read_network_state(virt_bridgehelper_t)
corenet_rw_tun_tap_dev(virt_bridgehelper_t)
@@ -96224,7 +102903,7 @@ index 1f22fba..15485c6 100644
+# virt_qemu_ga local policy
+#
+
-+allow virt_qemu_ga_t self:capability { sys_admin sys_tty_config };
++allow virt_qemu_ga_t self:capability { sys_admin sys_time sys_tty_config };
+
+allow virt_qemu_ga_t self:fifo_file rw_fifo_file_perms;
+allow virt_qemu_ga_t self:unix_stream_socket create_stream_socket_perms;
@@ -96252,7 +102931,10 @@ index 1f22fba..15485c6 100644
+corecmd_exec_shell(virt_qemu_ga_t)
+corecmd_exec_bin(virt_qemu_ga_t)
+
++clock_read_adjtime(virt_qemu_ga_t)
++
+dev_rw_sysfs(virt_qemu_ga_t)
++dev_rw_realtime_clock(virt_qemu_ga_t)
+
+files_list_all_mountpoints(virt_qemu_ga_t)
+files_write_all_mountpoints(virt_qemu_ga_t)
@@ -96265,6 +102947,7 @@ index 1f22fba..15485c6 100644
+term_use_unallocated_ttys(virt_qemu_ga_t)
+
+logging_send_syslog_msg(virt_qemu_ga_t)
++logging_send_audit_msgs(virt_qemu_ga_t)
+
+sysnet_dns_name_resolve(virt_qemu_ga_t)
+
@@ -96278,6 +102961,10 @@ index 1f22fba..15485c6 100644
+')
+
+optional_policy(`
++ clock_domtrans(virt_qemu_ga_t)
++')
++
++optional_policy(`
+ dbus_system_bus_client(virt_qemu_ga_t)
+')
+
@@ -96348,9 +103035,12 @@ index 1f22fba..15485c6 100644
+
+allow svirt_kvm_net_t self:capability { kill setuid setgid sys_boot ipc_lock chown dac_read_search dac_override fowner fsetid sys_chroot sys_admin sys_nice sys_ptrace sys_resource setpcap };
+dontaudit svirt_kvm_net_t self:capability2 block_suspend;
-+allow svirt_kvm_net_t self:netlink_socket create_socket_perms;
-+allow svirt_kvm_net_t self:netlink_tcpdiag_socket create_netlink_socket_perms;
-+allow svirt_kvm_net_t self:netlink_kobject_uevent_socket create_socket_perms;
++
++tunable_policy(`virt_sandbox_use_netlink',`
++ allow svirt_kvm_net_t self:netlink_socket create_socket_perms;
++ allow svirt_kvm_net_t self:netlink_tcpdiag_socket create_netlink_socket_perms;
++ allow svirt_kvm_net_t self:netlink_kobject_uevent_socket create_socket_perms;
++')
+
+term_use_generic_ptys(svirt_kvm_net_t)
+term_use_ptmx(svirt_kvm_net_t)
@@ -96385,7 +103075,11 @@ index 1f22fba..15485c6 100644
+
+rpm_read_db(svirt_kvm_net_t)
+
-+logging_send_audit_msgs(svirt_kvm_net_t)
++logging_send_syslog_msg(svirt_kvm_net_t)
++
++tunable_policy(`virt_sandbox_use_audit',`
++ logging_send_audit_msgs(svirt_kvm_net_t)
++')
+
+userdom_use_user_ptys(svirt_kvm_net_t)
+
@@ -96407,6 +103101,16 @@ index 1f22fba..15485c6 100644
+corenet_udp_bind_all_ports(sandbox_net_domain)
+corenet_tcp_bind_all_ports(sandbox_net_domain)
+corenet_tcp_connect_all_ports(sandbox_net_domain)
++
++optional_policy(`
++ sssd_stream_connect(sandbox_net_domain)
++')
++
++optional_policy(`
++ systemd_dbus_chat_logind(sandbox_net_domain)
++')
++
++
diff --git a/vlock.te b/vlock.te
index 9ead775..b5285e7 100644
--- a/vlock.te
@@ -96421,6 +103125,247 @@ index 9ead775..b5285e7 100644
userdom_dontaudit_search_user_home_dirs(vlock_t)
-userdom_use_user_terminals(vlock_t)
+userdom_use_inherited_user_terminals(vlock_t)
+diff --git a/vmtools.fc b/vmtools.fc
+new file mode 100644
+index 0000000..c5deffb
+--- /dev/null
++++ b/vmtools.fc
+@@ -0,0 +1,5 @@
++/usr/bin/vmtoolsd -- gen_context(system_u:object_r:vmtools_exec_t,s0)
++
++/usr/bin/vmware-user-suid-wrapper -- gen_context(system_u:object_r:vmtools_helper_exec_t,s0)
++
++/usr/lib/systemd/system/vmtoolsd.* -- gen_context(system_u:object_r:vmtools_unit_file_t,s0)
+diff --git a/vmtools.if b/vmtools.if
+new file mode 100644
+index 0000000..7933d80
+--- /dev/null
++++ b/vmtools.if
+@@ -0,0 +1,122 @@
++## VMware Tools daemon
++
++########################################
++##
++## Execute vmtools in the vmtools domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`vmtools_domtrans',`
++ gen_require(`
++ type vmtools_t, vmtools_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, vmtools_exec_t, vmtools_t)
++')
++
++########################################
++##
++## Execute vmtools in the vmtools domin.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`vmtools_domtrans_helper',`
++ gen_require(`
++ type vmtools_helper_t, vmtools_helper_exec_t;
++ ')
++
++ corecmd_search_bin($1)
++ domtrans_pattern($1, vmtools_helper_exec_t, vmtools_helper_t)
++')
++
++########################################
++##
++## Execute vmtools helpers in the vmtools_heler domain.
++##
++##
++##
++## Domain allowed access
++##
++##
++##
++##
++## The role to be allowed the mozilla_plugin domain.
++##
++##
++#
++interface(`vmtools_run_helper',`
++ gen_require(`
++ attribute_role vmtools_helper_roles;
++ ')
++
++ vmtools_domtrans_helper($1)
++ roleattribute $2 vmtools_helper_roles;
++')
++
++########################################
++##
++## Execute vmtools server in the vmtools domain.
++##
++##
++##
++## Domain allowed to transition.
++##
++##
++#
++interface(`vmtools_systemctl',`
++ gen_require(`
++ type vmtools_t;
++ type vmtools_unit_file_t;
++ ')
++
++ systemd_exec_systemctl($1)
++ systemd_read_fifo_file_passwd_run($1)
++ allow $1 vmtools_unit_file_t:file read_file_perms;
++ allow $1 vmtools_unit_file_t:service manage_service_perms;
++
++ ps_process_pattern($1, vmtools_t)
++')
++
++
++########################################
++##
++## All of the rules required to administrate
++## an vmtools environment
++##
++##
++##
++## Domain allowed access.
++##
++##
++##
++#
++interface(`vmtools_admin',`
++ gen_require(`
++ type vmtools_t;
++ type vmtools_unit_file_t;
++ ')
++
++ allow $1 vmtools_t:process { signal_perms };
++ ps_process_pattern($1, vmtools_t)
++
++ tunable_policy(`deny_ptrace',`',`
++ allow $1 vmtools_t:process ptrace;
++ ')
++
++ vmtools_systemctl($1)
++ admin_pattern($1, vmtools_unit_file_t)
++ allow $1 vmtools_unit_file_t:service all_service_perms;
++ optional_policy(`
++ systemd_passwd_agent_exec($1)
++ systemd_read_fifo_file_passwd_run($1)
++ ')
++')
+diff --git a/vmtools.te b/vmtools.te
+new file mode 100644
+index 0000000..1928ad9
+--- /dev/null
++++ b/vmtools.te
+@@ -0,0 +1,96 @@
++policy_module(vmtools, 1.0.0)
++
++########################################
++#
++# Declarations
++#
++
++attribute_role vmtools_helper_roles;
++
++roleattribute system_r vmtools_helper_roles;
++
++type vmtools_t;
++type vmtools_exec_t;
++init_daemon_domain(vmtools_t, vmtools_exec_t)
++role vmtools_helper_roles types vmtools_t;
++
++type vmtools_helper_t;
++type vmtools_helper_exec_t;
++application_domain(vmtools_helper_t, vmtools_helper_exec_t)
++domain_system_change_exemption(vmtools_helper_t)
++role vmtools_helper_roles types vmtools_helper_t;
++
++type vmtools_unit_file_t;
++systemd_unit_file(vmtools_unit_file_t)
++
++type vmtools_tmp_t;
++files_tmp_file(vmtools_tmp_t)
++
++########################################
++#
++# vmtools local policy
++#
++
++allow vmtools_t self:capability { sys_time sys_rawio };
++allow vmtools_t self:fifo_file rw_fifo_file_perms;
++allow vmtools_t self:unix_stream_socket create_stream_socket_perms;
++allow vmtools_t self:unix_dgram_socket create_socket_perms;
++
++manage_dirs_pattern(vmtools_t, vmtools_tmp_t, vmtools_tmp_t)
++manage_files_pattern(vmtools_t, vmtools_tmp_t, vmtools_tmp_t)
++manage_lnk_files_pattern(vmtools_t, vmtools_tmp_t, vmtools_tmp_t)
++files_tmp_filetrans(vmtools_t, vmtools_tmp_t, { file dir })
++
++kernel_read_system_state(vmtools_t)
++kernel_read_network_state(vmtools_t)
++
++corecmd_exec_bin(vmtools_t)
++corecmd_exec_shell(vmtools_t)
++
++dev_read_urand(vmtools_t)
++dev_getattr_all_blk_files(vmtools_t)
++
++fs_getattr_all_fs(vmtools_t)
++
++auth_use_nsswitch(vmtools_t)
++
++#shutdown
++init_rw_utmp(vmtools_t)
++init_stream_connect(vmtools_t)
++init_telinit(vmtools_t)
++
++logging_send_syslog_msg(vmtools_t)
++
++systemd_exec_systemctl(vmtools_t)
++
++sysnet_domtrans_ifconfig(vmtools_t)
++
++xserver_stream_connect_xdm(vmtools_t)
++xserver_stream_connect(vmtools_t)
++
++optional_policy(`
++ networkmanager_dbus_chat(vmtools_t)
++')
++
++optional_policy(`
++ unconfined_domain(vmtools_t)
++')
++
++########################################
++#
++# vmtools-helper local policy
++#
++
++domtrans_pattern(vmtools_helper_t, vmtools_exec_t, vmtools_t)
++can_exec(vmtools_helper_t, vmtools_helper_exec_t)
++
++corecmd_exec_bin(vmtools_helper_t)
++
++userdom_stream_connect(vmtools_helper_t)
++userdom_use_inherited_user_ttys(vmtools_helper_t)
++userdom_use_inherited_user_ptys(vmtools_helper_t)
++
++optional_policy(`
++ unconfined_domain(vmtools_helper_t)
++')
++
diff --git a/vmware.if b/vmware.if
index 20a1fb2..470ea95 100644
--- a/vmware.if
@@ -96710,7 +103655,7 @@ index 7a7f342..afedcba 100644
##
##
diff --git a/vpn.te b/vpn.te
-index 9329eae..824e86f 100644
+index 9329eae..38a4bf3 100644
--- a/vpn.te
+++ b/vpn.te
@@ -1,4 +1,4 @@
@@ -96820,14 +103765,38 @@ index 9329eae..824e86f 100644
optional_policy(`
dbus_system_bus_client(vpnc_t)
-@@ -125,7 +122,3 @@ optional_policy(`
+@@ -124,8 +121,5 @@ optional_policy(`
+
optional_policy(`
networkmanager_attach_tun_iface(vpnc_t)
- ')
+-')
-
-optional_policy(`
- seutil_use_newrole_fds(vpnc_t)
--')
++ networkmanager_manage_pid_files(vpnc_t)
+ ')
+diff --git a/w3c.te b/w3c.te
+index bcb76b6..d3cf4a8 100644
+--- a/w3c.te
++++ b/w3c.te
+@@ -7,10 +7,17 @@ policy_module(w3c, 1.0.1)
+
+ apache_content_template(w3c_validator)
+
++type httpd_w3c_validator_tmp_t;
++files_tmp_file(httpd_w3c_validator_tmp_t)
++
+ ########################################
+ #
+ # Local policy
+ #
++manage_dirs_pattern(httpd_w3c_validator_script_t, httpd_w3c_validator_tmp_t, httpd_w3c_validator_tmp_t)
++manage_files_pattern(httpd_w3c_validator_script_t, httpd_w3c_validator_tmp_t, httpd_w3c_validator_tmp_t)
++files_tmp_filetrans(httpd_w3c_validator_script_t, httpd_w3c_validator_tmp_t, { file dir })
++
+
+ corenet_all_recvfrom_unlabeled(httpd_w3c_validator_script_t)
+ corenet_all_recvfrom_netlabel(httpd_w3c_validator_script_t)
diff --git a/watchdog.fc b/watchdog.fc
index eecd0e0..8df2e8c 100644
--- a/watchdog.fc
@@ -96846,10 +103815,10 @@ index eecd0e0..8df2e8c 100644
/var/run/watchdog\.pid -- gen_context(system_u:object_r:watchdog_var_run_t,s0)
diff --git a/watchdog.te b/watchdog.te
-index 29f79e8..45b3926 100644
+index 29f79e8..026b259 100644
--- a/watchdog.te
+++ b/watchdog.te
-@@ -12,12 +12,18 @@ init_daemon_domain(watchdog_t, watchdog_exec_t)
+@@ -12,29 +12,41 @@ init_daemon_domain(watchdog_t, watchdog_exec_t)
type watchdog_initrc_exec_t;
init_script_file(watchdog_initrc_exec_t)
@@ -96868,9 +103837,15 @@ index 29f79e8..45b3926 100644
########################################
#
# Local policy
-@@ -29,8 +35,12 @@ allow watchdog_t self:process { setsched signal_perms };
+ #
+
+-allow watchdog_t self:capability { sys_admin net_admin sys_boot ipc_lock sys_pacct sys_nice sys_resource };
++allow watchdog_t self:capability { sys_admin net_admin sys_boot ipc_lock sys_pacct sys_nice sys_resource net_raw };
+ dontaudit watchdog_t self:capability sys_tty_config;
+ allow watchdog_t self:process { setsched signal_perms };
allow watchdog_t self:fifo_file rw_fifo_file_perms;
allow watchdog_t self:tcp_socket { accept listen };
++allow watchdog_t self:rawip_socket create_socket_perms;
-allow watchdog_t watchdog_log_t:file { append_file_perms create_file_perms setattr_file_perms };
-logging_log_filetrans(watchdog_t, watchdog_log_t, file)
@@ -96883,7 +103858,12 @@ index 29f79e8..45b3926 100644
manage_files_pattern(watchdog_t, watchdog_var_run_t, watchdog_var_run_t)
files_pid_filetrans(watchdog_t, watchdog_var_run_t, file)
-@@ -63,7 +73,6 @@ domain_signull_all_domains(watchdog_t)
+
++kernel_read_network_state(watchdog_t)
+ kernel_read_system_state(watchdog_t)
+ kernel_read_kernel_sysctls(watchdog_t)
+ kernel_unmount_proc(watchdog_t)
+@@ -63,7 +75,6 @@ domain_signull_all_domains(watchdog_t)
domain_signal_all_domains(watchdog_t)
domain_kill_all_domains(watchdog_t)
@@ -96891,7 +103871,11 @@ index 29f79e8..45b3926 100644
files_manage_etc_runtime_files(watchdog_t)
files_etc_filetrans_etc_runtime(watchdog_t, file)
-@@ -75,8 +84,6 @@ auth_append_login_records(watchdog_t)
+@@ -72,11 +83,10 @@ fs_getattr_all_fs(watchdog_t)
+ fs_search_auto_mountpoints(watchdog_t)
+
+ auth_append_login_records(watchdog_t)
++auth_read_passwd(watchdog_t)
logging_send_syslog_msg(watchdog_t)
@@ -96900,7 +103884,7 @@ index 29f79e8..45b3926 100644
sysnet_dns_name_resolve(watchdog_t)
userdom_dontaudit_use_unpriv_user_fds(watchdog_t)
-@@ -97,3 +104,28 @@ optional_policy(`
+@@ -97,3 +107,28 @@ optional_policy(`
optional_policy(`
udev_read_db(watchdog_t)
')
@@ -97195,7 +104179,7 @@ index cdca8c7..3c09628 100644
manage_files_pattern(webalizer_t, httpd_webalizer_content_t, httpd_webalizer_content_t)
')
diff --git a/wine.if b/wine.if
-index fd2b6cc..52a2e72 100644
+index fd2b6cc..938c4a7 100644
--- a/wine.if
+++ b/wine.if
@@ -1,46 +1,57 @@
@@ -97344,8 +104328,31 @@ index fd2b6cc..52a2e72 100644
')
########################################
+@@ -165,3 +169,22 @@ interface(`wine_rw_shm',`
+
+ allow $1 wine_t:shm rw_shm_perms;
+ ')
++
++########################################
++##
++## Transition to wine named content
++##
++##
++##
++## Domain allowed access.
++##
++##
++#
++interface(`wine_filetrans_named_content',`
++ gen_require(`
++ type wine_home_t;
++ ')
++
++ userdom_user_home_dir_filetrans($1, wine_home_t, dir, ".wine")
++')
++
diff --git a/wine.te b/wine.te
-index b51923c..8e47110 100644
+index b51923c..4906ce0 100644
--- a/wine.te
+++ b/wine.te
@@ -14,10 +14,11 @@ policy_module(wine, 1.10.1)
@@ -97361,7 +104368,7 @@ index b51923c..8e47110 100644
type wine_exec_t;
userdom_user_application_domain(wine_t, wine_exec_t)
role wine_roles types wine_t;
-@@ -25,56 +26,57 @@ role wine_roles types wine_t;
+@@ -25,56 +26,58 @@ role wine_roles types wine_t;
type wine_home_t;
userdom_user_home_content(wine_home_t)
@@ -97373,34 +104380,34 @@ index b51923c..8e47110 100644
# Local policy
#
+domain_mmap_low(wine_t)
-+
-+optional_policy(`
-+ unconfined_domain(wine_t)
-+')
-allow wine_t self:process { execstack execmem execheap };
-allow wine_t self:fifo_file manage_fifo_file_perms;
++optional_policy(`
++ unconfined_domain(wine_t)
++')
-can_exec(wine_t, wine_exec_t)
+
+-userdom_user_home_dir_filetrans(wine_t, wine_home_t, dir, ".wine")
+########################################
+#
+# Common wine domain policy
+#
--userdom_user_home_dir_filetrans(wine_t, wine_home_t, dir, ".wine")
-+allow wine_domain self:process { execstack execmem execheap };
-+allow wine_domain self:fifo_file manage_fifo_file_perms;
-
-manage_dirs_pattern(wine_t, wine_tmp_t, wine_tmp_t)
-manage_files_pattern(wine_t, wine_tmp_t, wine_tmp_t)
-files_tmp_filetrans(wine_t, wine_tmp_t, { file dir })
-+can_exec(wine_domain, wine_exec_t)
++allow wine_domain self:process { execstack execmem execheap };
++allow wine_domain self:fifo_file manage_fifo_file_perms;
-domain_mmap_low(wine_t)
++can_exec(wine_domain, wine_exec_t)
++
+manage_files_pattern(wine_domain, wine_home_t, wine_home_t)
+manage_dirs_pattern(wine_domain, wine_home_t, wine_home_t)
-+userdom_user_home_dir_filetrans(wine_domain, wine_home_t, dir, ".wine")
+userdom_tmpfs_filetrans(wine_domain, file)
++wine_filetrans_named_content(wine_domain)
-files_execmod_all_files(wine_t)
+files_execmod_all_files(wine_domain)
@@ -97430,19 +104437,19 @@ index b51923c..8e47110 100644
optional_policy(`
- rtkit_scheduled(wine_t)
--')
--
--optional_policy(`
-- unconfined_domain(wine_t)
+ rtkit_scheduled(wine_domain)
')
optional_policy(`
-- xserver_read_xdm_pid(wine_t)
-- xserver_rw_shm(wine_t)
+- unconfined_domain(wine_t)
+ xserver_read_xdm_pid(wine_domain)
+ xserver_rw_shm(wine_domain)
')
+
+-optional_policy(`
+- xserver_read_xdm_pid(wine_t)
+- xserver_rw_shm(wine_t)
+-')
diff --git a/wireshark.te b/wireshark.te
index cf5cab6..a2d910f 100644
--- a/wireshark.te
@@ -98800,7 +105807,7 @@ index 0cea2cd..7668014 100644
userdom_dontaudit_use_unpriv_user_fds(xfs_t)
diff --git a/xguest.te b/xguest.te
-index 2882821..8cf4841 100644
+index 2882821..0f1f514 100644
--- a/xguest.te
+++ b/xguest.te
@@ -1,4 +1,4 @@
@@ -98911,18 +105918,26 @@ index 2882821..8cf4841 100644
')
')
-@@ -84,12 +97,17 @@ optional_policy(`
+@@ -84,12 +97,25 @@ optional_policy(`
')
')
+
optional_policy(`
- apache_role(xguest_r, xguest_t)
++ abrt_dontaudit_read_config(xguest_t)
++')
++
++optional_policy(`
+ colord_dbus_chat(xguest_t)
+')
+
+optional_policy(`
+ chrome_role(xguest_r, xguest_t)
++')
++
++optional_policy(`
++ thumb_role(xguest_r, xguest_t)
')
optional_policy(`
@@ -98931,7 +105946,7 @@ index 2882821..8cf4841 100644
')
optional_policy(`
-@@ -97,75 +115,82 @@ optional_policy(`
+@@ -97,75 +123,82 @@ optional_policy(`
')
optional_policy(`
@@ -98949,7 +105964,7 @@ index 2882821..8cf4841 100644
- kernel_read_network_state(xguest_t)
+ mozilla_run_plugin(xguest_t, xguest_r)
+')
-
++
+optional_policy(`
+ mount_run_fusermount(xguest_t, xguest_r)
+')
@@ -98958,7 +105973,7 @@ index 2882821..8cf4841 100644
+ pcscd_read_pid_files(xguest_t)
+ pcscd_stream_connect(xguest_t)
+')
-+
+
+optional_policy(`
+ rhsmcertd_dontaudit_dbus_chat(xguest_t)
+')
@@ -99131,10 +106146,10 @@ index d837e88..910aeec 100644
userdom_search_user_home_dirs(yam_t)
diff --git a/zabbix.fc b/zabbix.fc
-index ce10cb1..3181728 100644
+index ce10cb1..38b143f 100644
--- a/zabbix.fc
+++ b/zabbix.fc
-@@ -4,11 +4,15 @@
+@@ -4,12 +4,17 @@
/usr/bin/zabbix_server -- gen_context(system_u:object_r:zabbix_exec_t,s0)
/usr/bin/zabbix_agentd -- gen_context(system_u:object_r:zabbix_agent_exec_t,s0)
@@ -99149,8 +106164,10 @@ index ce10cb1..3181728 100644
+/usr/sbin/zabbix_proxy_pgsql -- gen_context(system_u:object_r:zabbix_exec_t,s0)
+/usr/sbin/zabbix_proxy_sqlite3 -- gen_context(system_u:object_r:zabbix_exec_t,s0)
++/var/lib/zabbixsrv(/.*)? gen_context(system_u:object_r:zabbix_var_lib_t,s0)
/var/log/zabbix(/.*)? gen_context(system_u:object_r:zabbix_log_t,s0)
+ /var/run/zabbix(/.*)? gen_context(system_u:object_r:zabbix_var_run_t,s0)
diff --git a/zabbix.if b/zabbix.if
index dd63de0..38ce620 100644
--- a/zabbix.if
@@ -99314,10 +106331,10 @@ index dd63de0..38ce620 100644
- admin_pattern($1, zabbix_tmpfs_t)
')
diff --git a/zabbix.te b/zabbix.te
-index 46e4cd3..79317e6 100644
+index 46e4cd3..614e66c 100644
--- a/zabbix.te
+++ b/zabbix.te
-@@ -6,21 +6,23 @@ policy_module(zabbix, 1.5.3)
+@@ -6,27 +6,32 @@ policy_module(zabbix, 1.5.3)
#
##
@@ -99344,7 +106361,24 @@ index 46e4cd3..79317e6 100644
type zabbix_agent_exec_t;
init_daemon_domain(zabbix_agent_t, zabbix_agent_exec_t)
-@@ -41,22 +43,40 @@ files_pid_file(zabbix_var_run_t)
+ type zabbix_agent_initrc_exec_t;
+ init_script_file(zabbix_agent_initrc_exec_t)
+
++type zabbixd_var_lib_t;
++files_type(zabbixd_var_lib_t)
++
+ type zabbix_log_t;
+ logging_log_file(zabbix_log_t)
+
+@@ -36,27 +41,53 @@ files_tmp_file(zabbix_tmp_t)
+ type zabbix_tmpfs_t;
+ files_tmpfs_file(zabbix_tmpfs_t)
+
++type zabbix_var_lib_t;
++files_type(zabbix_var_lib_t)
++
+ type zabbix_var_run_t;
+ files_pid_file(zabbix_var_run_t)
########################################
#
@@ -99390,6 +106424,11 @@ index 46e4cd3..79317e6 100644
-create_files_pattern(zabbix_t, zabbix_log_t, zabbix_log_t)
-setattr_files_pattern(zabbix_t, zabbix_log_t, zabbix_log_t)
-logging_log_filetrans(zabbix_t, zabbix_log_t, file)
++manage_dirs_pattern(zabbix_t, zabbix_var_lib_t, zabbix_var_lib_t)
++manage_files_pattern(zabbix_t, zabbix_var_lib_t, zabbix_var_lib_t)
++manage_lnk_files_pattern(zabbix_t, zabbix_var_lib_t, zabbix_var_lib_t)
++files_var_lib_filetrans(zabbix_t, zabbix_var_lib_t, dir, "zabbixsrv")
++
+manage_dirs_pattern(zabbix_t, zabbix_log_t, zabbix_log_t)
+manage_files_pattern(zabbix_t, zabbix_log_t, zabbix_log_t)
+manage_lnk_files_pattern(zabbix_t, zabbix_log_t, zabbix_log_t)
@@ -99397,7 +106436,7 @@ index 46e4cd3..79317e6 100644
manage_dirs_pattern(zabbix_t, zabbix_tmp_t, zabbix_tmp_t)
manage_files_pattern(zabbix_t, zabbix_tmp_t, zabbix_tmp_t)
-@@ -70,13 +90,9 @@ manage_files_pattern(zabbix_t, zabbix_var_run_t, zabbix_var_run_t)
+@@ -70,13 +101,9 @@ manage_files_pattern(zabbix_t, zabbix_var_run_t, zabbix_var_run_t)
files_pid_filetrans(zabbix_t, zabbix_var_run_t, { dir file })
kernel_read_system_state(zabbix_t)
@@ -99411,7 +106450,13 @@ index 46e4cd3..79317e6 100644
corenet_sendrecv_ftp_client_packets(zabbix_t)
corenet_tcp_connect_ftp_port(zabbix_t)
-@@ -90,17 +106,8 @@ corenet_sendrecv_zabbix_server_packets(zabbix_t)
+@@ -85,24 +112,18 @@ corenet_tcp_sendrecv_ftp_port(zabbix_t)
+ corenet_sendrecv_http_client_packets(zabbix_t)
+ corenet_tcp_connect_http_port(zabbix_t)
+ corenet_tcp_sendrecv_http_port(zabbix_t)
++corenet_tcp_connect_smtp_port(zabbix_t)
+
+ corenet_sendrecv_zabbix_server_packets(zabbix_t)
corenet_tcp_bind_zabbix_port(zabbix_t)
corenet_tcp_sendrecv_zabbix_port(zabbix_t)
@@ -99428,8 +106473,12 @@ index 46e4cd3..79317e6 100644
-
zabbix_agent_tcp_connect(zabbix_t)
++logging_send_syslog_msg(zabbix_t)
++
tunable_policy(`zabbix_can_network',`
-@@ -110,12 +117,11 @@ tunable_policy(`zabbix_can_network',`
+ corenet_sendrecv_all_client_packets(zabbix_t)
+ corenet_tcp_connect_all_ports(zabbix_t)
+@@ -110,12 +131,11 @@ tunable_policy(`zabbix_can_network',`
')
optional_policy(`
@@ -99444,7 +106493,7 @@ index 46e4cd3..79317e6 100644
')
optional_policy(`
-@@ -125,6 +131,7 @@ optional_policy(`
+@@ -125,6 +145,7 @@ optional_policy(`
optional_policy(`
snmp_read_snmp_var_lib_files(zabbix_t)
@@ -99452,7 +106501,7 @@ index 46e4cd3..79317e6 100644
')
########################################
-@@ -132,18 +139,7 @@ optional_policy(`
+@@ -132,18 +153,7 @@ optional_policy(`
# Agent local policy
#
@@ -99472,7 +106521,7 @@ index 46e4cd3..79317e6 100644
rw_files_pattern(zabbix_agent_t, zabbix_tmpfs_t, zabbix_tmpfs_t)
fs_tmpfs_filetrans(zabbix_agent_t, zabbix_tmpfs_t, file)
-@@ -151,16 +147,12 @@ fs_tmpfs_filetrans(zabbix_agent_t, zabbix_tmpfs_t, file)
+@@ -151,16 +161,12 @@ fs_tmpfs_filetrans(zabbix_agent_t, zabbix_tmpfs_t, file)
manage_files_pattern(zabbix_agent_t, zabbix_var_run_t, zabbix_var_run_t)
files_pid_filetrans(zabbix_agent_t, zabbix_var_run_t, file)
@@ -99491,7 +106540,13 @@ index 46e4cd3..79317e6 100644
corenet_sendrecv_zabbix_agent_server_packets(zabbix_agent_t)
corenet_tcp_bind_zabbix_agent_port(zabbix_agent_t)
-@@ -182,7 +174,6 @@ domain_search_all_domains_state(zabbix_agent_t)
+@@ -177,21 +183,28 @@ corenet_tcp_sendrecv_zabbix_port(zabbix_agent_t)
+ dev_getattr_all_blk_files(zabbix_agent_t)
+ dev_getattr_all_chr_files(zabbix_agent_t)
+
+-domain_search_all_domains_state(zabbix_agent_t)
++domain_read_all_domains_state(zabbix_agent_t)
+
files_getattr_all_dirs(zabbix_agent_t)
files_getattr_all_files(zabbix_agent_t)
files_read_all_symlinks(zabbix_agent_t)
@@ -99499,7 +106554,9 @@ index 46e4cd3..79317e6 100644
fs_getattr_all_fs(zabbix_agent_t)
-@@ -190,8 +181,11 @@ init_read_utmp(zabbix_agent_t)
++auth_use_nsswitch(zabbix_agent_t)
++
+ init_read_utmp(zabbix_agent_t)
logging_search_logs(zabbix_agent_t)
@@ -99510,9 +106567,12 @@ index 46e4cd3..79317e6 100644
zabbix_tcp_connect(zabbix_agent_t)
+
+optional_policy(`
-+ hostname_exec(zabbix_agent_t)
++ dmidecode_domtrans(zabbix_agent_t)
+')
+
++optional_policy(`
++ hostname_exec(zabbix_agent_t)
++')
diff --git a/zarafa.fc b/zarafa.fc
index faf99ed..44e94fa 100644
--- a/zarafa.fc
@@ -99756,7 +106816,7 @@ index 36e32df..3d08962 100644
+ manage_dirs_pattern($1, zarafa_var_lib_t, zarafa_var_lib_t)
')
diff --git a/zarafa.te b/zarafa.te
-index a4479b1..a40d580 100644
+index a4479b1..ffeb7f4 100644
--- a/zarafa.te
+++ b/zarafa.te
@@ -1,13 +1,18 @@
@@ -99770,7 +106830,7 @@ index a4479b1..a40d580 100644
+##
+##
-+## Allow zarafa domains to setrlimit/sys_rouserce.
++## Allow zarafa domains to setrlimit/sys_resource.
+##
+##
+gen_tunable(zarafa_setrlimit, false)
@@ -100336,7 +107396,7 @@ index 0000000..8c61505
+/var/spool/zoneminder-upload(/.*)? gen_context(system_u:object_r:zoneminder_spool_t,s0)
diff --git a/zoneminder.if b/zoneminder.if
new file mode 100644
-index 0000000..d02a6f4
+index 0000000..fb0519e
--- /dev/null
+++ b/zoneminder.if
@@ -0,0 +1,374 @@
@@ -100549,7 +107609,7 @@ index 0000000..d02a6f4
+#
+interface(`zoneminder_manage_lib_sock_files',`
+ gen_require(`
-+ type sock_var_lib_t;
++ type zoneminder_var_lib_t;
+ ')
+ files_search_var_lib($1)
+ manage_sock_files_pattern($1, zoneminder_var_lib_t, zoneminder_var_lib_t)
diff --git a/SOURCES/setrans-minimum.conf b/SOURCES/setrans-minimum.conf
index 09a6ce3..0ac9c90 100644
--- a/SOURCES/setrans-minimum.conf
+++ b/SOURCES/setrans-minimum.conf
@@ -1,8 +1,6 @@
#
# Multi-Category Security translation table for SELinux
#
-# Uncomment the following to disable translation libary
-# disable=1
#
# Objects can be categorized with 0-1023 categories defined by the admin.
# Objects can be in more than one category at a time.
diff --git a/SOURCES/setrans-mls.conf b/SOURCES/setrans-mls.conf
index eb181d2..fa27ae2 100644
--- a/SOURCES/setrans-mls.conf
+++ b/SOURCES/setrans-mls.conf
@@ -1,8 +1,6 @@
#
# Multi-Level Security translation table for SELinux
#
-# Uncomment the following to disable translation libary
-# disable=1
#
# Objects can be labeled with one of 16 levels and be categorized with 0-1023
# categories defined by the admin.
diff --git a/SOURCES/setrans-targeted.conf b/SOURCES/setrans-targeted.conf
index 09a6ce3..0ac9c90 100644
--- a/SOURCES/setrans-targeted.conf
+++ b/SOURCES/setrans-targeted.conf
@@ -1,8 +1,6 @@
#
# Multi-Category Security translation table for SELinux
#
-# Uncomment the following to disable translation libary
-# disable=1
#
# Objects can be categorized with 0-1023 categories defined by the admin.
# Objects can be in more than one category at a time.
diff --git a/SPECS/selinux-policy.spec b/SPECS/selinux-policy.spec
index 8dfbad8..e363177 100644
--- a/SPECS/selinux-policy.spec
+++ b/SPECS/selinux-policy.spec
@@ -19,7 +19,7 @@
Summary: SELinux policy configuration
Name: selinux-policy
Version: 3.12.1
-Release: 103%{?dist}
+Release: 153%{?dist}
License: GPLv2+
Group: System Environment/Base
Source: serefpolicy-%{version}.tgz
@@ -117,6 +117,7 @@ SELinux policy development and man page package
%{_usr}/share/selinux/devel/include/*
%dir %{_usr}/share/selinux/devel/html
%{_usr}/share/selinux/devel/html/*html
+%{_usr}/share/selinux/devel/html/*css
%{_usr}/share/selinux/devel/Makefile
%{_usr}/share/selinux/devel/example.*
%{_usr}/share/selinux/devel/policy.*
@@ -251,7 +252,7 @@ ln -sf /etc/selinux/%1/policy/policy.%{POLICYVER} %{buildroot}%{_sysconfdir}/se
%config(noreplace) %{_sysconfdir}/selinux/%1/contexts/users/guest_u \
%config(noreplace) %{_sysconfdir}/selinux/%1/contexts/users/xguest_u \
%config(noreplace) %{_sysconfdir}/selinux/%1/contexts/users/user_u \
-%config(noreplace) %{_sysconfdir}/selinux/%1/contexts/users/staff_u
+%config(noreplace) %{_sysconfdir}/selinux/%1/contexts/users/staff_u
%define relabel() \
. %{_sysconfdir}/selinux/config; \
@@ -288,7 +289,7 @@ fi;
%define postInstall() \
. %{_sysconfdir}/selinux/config; \
-(cd /etc/selinux/%2/modules/active/modules; rm -f l2tpd.pp shutdown.pp amavis.pp clamav.pp gnomeclock.pp matahari.pp xfs.pp kudzu.pp kerneloops.pp execmem.pp openoffice.pp ada.pp tzdata.pp hal.pp hotplug.pp howl.pp java.pp mono.pp moilscanner.pp gamin.pp audio_entropy.pp audioentropy.pp iscsid.pp polkit_auth.pp polkit.pp rtkit_daemon.pp ModemManager.pp telepathysofiasip.pp ethereal.pp passanger.pp qpidd.pp pyzor.pp razor.pp pki-selinux.pp phpfpm.pp consoletype.pp ctdbd.pp fcoemon.pp isnsd.pp rgmanager.pp corosync.pp aisexec.pp pacemaker.pp ) \
+(cd /etc/selinux/%2/modules/active/modules; rm -f nsplugin.pp l2tpd.pp shutdown.pp amavis.pp clamav.pp gnomeclock.pp matahari.pp xfs.pp kudzu.pp kerneloops.pp execmem.pp openoffice.pp ada.pp tzdata.pp hal.pp hotplug.pp howl.pp java.pp mono.pp moilscanner.pp gamin.pp audio_entropy.pp audioentropy.pp iscsid.pp polkit_auth.pp polkit.pp rtkit_daemon.pp ModemManager.pp telepathysofiasip.pp ethereal.pp passanger.pp qpidd.pp pyzor.pp razor.pp pki-selinux.pp phpfpm.pp consoletype.pp ctdbd.pp fcoemon.pp isnsd.pp rgmanager.pp corosync.pp aisexec.pp pacemaker.pp smstools.pp qemu.pp ) \
if [ -e /etc/selinux/%2/.rebuild ]; then \
rm /etc/selinux/%2/.rebuild; \
/usr/sbin/semodule -B -n -s %2; \
@@ -388,6 +389,8 @@ chmod +x %{buildroot}%{_usr}/share/selinux/devel/policyhelp
mkdir %{buildroot}%{_usr}/share/selinux/devel/html
htmldir=`compgen -d %{buildroot}%{_usr}/share/man/man8/`
mv ${htmldir}/* %{buildroot}%{_usr}/share/selinux/devel/html
+mv %{buildroot}%{_usr}/share/man/man8/index.html %{buildroot}%{_usr}/share/selinux/devel/html
+mv %{buildroot}%{_usr}/share/man/man8/style.css %{buildroot}%{_usr}/share/selinux/devel/html
rm -rf ${htmldir}
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
@@ -453,7 +456,7 @@ Obsoletes: mod_fcgid-selinux <= %{version}-%{release}
Obsoletes: cachefilesd-selinux <= 0.10-1
Conflicts: seedit
Conflicts: 389-ds-base < 1.2.7, 389-admin < 1.1.12
-Conflicts: pki-selinux < 10-0.0-0.45.b1
+Conflicts: pki-selinux < 10.0.0-0.45.b1
Conflicts: freeipa-server-selinux < 3.2.2-1
%description targeted
@@ -481,6 +484,7 @@ exit 0
%files targeted
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/selinux/targeted/contexts/users/unconfined_u
+%config(noreplace) %{_sysconfdir}/selinux/targeted/contexts/users/sysadm_u
%fileList targeted
%{_usr}/share/selinux/targeted/modules-base.lst
%{_usr}/share/selinux/targeted/modules-contrib.lst
@@ -516,7 +520,7 @@ done
for p in $basepackages apache.pp dbus.pp inetd.pp kerberos.pp mta.pp nis.pp; do
rm -f /etc/selinux/minimum/modules/active/modules/$p.disabled
done
-/usr/sbin/semanage -S minimum -i - << __eof
+/usr/sbin/semanage import -S minimum -f - << __eof
login -m -s unconfined_u -r s0-s0:c0.c1023 __default__
login -m -s unconfined_u -r s0-s0:c0.c1023 root
__eof
@@ -538,6 +542,7 @@ exit 0
%files minimum
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/selinux/minimum/contexts/users/unconfined_u
+%config(noreplace) %{_sysconfdir}/selinux/minimum/contexts/users/sysadm_u
%fileList minimum
%{_usr}/share/selinux/minimum/modules-base.lst
%{_usr}/share/selinux/minimum/modules-contrib.lst
@@ -574,9 +579,792 @@ SELinux Reference policy mls base module.
%endif
%changelog
+* Mon Apr 7 2014 Miroslav Grepl 3.12.1-153
+- Change hsperfdata_root to have as user_tmp_t
+Resolves:#1076523
+
+* Fri Apr 4 2014 Miroslav Grepl 3.12.1-152
+- Fix Multiple same specifications for /var/named/chroot/dev/zero
+- Add labels for /var/named/chroot_sdb/dev devices
+- Add support for strongimcv
+- Use kerberos_keytab_domains in auth_use_nsswitch
+- Update auth_use_nsswitch to make all these types as kerberos_keytab_domain to
+- Allow net_raw cap for neutron_t and send sigkill to dnsmasq
+- Fix ntp_filetrans_named_content for sntp-kod file
+- Add httpd_dbus_sssd boolean
+- Dontaudit exec insmod in boinc policy
+- Rename kerberos_keytab_domain to kerberos_keytab_domains
+- Add kerberos_keytab_domain()
+- Fix kerberos_keytab_template()
+- Make all domains which use kerberos as kerberos_keytab_domain
+Resolves:#1083670
+- Allow kill capability to winbind_t
+
+* Wed Apr 2 2014 Miroslav Grepl 3.12.1-151
+- varnishd wants chown capability
+- update ntp_filetrans_named_content() interface
+- Add additional fixes for neutron_t. #1083335
+- Dontaudit getattr on proc_kcore_t
+- Allow pki_tomcat_t to read ipa lib files
+- Allow named_filetrans_domain to create /var/cache/ibus with correct labelign
+- Allow init_t run /sbin/augenrules
+- Add dev_unmount_sysfs_fs and sysnet_manage_ifconfig_run interfaces
+- Allow unpriv SELinux user to use sandbox
+- Add default label for /tmp/hsperfdata_root
+
+* Tue Apr 1 2014 Miroslav Grepl 3.12.1-149
+- Add file subs also for /var/home
+
+* Mon Mar 31 2014 Miroslav Grepl 3.12.1-149
+- Allow xauth_t to read user_home_dir_t lnk_file
+- Add labeling for lightdm-data
+- Allow certmonger to manage ipa lib files
+- Add support for /var/lib/ipa
+- Allow pegasus to getattr virt_content
+- Added some new rules to pcp policy
+- Allow chrome_sandbox to execute config_home_t
+- Add support for ABRT FAF
+
+* Fri Mar 28 2014 Miroslav Grepl 3.12.1-148
+- Allow kdm to send signull to remote_login_t process
+- Add gear policy
+- Turn on gear_port_t
+- Allow cgit to read gitosis lib files by default
+- Allow vdagent to read xdm state
+- Allow NM and fcoeadm to talk together over unix_dgram_socket
+
+* Thu Mar 27 2014 Miroslav Grepl 3.12.1-147
+- Back port fixes for pegasus_openlmi_admin_t from rawhide
+Resolves:#1080973
+- Add labels for ostree
+- Add SELinux awareness for NM
+- Label /usr/sbin/pwhistory_helper as updpwd_exec_t
+
+* Wed Mar 26 2014 Miroslav Grepl 3.12.1-146
+- add gnome_append_home_config()
+- Allow thumb to append GNOME config home files
+- Allow rasdaemon to rw /dev/cpu//msr
+- fix /var/log/pki file spec
+- make bacula_t as auth_nsswitch domain
+- Identify pki_tomcat_cert_t as a cert_type
+- Define speech-dispater_exec_t as an application executable
+- Add a new file context for /var/named/chroot/run directory
+- update storage_filetrans_all_named_dev for sg* devices
+- Allow auditctl_t to getattr on all removeable devices
+- Allow nsswitch_domains to stream connect to nmbd
+- Allow unprivusers to connect to memcached
+- label /var/lib/dirsrv/scripts-INSTANCE as bin_t
+
+* Mon Mar 24 2014 Miroslav Grepl 3.12.1-145
+- Allow also unpriv user to run vmtools
+- Allow secadm to read /dev/urandom and meminfo
+Resolves:#1079250
+- Add booleans to allow docker processes to use nfs and samba
+- Add mdadm_tmpfs support
+- Dontaudit net_amdin for /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.1.el7.x86_64/jre-abrt/bin/java running as pki_tomcat_t
+- Allow vmware-user-sui to use user ttys
+- Allow talk 2 users logged via console too
+- Allow ftp services to manage xferlog_t
+- Make all pcp domanis as unconfined for RHEL7.0 beucause of new policies
+- allow anaconda to dbus chat with systemd-localed
+
+* Fri Mar 21 2014 Miroslav Grepl 3.12.1-144
+- allow anaconda to dbus chat with systemd-localed
+- Add fixes for haproxy based on bperkins@redhat.com
+- Allow cmirrord to make dmsetup working
+- Allow NM to execute arping
+- Allow users to send messages through talk
+- Add userdom_tmp_role for secadm_t
+
+* Thu Mar 20 2014 Lukas Vrabec 3.12.1-143
+- Add additional fixes for rtas_errd
+- Fix transitions for tmp/tmpfs in rtas.te
+- Allow rtas_errd to readl all sysctls
+
+
+* Wed Mar 19 2014 Miroslav Grepl 3.12.1-142
+- Add support for /var/spool/rhsm/debug
+- Make virt_sandbox_use_audit as True by default
+- Allow svirt_sandbox_domains to ptrace themselves
+
+* Wed Mar 19 2014 Miroslav Grepl 3.12.1-141
+- Allow docker containers to manage /var/lib/docker content
+
+* Mon Mar 17 2014 Miroslav Grepl 3.12.1-140
+- Allow docker to read tmpfs_t symlinks
+- Allow sandbox svirt_lxc_net_t to talk to syslog and to sssd over stream sockets
+
+* Mon Mar 17 2014 Miroslav Grepl 3.12.1-139
+- Allow collectd to talk to libvirt
+- Allow chrome_sandbox to use leaked unix_stream_sockets
+- Dontaudit leaks of sockets into chrome_sandbox_t
+- If you create a cups directory in /var/cache then it should be labeled cups_rw_etc_t
+- Run vmtools as unconfined domains
+- Allow snort to manage its log files
+- Allow systemd_cronjob_t to be entered via bin_t
+- Allow procman to list doveconf_etc_t
+- allow keyring daemon to create content in tmpfs directories
+- Add proper labelling for icedtea-web
+- vpnc is creating content in networkmanager var run directory
+- Label sddm as xdm_exec_t to make KDE working again
+- Allow postgresql to read network state
+- Allow java running as pki_tomcat to read network sysctls
+- Fix cgroup.te to allow cgred to read cgconfig_etc_t
+- Allow beam.smp to use ephemeral ports
+- Allow winbind to use the nis to authenticate passwords
+
+* Fri Mar 14 2014 Lukas Vrabec 3.12.1-138
+- Make rtas_errd_t as unconfined domain for F20.It needs additional fixes. It runs rpm at least.
+- Allow net_admin cap for fence_virtd running as fenced_t
+- Make abrt-java-connector working
+- Make cimtest script 03_defineVS.py of ComputerSystem group working
+- Fix git_system_enable_homedirs boolean
+- Allow munin mail plugins to read network systcl
+
+* Thu Mar 13 2014 Miroslav Grepl 3.12.1-137
+- Allow vmtools_helper_t to execute bin_t
+- Add support for /usr/share/joomla
+- /var/lib/containers should be labeled as openshift content for now
+- Allow docker domains to talk to the login programs, to allow a process to login into the container
+- Allow install_t do dbus chat with NM
+- Fix interface names in anaconda.if
+- Add install_t for anaconda. A new type is a part of anaconda policy
+- sshd to read network sysctls
+
+* Wed Mar 12 2014 Miroslav Grepl 3.12.1-136
+- Allow zabbix to send system log msgs
+- Allow init_t to stream connect to ipsec
+Resolves:#1060775
+
+* Tue Mar 11 2014 Miroslav Grepl 3.12.1-135
+- Add docker_connect_any boolean
+
+* Tue Mar 11 2014 Miroslav Grepl 3.12.1-134
+- Allow unpriv SELinux users to dbus chat with firewalld
+- Add lvm_write_metadata()
+- Label /etc/yum.reposd dir as system_conf_t. Should be safe because system_conf_t is base_ro_file_type
+- Allow pegasus_openlmi_storage_t to write lvm metadata
+- Add hide_broken_symptoms for kdumpgui because of systemd bug
+- Make kdumpgui_t as unconfined domain
+Resolves:#1044299
+- Allow docker to connect to tcp/5000
+
+* Mon Mar 10 2014 Miroslav Grepl 3.12.1-133
+- Allow numad to write scan_sleep_millisecs
+- Turn on entropyd_use_audio boolean by default
+- Allow cgred to read /etc/cgconfig.conf because it contains templates used together with rules from /etc/cgrules.conf.
+- Allow lscpu running as rhsmcertd_t to read /proc/sysinfo
+- Fix label on irclogs in the homedir
+- Allow kerberos_keytab_domain domains to manage keys until we get sssd fix
+- Allow postgresql to use ldap
+- Add missing syslog-conn port
+- Add support for /dev/vmcp and /dev/sclp
+Resolves:#1069310
+
+* Fri Mar 7 2014 Miroslav Grepl 3.12.1-132
+- Modify xdm_write_home to allow create files/links in /root with xdm_home_
+- Allow virt domains to read network state
+Resolves:#1072019
+
+* Thu Mar 6 2014 Miroslav Grepl 3.12.1-131
+- Added pcp rules
+- dontaudit openshift_cron_t searching random directories, should be back ported to RHEL6
+- clean up ctdb.te
+- Allow ctdbd to connect own ports
+- Fix samba_export_all_rw booleanto cover also non security dirs
+- Allow swift to exec rpm in swift_t and allow to create tmp files/dirs
+- Allow neutron to create /run/netns with correct labeling
+- Allow certmonger to list home dirs
+
+* Wed Mar 5 2014 Miroslav Grepl 3.12.1-130
+- Change userdom_use_user_inherited_ttys to userdom_use_user_ttys for systemd-tty-ask
+- Add sysnet_filetrans_named_content_ifconfig() interface
+- Allow ctdbd to connect own ports
+- Fix samba_export_all_rw booleanto cover also non security dirs
+- Allow swift to exec rpm in swift_t and allow to create tmp files/dirs
+- Allow neutron to create /run/netns with correct labeling
+- Allow kerberos keytab domains to manage sssd/userdomain keys"
+- Allow to run ip cmd in neutron_t domain
+
+* Mon Mar 3 2014 Miroslav Grepl 3.12.1-129
+- Allow block_suspend cap2 for systemd-logind and rw dri device
+- Add labeling for /usr/libexec/nm-libreswan-service
+- Allow locallogin to rw xdm key to make Virtual Terminal login providing smartcard pin working
+- Add xserver_rw_xdm_keys()
+- Allow rpm_script_t to dbus chat also with systemd-located
+- Fix ipa_stream_connect_otpd()
+- update lpd_manage_spool() interface
+- Allow krb5kdc to stream connect to ipa-otpd
+- Add ipa_stream_connect_otpd() interface
+- Allow vpnc to unlink NM pids
+- Add networkmanager_delete_pid_files()
+- Allow munin plugins to access unconfined plugins
+- update abrt_filetrans_named_content to cover /var/spool/debug
+- Label /var/spool/debug as abrt_var_cache_t
+- Allow rhsmcertd to connect to squid port
+- Make docker_transition_unconfined as optional boolean
+- Allow certmonger to list home dirs
+
+* Wed Feb 26 2014 Miroslav Grepl 3.12.1-128
+- Make snapperd as unconfined domain and add additional fixes for it
+- Remove nsplugin.pp module on upgrade
+
+* Tue Feb 25 2014 Miroslav Grepl 3.12.1-127
+- Add snapperd_home_t for HOME_DIR/.snapshots directory
+- Make sosreport as unconfined domain
+- Allow sosreport to execute grub2-probe
+- Allow NM to manage hostname config file
+- Allow systemd_timedated_t to dbus chat with rpm_script_t
+- Allow lsmd plugins to connect to http/ssh/http_cache ports by default
+- Add lsmd_plugin_connect_any boolean
+- Allow mozilla_plugin to attempt to set capabilities
+- Allow lsdm_plugins to use tcp_socket
+- Dontaudit mozilla plugin from getattr on /proc or /sys
+- Dontaudit use of the keyring by the services in a sandbox
+- Dontaudit attempts to sys_ptrace caused by running ps for mysqld_safe_t
+- Allow rabbitmq_beam to connect to jabber_interserver_port
+- Allow logwatch_mail_t to transition to qmail_inject and queueu
+- Added new rules to pcp policy
+- Allow vmtools_helper_t to change role to system_r
+- Allow NM to dbus chat with vmtools
+- Fix couchdb_manage_files() to allow manage couchdb conf files
+- Add support for /var/run/redis.sock
+- dontaudit gpg trying to use audit
+- Allow consolekit to create log directories and files
+- Fix vmtools policy to allow user roles to access vmtools_helper_t
+- Allow block_suspend cap2 for ipa-otpd
+- Allow pkcsslotd to read users state
+- Add ioctl to init_dontaudit_rw_stream_socket
+- Add systemd_hostnamed_manage_config() interface
+- Remove transition for temp dirs created by init_t
+- gdm-simple-slave uses use setsockopt
+- sddm-greater is a xdm type program
+
+* Tue Feb 18 2014 Miroslav Grepl 3.12.1-126
+- Add lvm_read_metadata()
+- Allow auditadm to search /var/log/audit dir
+- Add lvm_read_metadata() interface
+- Allow confined users to run vmtools helpers
+- Fix userdom_common_user_template()
+- Generic systemd unit scripts do write check on /
+- Allow init_t to create init_tmp_t in /tmp.This is for temporary content created by generic unit files
+- Add additional fixes needed for init_t and setup script running in generic unit files
+- Allow general users to create packet_sockets
+- added connlcli port
+- Add init_manage_transient_unit() interface
+- Allow init_t (generic unit files) to manage rpc state date as we had it for initrc_t
+- Fix userdomain.te to require passwd class
+- devicekit_power sends out a signal to all processes on the message bus when power is going down
+- Dontaudit rendom domains listing /proc and hittping system_map_t
+- Dontauit leaks of var_t into ifconfig_t
+- Allow domains that transition to ssh_t to manipulate its keyring
+- Define oracleasm_t as a device node
+- Change to handle /root as a symbolic link for os-tree
+- Allow sysadm_t to create packet_socket, also move some rules to attributes
+- Add label for openvswitch port
+- Remove general transition for files/dirs created in /etc/mail which got etc_aliases_t label.
+- Allow postfix_local to read .forward in pcp lib files
+- Allow pegasus_openlmi_storage_t to read lvm metadata
+- Add additional fixes for pegasus_openlmi_storage_t
+- Allow bumblebee to manage debugfs
+- Make bumblebee as unconfined domain
+- Allow snmp to read etc_aliases_t
+- Allow lscpu running in pegasus_openlmi_storage_t to read /dev/mem
+- Allow pegasus_openlmi_storage_t to read /proc/1/environ
+- Dontaudit read gconf files for cupsd_config_t
+- make vmtools as unconfined domain
+- Add vmtools_helper_t for helper scripts. Allow vmtools shutdonw a host and run ifconfig.
+- Allow collectd_t to use a mysql database
+- Allow ipa-otpd to perform DNS name resolution
+- Added new policy for keepalived
+- Allow openlmi-service provider to manage transitient units and allow stream connect to sssd
+- Add additional fixes new pscs-lite+polkit support
+- Add labeling for /run/krb5kdc
+- Change w3c_validator_tmp_t to httpd_w3c_validator_tmp_t in F20
+- Allow pcscd to read users proc info
+- Dontaudit smbd_t sending out random signuls
+- Add boolean to allow openshift domains to use nfs
+- Allow w3c_validator to create content in /tmp
+- zabbix_agent uses nsswitch
+- Allow procmail and dovecot to work together to deliver mail
+- Allow spamd to execute files in homedir if boolean turned on
+- Allow openvswitch to listen on port 6634
+- Add net_admin capability in collectd policy
+- Fixed snapperd policy
+- Fixed bugsfor pcp policy
+- Allow dbus_system_domains to be started by init
+- Fixed some interfaces
+- Add kerberos_keytab_domain attribute
+- Fix snapperd_conf_t def
+
+* Tue Feb 11 2014 Miroslav Grepl 3.12.1-125
+- Addopt corenet rules for unbound-anchor to rpm_script_t
+- Allow runuser to send send audit messages.
+- Allow postfix-local to search .forward in munin lib dirs
+- Allow udisks to connect to D-Bus
+- Allow spamd to connect to spamd port
+- Fix syntax error in snapper.te
+- Dontaudit osad to search gconf home files
+- Allow rhsmcertd to manage /etc/sysconf/rhn director
+- Fix pcp labeling to accept /usr/bin for all daemon binaries
+- Fix mcelog_read_log() interface
+- Allow iscsid to manage iscsi lib files
+- Allow snapper domtrans to lvm_t. Add support for /etc/snapper and allow snapperd to manage it.
+- Make tuned_t as unconfined domain for RHEL7.0
+- Allow ABRT to read puppet certs
+- Add sys_time capability for virt-ga
+- Allow gemu-ga to domtrans to hwclock_t
+- Allow additional access for virt_qemu_ga_t processes to read system clock and send audit messages
+- Fix some AVCs in pcp policy
+- Add to bacula capability setgid and setuid and allow to bind to bacula ports
+- Changed label from rhnsd_rw_conf_t to rhnsd_conf_t
+- Add access rhnsd and osad to /etc/sysconfig/rhn
+- drbdadm executes drbdmeta
+- Fixes needed for docker
+- Allow epmd to manage /var/log/rabbitmq/startup_err file
+- Allow beam.smp connect to amqp port
+- Modify xdm_write_home to allow create also links as xdm_home_t if the boolean is on true
+- Allow init_t to manage pluto.ctl because of init_t instead of initrc_t
+- Allow systemd_tmpfiles_t to manage all non security files on the system
+- Added labels for bacula ports
+- Fix label on /dev/vfio/vfio
+- Add kernel_mounton_messages() interface
+- init wants to manage lock files for iscsi
+
+* Mon Feb 3 2014 Miroslav Grepl 3.12.1-124
+- Added osad policy
+- Allow postfix to deliver to procmail
+- Allow bumblebee to seng kill signal to xserver
+- Allow vmtools to execute /usr/bin/lsb_release
+- Allow docker to write system net ctrls
+- Add support for rhnsd unit file
+- Add dbus_chat_session_bus() interface
+- Add dbus_stream_connect_session_bus() interface
+- Fix pcp.te
+- Fix logrotate_use_nfs boolean
+- Add lot of pcp fixes found in RHEL7
+- fix labeling for pmie for pcp pkg
+- Change thumb_t to be allowed to chat/connect with session bus type
+- Allow call renice in mlocate
+- Add logrotate_use_nfs boolean
+- Allow setroubleshootd to read rpc sysctl
+
+* Fri Jan 31 2014 Miroslav Grepl 3.12.1-123
+- Turn on bacula, rhnsd policy
+- Add support for rhnsd unit file
+- Add dbus_chat_session_bus() interface
+- Add dbus_stream_connect_session_bus() interface
+- Fix logrotate_use_nfs boolean
+- Add lot of pcp fixes found in RHEL7
+- fix labeling for pmie for pcp pkg
+- Change thumb_t to be allowed to chat/connect with session bus type
+- Allow call renice in mlocate
+- Add logrotate_use_nfs boolean
+- Allow setroubleshootd to read rpc sysctl
+- Fixes for *_admin interfaces
+- Add pegasus_openlmi_storage_var_run_t type def
+- Add support for /var/run/openlmi-storage
+- Allow tuned to create syslog.conf with correct labeling
+- Add httpd_dontaudit_search_dirs boolean
+- Add support for winbind.service
+- ALlow also fail2ban-client to read apache logs
+- Allow vmtools to getattr on all fs
+- Add support for dey_sapi port
+- Add logging_filetrans_named_conf()
+- Allow passwd_t to use ipc_lock, so that it can change the password in gnome-keyring
+
+* Tue Jan 28 2014 Miroslav Grepl 3.12.1-122
+- Update snapper policy
+- Allow domains to append rkhunter lib files
+- Allow snapperd to getattr on all fs
+- Allow xdm to create /var/gdm with correct labeling
+- Add label for snapper.log
+- Allow fail2ban-client to read apache log files
+- Allow thumb_t to execute dbus-daemon in thumb_t
+
+* Mon Jan 27 2014 Miroslav Grepl 3.12.1-121
+- Allow gdm to create /var/gdm with correct labeling
+- Allow domains to append rkhunterl lib files. #1057982
+- Allow systemd_tmpfiles_t net_admin to communicate with journald
+- Add interface to getattr on an isid_type for any type of file
+- Update libs_filetrans_named_content() to have support for /usr/lib/debug directory
+- Allow initrc_t domtrans to authconfig if unconfined is enabled
+- Allow docker and mount on devpts chr_file
+- Allow docker to transition to unconfined_t if boolean set
+- init calling needs to be optional in domain.te
+- Allow uncofined domain types to handle transient unit files
+- Fix labeling for vfio devices
+- Allow net_admin capability and send system log msgs
+- Allow lldpad send dgram to NM
+- Add networkmanager_dgram_send()
+- rkhunter_var_lib_t is correct type
+- Back port pcp policy from rawhide
+- Allow openlmi-storage to read removable devices
+- Allow system cron jobs to manage rkhunter lib files
+- Add rkhunter_manage_lib_files()
+- Fix ftpd_use_fusefs boolean to allow manage also symlinks
+- Allow smbcontrob block_suspend cap2
+- Allow slpd to read network and system state info
+- Allow NM domtrans to iscsid_t if iscsiadm is executed
+- Allow slapd to send a signal itself
+- Allow sslget running as pki_ra_t to contact port 8443, the secure port of the CA.
+- Fix plymouthd_create_log() interface
+- Add rkhunter policy with files type definition for /var/lib/rkhunter until it is fixed in rkhunter package
+- Add mozilla_plugin_exec_t for /usr/lib/firefox/plugin-container
+- Allow postfix and cyrus-imapd to work out of box
+- Allow fcoemon to talk with unpriv user domain using unix_stream_socket
+- Dontaudit domains that are calling into journald to net_admin
+- Add rules to allow vmtools to do what it does
+- snapperd is D-Bus service
+- Allow OpenLMI PowerManagement to call 'systemctl --force reboot'
+- Add haproxy_connect_any boolean
+- Allow haproxy also to use http cache port by default
+Resolves:#1058248
+
+* Tue Jan 21 2014 Miroslav Grepl 3.12.1-120
+- Allow apache to write to the owncloud data directory in /var/www/html...
+- Allow consolekit to create log dir
+- Add support for icinga CGI scripts
+- Add support for icinga
+- Allow kdumpctl_t to create kdump lock file
+Resolves:#1055634
+- Allow kdump to create lnk lock file
+- Allow nscd_t block_suspen capability
+- Allow unconfined domain types to manage own transient unit file
+- Allow systemd domains to handle transient init unit files
+- Add interfaces to handle transient
+
+* Mon Jan 20 2014 Miroslav Grepl 3.12.1-119
+- Add cron unconfined role support for uncofined SELinux user
+- Call corenet_udp_bind_all_ports() in milter.te
+- Allow fence_virtd to connect to zented port
+- Fix header for mirrormanager_admin()
+- Allow dkim-milter to bind udp ports
+- Allow milter domains to send signull itself
+- Allow block_suspend for yum running as mock_t
+- Allow beam.smp to manage couchdb files
+- Add couchdb_manage_files()
+- Add labeling for /var/log/php_errors.log
+- Allow bumblebee to stream connect to xserver
+- Allow bumblebee to send a signal to xserver
+- gnome-thumbnail to stream connect to bumblebee
+- Allow xkbcomp running as bumblebee_t to execute bin_t
+- Allow logrotate to read squid.conf
+- Additional rules to get docker and lxc to play well with SELinux
+- Allow bumbleed to connect to xserver port
+- Allow pegasus_openlmi_storage_t to read hwdata
+
+* Thu Jan 16 2014 Miroslav Grepl 3.12.1-118
+- Allow init_t to work on transitient and snapshot unit files
+- Add logging_manage_syslog_config()
+- Update sysnet_dns_name_resolve() to allow connect to dnssec por
+- Allow pegasus_openlmi_storage_t to read hwdata
+Resolves:#1031721
+- Fix rhcs_rw_cluster_tmpfs()
+- Allow fenced_t to bind on zented udp port
+- Added policy for vmtools
+- Fix mirrormanager_read_lib_files()
+- Allow mirromanager scripts running as httpd_t to manage mirrormanager pid files
+- Allow ctdb to create sock files in /var/run/ctdb
+- Add sblim_filetrans_named_content() interface
+- Allow rpm scritplets to create /run/gather with correct labeling
+- Allow gnome keyring domains to create gnome config dirs
+- Dontaudit read/write to init stream socket for lsmd_plugin_t
+- Allow automount to read nfs link files
+- Allow lsm plugins to read/write lsmd stream socket
+- Allow certmonger to connect ldap port to make IPA CA certificate renewal working.
+- Add also labeling for /var/run/ctdb
+- Add missing labeling for /var/lib/ctdb
+- ALlow tuned to manage syslog.conf. Should be fixed in tuned. #1030446
+- Dontaudit hypervkvp to search homedirs
+- Dontaudit hypervkvp to search admin homedirs
+- Allow hypervkvp to execute bin_t and ifconfig in the caller domain
+- Dontaudit xguest_t to read ABRT conf files
+- Add abrt_dontaudit_read_config()
+- Allow namespace-init to getattr on fs
+- Add thumb_role() also for xguest
+- Add filename transitions to create .spamassassin with correct labeling
+- Allow apache domain to read mirrormanager pid files
+- Allow domains to read/write shm and sem owned by mozilla_plugin_t
+- Allow alsactl to send a generic signal to kernel_t
+
+* Tue Jan 14 2014 Miroslav Grepl 3.12.1-117
+- Add back rpm_run() for unconfined user
+
+* Tue Jan 14 2014 Miroslav Grepl 3.12.1-116
+- Add missing files_create_var_lib_dirs()
+- Fix typo in ipsec.te
+- Allow passwd to create directory in /var/lib
+- Add filename trans also for event21
+- Allow iptables command to read /dev/rand
+- Add sigkill capabilityfor ipsec_t
+- Add filename transitions for bcache devices
+- Add additional rules to create /var/log/cron by syslogd_t with correct labeling
+- Add give everyone full access to all key rings
+- Add default lvm_var_run_t label for /var/run/multipathd
+- Fix log labeling to have correct default label for them after logrotate
+- Labeled ~/.nv/GLCache as being gstreamer output
+- Allow nagios_system_plugin to read mrtg lib files
+- Add mrtg_read_lib_files()
+- Call rhcs_rw_cluster_tmpfs for dlm_controld
+- Make authconfing as named_filetrans domain
+- Allow virsh to connect to user process using stream socket
+- Allow rtas_errd to read rand/urand devices and add chown capability
+- Fix labeling from /var/run/net-snmpd to correct /var/run/net-snmp
+Resolves:#1051497
+- Add also chown cap for abrt_upload_watch_t. It already has dac_override
+- Allow sosreport to manage rhsmcertd pid files
+- Add rhsmcertd_manage_pid_files()
+- Allow also setgid cap for rpc.gssd
+- Dontaudit access check for abrt on cert_t
+- Allow pegasus_openlmi_system providers to dbus chat with systemd-logind
+
+* Fri Jan 10 2014 Miroslav Grepl 3.12.1-115
+- Fix semanage import handling in spec file
+
+* Fri Jan 10 2014 Miroslav Grepl 3.12.1-114
+- Add default lvm_var_run_t label for /var/run/multipathd
+Resolves:#1051430
+- Fix log labeling to have correct default label for them after logrotate
+- Add files_write_root_dirs
+- Add new openflow port label for 6653/tcp and 6633/tcp
+- Add xserver_manage_xkb_libs()
+- Label tcp/8891 as milter por
+- Allow gnome_manage_generic_cache_files also create cache_home_t files
+- Fix aide.log labeling
+- Fix log labeling to have correct default label for them after logrotate
+- Allow mysqld-safe write access on /root to make mysqld working
+- Allow sosreport domtrans to prelikn
+- Allow OpenvSwitch to connec to openflow ports
+- Allow NM send dgram to lldpad
+- Allow hyperv domains to execute shell
+- Allow lsmd plugins stream connect to lsmd/init
+- Allow sblim domains to create /run/gather with correct labeling
+- Allow httpd to read ldap certs
+- Allow cupsd to send dbus msgs to process with different MLS level
+- Allow bumblebee to stream connect to apmd
+- Allow bumblebee to run xkbcomp
+- Additional allow rules to get libvirt-lxc containers working with docker
+- Additional allow rules to get libvirt-lxc containers working with docker
+- Allow docker to getattr on itself
+- Additional rules needed for sandbox apps
+- Allow mozilla_plugin to set attributes on usb device if use_spice boolean enabled
+- httpd should be able to send signal/signull to httpd_suexec_t
+- Add more fixes for neturon. Domtrans to dnsmasq, iptables. Make neutron as filenamtrans domain.
+
+* Wed Jan 8 2014 Miroslav Grepl 3.12.1-113
+- Add neutron fixes
+
+* Mon Jan 6 2014 Miroslav Grepl 3.12.1-112
+- Allow sshd to write to all process levels in order to change passwd when running at a level
+- Allow updpwd_t to downgrade /etc/passwd file to s0, if it is not running with this range
+- Allow apcuspd_t to status and start the power unit file
+- Allow udev to manage kdump unit file
+- Added new interface modutils_dontaudit_exec_insmod
+- Allow cobbler to search dhcp_etc_t directory
+- systemd_systemctl needs sys_admin capability
+- Allow sytemd_tmpfiles_t to delete all directories
+- passwd to create gnome-keyring passwd socket
+- Add missing zabbix_var_lib_t type
+- Fix filename trans for zabbixsrv in zabbix.te
+- Allow fprintd_t to send syslog messages
+- Add zabbix_var_lib_t for /var/lib/zabbixsrv, also allow zabix to connect to smtp port
+- Allow mozilla plugin to chat with policykit, needed for spice
+- Allow gssprozy to change user and gid, as well as read user keyrings
+- Label upgrades directory under /var/www as httpd_sys_rw_content_t, add other filetrans rules to label content correctly
+- Allow polipo to connect to http_cache_ports
+- Allow cron jobs to manage apache var lib content
+- Allow yppassword to manage the passwd_file_t
+- Allow showall_t to send itself signals
+- Allow cobbler to restart dhcpc, dnsmasq and bind services
+- Allow certmonger to manage home cert files
+- Add userdom filename trans for user mail domains
+- Allow apcuspd_t to status and start the power unit file
+- Allow cgroupdrulesengd to create content in cgoups directories
+- Allow smbd_t to signull cluster
+- Allow gluster daemon to create fifo files in glusterd_brick_t and sock_file in glusterd_var_lib_t
+- Add label for /var/spool/cron.aquota.user
+- Allow sandbox_x domains to use work with the mozilla plugin semaphore
+- Added new policy for speech-dispatcher
+- Added dontaudit rule for insmod_exec_t in rasdaemon policy
+- Updated rasdaemon policy
+- Allow system_mail_t to transition to postfix_postdrop_t
+- Clean up mirrormanager policy
+- Allow virt_domains to read cert files, needs backport to RHEL7
+- Allow sssd to read systemd_login_var_run_t
+- Allow irc_t to execute shell and bin-t files:
+- Add new access for mythtv
+- Allow rsync_t to manage all non auth files
+- allow modemmanger to read /dev/urand
+- Allow sandbox apps to attempt to set and get capabilties
+
+* Thu Dec 19 2013 Miroslav Grepl 3.12.1-111
+- Add labeling for /var/lib/servicelog/servicelog.db-journal
+- Add support for freeipmi port
+- Add sysadm_u_default_contexts
+- Make new type to texlive files in homedir
+- Allow subscription-manager running as sosreport_t to manage rhsmcertd
+- Additional fixes for docker.te
+- Remove ability to do mount/sys_admin by default in virt_sandbox domains
+- New rules required to run docker images within libivrt
+- Add label for ~/.cvsignore
+- Change mirrormanager to be run by cron
+- Add mirrormanager policy
+- Fixed bumblebee_admin() and mip6d_admin()
+- Add log support for sensord
+- Fix typo in docker.te
+- Allow amanda to do backups over UDP
+- Allow bumblebee to read /etc/group and clean up bumblebee.te
+- type transitions with a filename not allowed inside conditionals
+- Don't allow virt-sandbox tools to use netlink out of the box, needs back port to RHEL7
+- Make new type to texlive files in homedir
+
+* Thu Dec 12 2013 Miroslav Grepl 3.12.1-110
+- Allow freeipmi_ipmidetectd_t to use freeipmi port
+- Update freeipmi_domain_template()
+- Allow journalctl running as ABRT to read /run/log/journal
+- Allow NM to read dispatcher.d directory
+- Update freeipmi policy
+- Type transitions with a filename not allowed inside conditionals
+- Allow tor to bind to hplip port
+- Make new type to texlive files in homedir
+- Allow zabbix_agent to transition to dmidecode
+- Add rules for docker
+- Allow sosreport to send signull to unconfined_t
+- Add virt_noatsecure and virt_rlimitinh interfaces
+- Fix labeling in thumb.fc to add support for /usr/lib64/tumbler-1/tumblerddd support for freeipmi port
+- Add sysadm_u_default_contexts
+- Add logging_read_syslog_pid()
+- Fix userdom_manage_home_texlive() interface
+- Make new type to texlive files in homedir
+- Add filename transitions for /run and /lock links
+- Allow virtd to inherit rlimit information
+Resolves:#975358
+
+* Tue Dec 10 2013 Miroslav Grepl 3.12.1-109
+- Change labeling for /usr/libexec/nm-dispatcher.action to NetworkManager_exec_t
+Resolves:#1039879
+- Add labeling for /usr/lib/systemd/system/mariadb.service
+- Allow hyperv_domain to read sysfs
+- Fix ldap_read_certs() interface to allow acess also link files
+- Add support for /usr/libexec/pegasus/cmpiLMI_Journald-cimprovagt
+- Allow tuned to run modprobe
+- Allow portreserve to search /var/lib/sss dir
+- Add SELinux support for the teamd package contains team network device control daemon.
+- Dontaudit access check on /proc for bumblebee
+- Bumblebee wants to load nvidia modules
+- Fix rpm_named_filetrans_log_files and wine.te
+- Add conman policy for rawhide
+- DRM master and input event devices are used by the TakeDevice API
+- Clean up bumblebee policy
+- Update pegasus_openlmi_storage_t policy
+- Add freeipmi_stream_connect() interface
+- Allow logwatch read madm.conf to support RAID setup
+- Add raid_read_conf_files() interface
+- Allow up2date running as rpm_t create up2date log file with rpm_log_t labeling
+- add rpm_named_filetrans_log_files() interface
+- Allow dkim-milter to create files/dirs in /tmp
+- update freeipmi policy
+- Add policy for freeipmi services
+- Added rdisc_admin and rdisc_systemctl interfaces
+- opensm policy clean up
+- openwsman policy clean up
+- ninfod policy clean up
+- Added new policy for ninfod
+- Added new policy for openwsman
+- Added rdisc_admin and rdisc_systemctl interfaces
+- Fix kernel_dontaudit_access_check_proc()
+- Add support for /dev/uhid
+- Allow sulogin to get the attributes of initctl and sys_admin cap
+- Add kernel_dontaudit_access_check_proc()
+- Fix dev_rw_ipmi_dev()
+- Fix new interface in devices.if
+- DRM master and input event devices are used by the TakeDevice API
+- add dev_rw_inherited_dri() and dev_rw_inherited_input_dev()
+- Added support for default conman port
+- Add interfaces for ipmi devices
+
+* Wed Dec 4 2013 Miroslav Grepl 3.12.1-108
+- Allow sosreport to send a signal to ABRT
+- Add proper aliases for pegasus_openlmi_service_exec_t and pegasus_openlmi_service_t
+- Label /usr/sbin/htcacheclean as httpd_exec_t
+Resolves:#1037529
+- Added support for rdisc unit file
+- Add antivirus_db_t labeling for /var/lib/clamav-unofficial-sigs
+- Allow runuser running as logrotate connections to system DBUS
+- Label bcache devices as fixed_disk_device_t
+- Allow systemctl running in ipsec_mgmt_t to access /usr/lib/systemd/system/ipsec.service
+- Label /usr/lib/systemd/system/ipsec.service as ipsec_mgmt_unit_file_t
+
+* Mon Dec 2 2013 Miroslav Grepl 3.12.1-107
+- Add back setpgid/setsched for sosreport_t
+
+* Mon Dec 2 2013 Dan Walsh 3.12.1-106
+- Added fix for clout_init to transition to rpm_script_t (dwalsh@redhat.com)
+
+* Tue Nov 26 2013 Miroslav Grepl 3.12.1-105
+- Dontaudit openshift domains trying to use rawip_sockets, this is caused by a bad check in the kernel.
+- Allow git_system_t to read git_user_content if the git_system_enable_homedirs boolean is turned on
+- Add lsmd_plugin_t for lsm plugins
+- Allow dovecot-deliver to search mountpoints
+- Add labeling for /etc/mdadm.conf
+- Allow opelmi admin providers to dbus chat with init_t
+- Allow sblim domain to read /dev/urandom and /dev/random
+- Allow apmd to request the kernel load modules
+- Add glusterd_brick_t type
+- label mate-keyring-daemon with gkeyringd_exec_t
+- Add plymouthd_create_log()
+- Dontaudit leaks from openshift domains into mail domains, needs back port to RHEL6
+- Allow sssd to request the kernel loads modules
+- Allow gpg_agent to use ssh-add
+- Allow gpg_agent to use ssh-add
+- Dontaudit access check on /root for myslqd_safe_t
+- Allow ctdb to getattr on al filesystems
+- Allow abrt to stream connect to syslog
+- Allow dnsmasq to list dnsmasq.d directory
+- Watchdog opens the raw socket
+- Allow watchdog to read network state info
+- Dontaudit access check on lvm lock dir
+- Allow sosreport to send signull to setroubleshootd
+- Add setroubleshoot_signull() interface
+- Fix ldap_read_certs() interface
+- Allow sosreport all signal perms
+- Allow sosreport to run systemctl
+- Allow sosreport to dbus chat with rpm
+- Add glusterd_brick_t files type
+- Allow zabbix_agentd to read all domain state
+- Clean up rtas.if
+- Allow smoltclient to execute ldconfig
+- Allow sosreport to request the kernel to load a module
+- Fix userdom_confined_admin_template()
+- Add back exec_content boolean for secadm, logadm, auditadm
+- Fix files_filetrans_system_db_named_files() interface
+- Allow sulogin to getattr on /proc/kcore
+- Add filename transition also for servicelog.db-journal
+- Add files_dontaudit_access_check_root()
+- Add lvm_dontaudit_access_check_lock() interface
+
+* Thu Nov 21 2013 Miroslav Grepl 3.12.1-104
+- Allow watchdog to read /etc/passwd
+- Allow browser plugins to connect to bumblebee
+- New policy for bumblebee and freqset
+- Add new policy for mip6d daemon
+- Add new policy for opensm daemon
+- Allow condor domains to read/write condor_master udp_socket
+- Allow openshift_cron_t to append to openshift log files, label /var/log/openshift
+- Add back file_pid_filetrans for /var/run/dlm_controld
+- Allow smbd_t to use inherited tmpfs content
+- Allow mcelog to use the /dev/cpu device
+- sosreport runs rpcinfo
+- sosreport runs subscription-manager
+- Allow staff_t to run frequency command
+- Allow systemd_tmpfiles to relabel log directories
+- Allow staff_t to read xserver_log file
+- Label hsperfdata_root as tmp_t
+
* Wed Nov 20 2013 Miroslav Grepl 3.12.1-103
- More sosreport fixes to make ABRT working
-
+
* Fri Nov 15 2013 Miroslav Grepl 3.12.1-102
- Fix files_dontaudit_unmount_all_mountpoints()
- Add support for 2608-2609 tcp/udp ports