diff --git a/SOURCES/customizable_types b/SOURCES/customizable_types index 7c71c38..feaea35 100644 --- a/SOURCES/customizable_types +++ b/SOURCES/customizable_types @@ -1,7 +1,7 @@ sandbox_file_t svirt_image_t svirt_home_t -svirt_lxc_file_t +svirt_sandbox_file_t virt_content_t httpd_user_htaccess_t httpd_user_script_exec_t diff --git a/SOURCES/policy-rhel-7.0.z-base.patch b/SOURCES/policy-rhel-7.0.z-base.patch new file mode 100644 index 0000000..e229992 --- /dev/null +++ b/SOURCES/policy-rhel-7.0.z-base.patch @@ -0,0 +1,471 @@ +diff --git a/policy/modules/admin/bootloader.te b/policy/modules/admin/bootloader.te +index a99f6e9..ee8e830 100644 +--- a/policy/modules/admin/bootloader.te ++++ b/policy/modules/admin/bootloader.te +@@ -135,6 +135,7 @@ files_etc_filetrans_etc_runtime(bootloader_t, file) + files_dontaudit_search_home(bootloader_t) + + ++init_read_state(bootloader_t) + init_getattr_initctl(bootloader_t) + init_use_script_ptys(bootloader_t) + init_use_script_fds(bootloader_t) +diff --git a/policy/modules/admin/dmesg.te b/policy/modules/admin/dmesg.te +index 17357e5..bb4a6f0 100644 +--- a/policy/modules/admin/dmesg.te ++++ b/policy/modules/admin/dmesg.te +@@ -34,6 +34,7 @@ kernel_dontaudit_write_kernel_sysctl(dmesg_t) + + dev_read_sysfs(dmesg_t) + dev_read_kmsg(dmesg_t) ++dev_read_raw_memory(dmesg_t) + + fs_search_auto_mountpoints(dmesg_t) + +@@ -51,6 +52,8 @@ init_use_script_ptys(dmesg_t) + logging_send_syslog_msg(dmesg_t) + logging_write_generic_logs(dmesg_t) + ++miscfiles_read_hwdata(dmesg_t) ++ + userdom_dontaudit_use_unpriv_user_fds(dmesg_t) + userdom_use_inherited_user_terminals(dmesg_t) + +diff --git a/policy/modules/admin/sudo.te b/policy/modules/admin/sudo.te +index fc6d1d3..612503a 100644 +--- a/policy/modules/admin/sudo.te ++++ b/policy/modules/admin/sudo.te +@@ -35,6 +35,7 @@ allow sudodomain self:unix_stream_socket create_stream_socket_perms; + allow sudodomain self:unix_dgram_socket sendto; + allow sudodomain self:unix_stream_socket connectto; + allow sudodomain self:key manage_key_perms; ++allow sudodomain self:netlink_kobject_uevent_socket create_socket_perms; + + kernel_getattr_core_if(sudodomain) + kernel_link_key(sudodomain) +@@ -97,6 +98,10 @@ userdom_search_user_home_content(sudodomain) + userdom_search_admin_dir(sudodomain) + userdom_manage_all_users_keys(sudodomain) + ++tunable_policy(`authlogin_yubikey',` ++ auth_manage_home_content(sudodomain) ++') ++ + optional_policy(` + dbus_system_bus_client(sudodomain) + ') +diff --git a/policy/modules/kernel/corenetwork.te.in b/policy/modules/kernel/corenetwork.te.in +index 72e1a41..77dedae 100644 +--- a/policy/modules/kernel/corenetwork.te.in ++++ b/policy/modules/kernel/corenetwork.te.in +@@ -272,7 +272,7 @@ network_port(pulseaudio, tcp,4713,s0, udp,4713,s0) + network_port(puppet, tcp, 8140, s0) + network_port(pxe, udp,4011,s0) + network_port(pyzor, udp,24441,s0) +-network_port(neutron, tcp,9696,s0) ++network_port(neutron, tcp,9696,s0, tcp,9697,s0) + network_port(radacct, udp,1646,s0, udp,1813,s0) + network_port(radius, udp,1645,s0, udp,1812,s0) + network_port(radsec, tcp,2083,s0) +@@ -326,6 +326,7 @@ network_port(trisoap, tcp,10200,s0, udp,10200,s0) + network_port(ups, tcp,3493,s0) + network_port(utcpserver) # no defined portcon + network_port(uucpd, tcp,540,s0) ++network_port(us_cli, tcp,8082,s0, udp,8082,s0, tcp,8083,s0, udp,8083,s0) + 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) +diff --git a/policy/modules/kernel/devices.if b/policy/modules/kernel/devices.if +index fb27ae5..d86836b 100644 +--- a/policy/modules/kernel/devices.if ++++ b/policy/modules/kernel/devices.if +@@ -5532,6 +5532,24 @@ interface(`dev_rw_xserver_misc',` + + ######################################## + ## ++## Dontaudit attempts to Read and write X server miscellaneous devices. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`dev_dontaudit_leaked_xserver_misc',` ++ gen_require(` ++ type xserver_misc_device_t; ++ ') ++ ++ dontaudit $1 xserver_misc_device_t:chr_file { read write }; ++') ++ ++######################################## ++## + ## Read and write X server miscellaneous devices. + ## + ## +diff --git a/policy/modules/kernel/domain.te b/policy/modules/kernel/domain.te +index 64d9761..269db99 100644 +--- a/policy/modules/kernel/domain.te ++++ b/policy/modules/kernel/domain.te +@@ -137,9 +137,10 @@ term_use_controlling_term(domain) + + # list the root directory + files_list_root(domain) +-# allow all domains to search through default_t directory, since users sometimes +-# place labels within these directories. (samba_share_t) for example. +-files_search_default(domain) ++# allow all domains to search through base_file_type directory, since users ++# sometimes place labels within these directories. (samba_share_t) for example. ++files_search_base_file_types(domain) ++ + files_read_inherited_tmp_files(domain) + files_append_inherited_tmp_files(domain) + files_read_all_base_ro_files(domain) +@@ -148,6 +149,10 @@ files_dontaduit_getattr_kernel_symbol_table(domain) + # All executables should be able to search the directory they are in + corecmd_search_bin(domain) + ++optional_policy(` ++ userdom_search_admin_dir(domain) ++') ++ + tunable_policy(`domain_kernel_load_modules',` + kernel_request_load_module(domain) + ') +@@ -419,6 +424,7 @@ optional_policy(` + + optional_policy(` + sysnet_filetrans_named_content(named_filetrans_domain) ++ sysnet_filetrans_named_content_ifconfig(named_filetrans_domain) + ') + + optional_policy(` +@@ -429,6 +435,7 @@ optional_policy(` + systemd_filetrans_named_content(named_filetrans_domain) + systemd_filetrans_named_hostname(named_filetrans_domain) + systemd_filetrans_home_content(named_filetrans_domain) ++ systemd_dontaudit_write_inherited_logind_sessions_pipes(domain) + ') + + optional_policy(` +diff --git a/policy/modules/kernel/files.if b/policy/modules/kernel/files.if +index 2dd815a..8a14ff2 100644 +--- a/policy/modules/kernel/files.if ++++ b/policy/modules/kernel/files.if +@@ -982,6 +982,24 @@ interface(`files_relabel_non_security_files',` + + ######################################## + ## ++## Search all base file dirs. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`files_search_base_file_types',` ++ gen_require(` ++ attribute base_file_type; ++ ') ++ ++ allow $1 base_file_type:dir search_dir_perms; ++') ++ ++######################################## ++## + ## Relabel all base file types. + ## + ## +diff --git a/policy/modules/kernel/filesystem.fc b/policy/modules/kernel/filesystem.fc +index 924f856..7b26d12 100644 +--- a/policy/modules/kernel/filesystem.fc ++++ b/policy/modules/kernel/filesystem.fc +@@ -21,5 +21,5 @@ HOME_DIR/\.Private(/.*)? gen_context(system_u:object_r:ecryptfs_t,s0) + /usr/lib/udev/devices/hugepages/.* <> + /usr/lib/udev/devices/shm -d gen_context(system_u:object_r:tmpfs_t,s0) + /usr/lib/udev/devices/shm/.* <> +-/var/run/[^/]*/gvfs -d gen_context(system_u:object_r:fusefs_t,s0) +-/var/run/[^/]*/gvfs/.* <> ++/var/run/user/[^/]*/gvfs -d gen_context(system_u:object_r:fusefs_t,s0) ++/var/run/user/[^/]*/gvfs/.* <> +diff --git a/policy/modules/services/ssh.te b/policy/modules/services/ssh.te +index d6519a1..5a9d307 100644 +--- a/policy/modules/services/ssh.te ++++ b/policy/modules/services/ssh.te +@@ -39,6 +39,9 @@ type ssh_keygen_t; + type ssh_keygen_exec_t; + init_system_domain(ssh_keygen_t, ssh_keygen_exec_t) + ++type ssh_keygen_tmp_t; ++files_tmp_file(ssh_keygen_tmp_t) ++ + type sshd_keygen_t; + type sshd_keygen_exec_t; + init_daemon_domain(sshd_keygen_t, sshd_keygen_exec_t) +@@ -468,6 +471,10 @@ manage_files_pattern(ssh_keygen_t, ssh_home_t, ssh_home_t) + userdom_admin_home_dir_filetrans(ssh_keygen_t, ssh_home_t, dir) + userdom_user_home_dir_filetrans(ssh_keygen_t, ssh_home_t, dir) + ++manage_dirs_pattern(ssh_keygen_t, ssh_keygen_tmp_t, ssh_keygen_tmp_t) ++manage_files_pattern(ssh_keygen_t, ssh_keygen_tmp_t, ssh_keygen_tmp_t) ++files_tmp_filetrans(ssh_keygen_t, ssh_keygen_tmp_t, { file dir }) ++ + kernel_read_system_state(ssh_keygen_t) + kernel_read_kernel_sysctls(ssh_keygen_t) + +diff --git a/policy/modules/system/authlogin.fc b/policy/modules/system/authlogin.fc +index 36fbb93..ed25543 100644 +--- a/policy/modules/system/authlogin.fc ++++ b/policy/modules/system/authlogin.fc +@@ -1,7 +1,7 @@ +-HOME_DIR/\.yubico(/.*)? gen_context(system_u:object_r:auth_home_t,s0) ++HOME_DIR/\.yubico(/.*)? gen_context(system_u:object_r:auth_home_t,s0) + HOME_DIR/\.google_authenticator gen_context(system_u:object_r:auth_home_t,s0) + HOME_DIR/\.google_authenticator~ gen_context(system_u:object_r:auth_home_t,s0) +-/root/\.yubico(/.*)? gen_context(system_u:object_r:auth_home_t,s0) ++/root/\.yubico(/.*)? gen_context(system_u:object_r:auth_home_t,s0) + /root/\.google_authenticator gen_context(system_u:object_r:auth_home_t,s0) + /root/\.google_authenticator~ gen_context(system_u:object_r:auth_home_t,s0) + +diff --git a/policy/modules/system/authlogin.if b/policy/modules/system/authlogin.if +index c74d0d5..42803b7 100644 +--- a/policy/modules/system/authlogin.if ++++ b/policy/modules/system/authlogin.if +@@ -2232,6 +2232,26 @@ interface(`auth_read_home_content',` + read_files_pattern($1, auth_home_t, auth_home_t) + ') + ++######################################## ++## ++## Read the authorization data in the user home directory ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`auth_manage_home_content',` ++ ++ gen_require(` ++ type auth_home_t; ++ ') ++ ++ userdom_search_user_home_dirs($1) ++ manage_files_pattern($1, auth_home_t, auth_home_t) ++ manage_dirs_pattern($1, auth_home_t, auth_home_t) ++') + + ######################################## + ## +diff --git a/policy/modules/system/authlogin.te b/policy/modules/system/authlogin.te +index 9b993c6..837948b 100644 +--- a/policy/modules/system/authlogin.te ++++ b/policy/modules/system/authlogin.te +@@ -14,7 +14,7 @@ gen_tunable(authlogin_radius, false) + + ## + ##

+-## Allow users to login using a yubikey server ++## Allow users to login using a yubikey OTP server or challenge response mode + ##

+ ##
+ gen_tunable(authlogin_yubikey, false) +@@ -455,9 +455,29 @@ sysnet_dns_name_resolve(nsswitch_domain) + + systemd_hostnamed_read_config(nsswitch_domain) + ++ ++tunable_policy(`authlogin_nsswitch_use_ldap',` ++ allow nsswitch_domain self:tcp_socket create_socket_perms; ++') ++ ++tunable_policy(`authlogin_nsswitch_use_ldap',` ++ corenet_tcp_sendrecv_generic_if(nsswitch_domain) ++ corenet_tcp_sendrecv_generic_node(nsswitch_domain) ++ corenet_tcp_sendrecv_ldap_port(nsswitch_domain) ++ corenet_tcp_connect_ldap_port(nsswitch_domain) ++ corenet_sendrecv_ldap_client_packets(nsswitch_domain) ++') ++ ++tunable_policy(`authlogin_nsswitch_use_ldap',` ++ # Support for LDAPS ++ dev_read_rand(nsswitch_domain) ++ # LDAP Configuration using encrypted requires ++ dev_read_urand(nsswitch_domain) ++ sysnet_read_config(nsswitch_domain) ++') ++ + tunable_policy(`authlogin_nsswitch_use_ldap',` + miscfiles_read_generic_certs(nsswitch_domain) +- sysnet_use_ldap(nsswitch_domain) + ') + + optional_policy(` +@@ -468,6 +488,7 @@ optional_policy(` + + optional_policy(` + tunable_policy(`authlogin_nsswitch_use_ldap',` ++ ldap_read_certs(nsswitch_domain) + ldap_stream_connect(nsswitch_domain) + ') + ') +diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te +index c983546..d76c572 100644 +--- a/policy/modules/system/init.te ++++ b/policy/modules/system/init.te +@@ -324,6 +324,7 @@ optional_policy(` + + optional_policy(` + kdump_read_crash(init_t) ++ kdump_read_config(init_t) + ') + + optional_policy(` +@@ -484,6 +485,11 @@ ifdef(`distro_redhat',` + optional_policy(` + rpc_manage_nfs_state_data(init_t) + ') ++ ++ optional_policy(` ++ sysnet_relabelfrom_dhcpc_state(init_t) ++ sysnet_setattr_dhcp_state(init_t) ++ ') + ') + + optional_policy(` +diff --git a/policy/modules/system/ipsec.te b/policy/modules/system/ipsec.te +index 7ca1e9e..5338f4d 100644 +--- a/policy/modules/system/ipsec.te ++++ b/policy/modules/system/ipsec.te +@@ -93,6 +93,7 @@ allow ipsec_t ipsec_initrc_exec_t:file read_file_perms; + allow ipsec_t ipsec_conf_file_t:dir list_dir_perms; + read_files_pattern(ipsec_t, ipsec_conf_file_t, ipsec_conf_file_t) + read_lnk_files_pattern(ipsec_t, ipsec_conf_file_t, ipsec_conf_file_t) ++filetrans_pattern(ipsec_t, ipsec_conf_file_t, ipsec_key_file_t, file, "ipsec.secrets") + + allow ipsec_t ipsec_key_file_t:dir list_dir_perms; + read_lnk_files_pattern(ipsec_t, ipsec_key_file_t, ipsec_key_file_t) +@@ -339,6 +340,7 @@ userdom_use_inherited_user_terminals(ipsec_mgmt_t) + optional_policy(` + bind_read_dnssec_keys(ipsec_mgmt_t) + bind_read_config(ipsec_mgmt_t) ++ bind_read_state(ipsec_mgmt_t) + ') + + optional_policy(` +diff --git a/policy/modules/system/sysnetwork.if b/policy/modules/system/sysnetwork.if +index 821e74c..50b1c3c 100644 +--- a/policy/modules/system/sysnetwork.if ++++ b/policy/modules/system/sysnetwork.if +@@ -769,6 +769,26 @@ interface(`sysnet_search_dhcp_state',` + allow $1 dhcp_state_t:dir search_dir_perms; + ') + ++####################################### ++## ++## Set the attributes of network config files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`sysnet_setattr_dhcp_state',` ++ gen_require(` ++ type dhcp_state_t; ++ ') ++ ++ files_search_var_lib($1) ++ allow $1 dhcp_state_t:file setattr_file_perms; ++') ++ ++ + ######################################## + ## + ## Create DHCP state data. +@@ -881,12 +901,14 @@ interface(`sysnet_use_ldap',` + + # Support for LDAPS + dev_read_rand($1) ++ # LDAP Configuration using encrypted requires + dev_read_urand($1) + + sysnet_read_config($1) + +- # LDAP Configuration using encrypted requires +- dev_read_urand($1) ++ optional_policy(` ++ ldap_read_certs($1) ++ ') + ') + + ######################################## +diff --git a/policy/modules/system/sysnetwork.te b/policy/modules/system/sysnetwork.te +index 28f16ce..f94755e 100644 +--- a/policy/modules/system/sysnetwork.te ++++ b/policy/modules/system/sysnetwork.te +@@ -320,6 +320,7 @@ allow ifconfig_t self:tcp_socket { create ioctl }; + can_exec(ifconfig_t, ifconfig_exec_t) + + manage_files_pattern(ifconfig_t, ifconfig_var_run_t, ifconfig_var_run_t) ++manage_lnk_files_pattern(ifconfig_t, ifconfig_var_run_t, ifconfig_var_run_t) + create_dirs_pattern(ifconfig_t, ifconfig_var_run_t, ifconfig_var_run_t) + files_pid_filetrans(ifconfig_t, ifconfig_var_run_t, { file dir }) + allow ifconfig_t ifconfig_var_run_t:file mounton; +@@ -346,6 +347,7 @@ dev_mount_sysfs_fs(ifconfig_t) + dev_unmount_sysfs_fs(ifconfig_t) + + domain_use_interactive_fds(ifconfig_t) ++domain_read_all_domains_state(ifconfig_t) + + read_files_pattern(ifconfig_t, dhcpc_state_t, dhcpc_state_t) + +@@ -384,10 +386,15 @@ logging_send_syslog_msg(ifconfig_t) + seutil_use_runinit_fds(ifconfig_t) + + sysnet_dns_name_resolve(ifconfig_t) ++sysnet_filetrans_named_content_ifconfig(ifconfig_t) + + userdom_use_inherited_user_terminals(ifconfig_t) + userdom_use_all_users_fds(ifconfig_t) + ++optional_policy(` ++ hostname_exec(ifconfig_t) ++') ++ + ifdef(`distro_ubuntu',` + optional_policy(` + unconfined_domain(ifconfig_t) +diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if +index 8bca1d7..24b2af3 100644 +--- a/policy/modules/system/systemd.if ++++ b/policy/modules/system/systemd.if +@@ -369,6 +369,24 @@ interface(`systemd_write_inherited_logind_sessions_pipes',` + + ###################################### + ## ++## Dontaudit attempts to write inherited logind sessions pipes. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`systemd_dontaudit_write_inherited_logind_sessions_pipes',` ++ gen_require(` ++ type systemd_logind_sessions_t; ++ ') ++ ++ dontaudit $1 systemd_logind_sessions_t:fifo_file write; ++') ++ ++###################################### ++## + ## Write systemd inhibit pipes. + ## + ## diff --git a/SOURCES/policy-rhel-7.0.z-contrib.patch b/SOURCES/policy-rhel-7.0.z-contrib.patch new file mode 100644 index 0000000..2c39572 --- /dev/null +++ b/SOURCES/policy-rhel-7.0.z-contrib.patch @@ -0,0 +1,2228 @@ +diff --git a/aiccu.te b/aiccu.te +index 6e4206c..a9039ce 100644 +--- a/aiccu.te ++++ b/aiccu.te +@@ -69,6 +69,10 @@ optional_policy(` + ') + + optional_policy(` ++ pcscd_stream_connect(aiccu_t) ++') ++ ++optional_policy(` + sysnet_dns_name_resolve(aiccu_t) + sysnet_domtrans_ifconfig(aiccu_t) + ') +diff --git a/antivirus.te b/antivirus.te +index 8ba9c95..83590aa 100644 +--- a/antivirus.te ++++ b/antivirus.te +@@ -37,7 +37,7 @@ typealias antivirus_unit_file_t alias { clamd_unit_file_t }; + systemd_unit_file(antivirus_unit_file_t) + + type antivirus_conf_t; +-typealias antivirus_conf_t alias { clamd_etc_t }; ++typealias antivirus_conf_t alias { clamd_etc_t amavis_etc_t }; + files_config_file(antivirus_conf_t) + + type antivirus_var_run_t; +@@ -166,6 +166,7 @@ dev_read_urand(antivirus_domain) + + domain_dontaudit_read_all_domains_state(antivirus_domain) + ++files_dontaudit_read_security_files(antivirus_domain) + files_read_etc_runtime_files(antivirus_domain) + files_search_spool(antivirus_domain) + +@@ -190,8 +191,6 @@ userdom_dontaudit_search_user_home_dirs(antivirus_domain) + + tunable_policy(`antivirus_can_scan_system',` + files_read_non_security_files(antivirus_domain) +- #files_dontaudit_read_all_non_security_files(antivirus_domain) +- files_dontaudit_read_security_files(antivirus_domain) + files_getattr_all_pipes(antivirus_domain) + files_getattr_all_sockets(antivirus_domain) + dev_getattr_all_blk_files(antivirus_domain) +diff --git a/apache.fc b/apache.fc +index 43bb1c9..b903cc0 100644 +--- a/apache.fc ++++ b/apache.fc +@@ -133,6 +133,7 @@ ifdef(`distro_suse', ` + /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/horizon(/.*)? 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) +diff --git a/apache.if b/apache.if +index 64beed7..9426db5 100644 +--- a/apache.if ++++ b/apache.if +@@ -74,6 +74,8 @@ template(`apache_content_template',` + manage_fifo_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t) + manage_sock_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t) + ++ allow httpd_$1_script_t httpd_t:unix_stream_socket { getattr read write }; ++ + # Allow the web server to run scripts and serve pages + tunable_policy(`httpd_builtin_scripting',` + manage_dirs_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t) +diff --git a/apache.te b/apache.te +index 21d7195..bce7760 100644 +--- a/apache.te ++++ b/apache.te +@@ -474,7 +474,7 @@ role system_r types httpd_passwd_t; + # Apache server local policy + # + +-allow httpd_t self:capability { chown dac_override kill setgid setuid sys_nice sys_tty_config }; ++allow httpd_t self:capability { chown dac_override kill setgid setuid sys_nice sys_tty_config sys_chroot }; + dontaudit httpd_t self:capability { net_admin sys_tty_config }; + allow httpd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; + allow httpd_t self:fd use; +@@ -510,6 +510,7 @@ allow httpd_t httpd_log_t:dir setattr; + create_dirs_pattern(httpd_t, httpd_log_t, httpd_log_t) + create_files_pattern(httpd_t, httpd_log_t, httpd_log_t) + append_files_pattern(httpd_t, httpd_log_t, httpd_log_t) ++setattr_files_pattern(httpd_t, httpd_log_t, httpd_log_t) + read_files_pattern(httpd_t, httpd_log_t, httpd_log_t) + read_lnk_files_pattern(httpd_t, httpd_log_t, httpd_log_t) + # cjp: need to refine create interfaces to +@@ -1035,6 +1036,7 @@ optional_policy(` + + optional_policy(` + passenger_exec(httpd_t) ++ passenger_kill(httpd_t) + passenger_manage_pid_content(httpd_t) + ') + +@@ -1649,7 +1651,7 @@ allow httpd_t httpd_script_type:unix_stream_socket connectto; + + allow httpd_t httpd_script_exec_type:file read_file_perms; + allow httpd_t httpd_script_exec_type:lnk_file read_lnk_file_perms; +-allow httpd_t httpd_script_type:process { signal sigkill sigstop }; ++allow httpd_t httpd_script_type:process { signal sigkill sigstop signull }; + allow httpd_t httpd_script_exec_type:dir list_dir_perms; + + allow httpd_script_type self:process { setsched signal_perms }; +@@ -1660,6 +1662,7 @@ allow httpd_script_type httpd_t:fd use; + allow httpd_script_type httpd_t:process sigchld; + + dontaudit httpd_script_type httpd_t:tcp_socket { read write }; ++dontaudit httpd_script_type httpd_t:unix_stream_socket { read write }; + + fs_getattr_xattr_fs(httpd_script_type) + +diff --git a/apcupsd.te b/apcupsd.te +index a370cb8..5206035 100644 +--- a/apcupsd.te ++++ b/apcupsd.te +@@ -82,6 +82,8 @@ corenet_udp_sendrecv_snmp_port(apcupsd_t) + + dev_rw_generic_usb_dev(apcupsd_t) + ++domain_signull_all_domains(apcupsd_t) ++ + files_manage_etc_runtime_files(apcupsd_t) + files_etc_filetrans_etc_runtime(apcupsd_t, file, "nologin") + +diff --git a/automount.te b/automount.te +index f27656d..11dbe9d 100644 +--- a/automount.te ++++ b/automount.te +@@ -89,6 +89,7 @@ corenet_udp_bind_all_rpc_ports(automount_t) + + files_dontaudit_write_var_dirs(automount_t) + files_getattr_all_dirs(automount_t) ++files_getattr_all_files(automount_t) + files_getattr_default_dirs(automount_t) + files_getattr_home_dir(automount_t) + files_getattr_isid_type_dirs(automount_t) +diff --git a/bind.if b/bind.if +index 6c2dbe4..43b445c 100644 +--- a/bind.if ++++ b/bind.if +@@ -408,6 +408,25 @@ interface(`bind_udp_chat_named',` + + ######################################## + ## ++## Allow the domain to read bind state files in /proc. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`bind_read_state',` ++ gen_require(` ++ type named_t; ++ ') ++ ++ kernel_search_proc($1) ++ ps_process_pattern($1, named_t) ++') ++ ++######################################## ++## + ## All of the rules required to + ## administrate an bind environment. + ## +diff --git a/chronyd.te b/chronyd.te +index 7d723c0..d0c8001 100644 +--- a/chronyd.te ++++ b/chronyd.te +@@ -87,6 +87,7 @@ domain_dontaudit_getsession_all_domains(chronyd_t) + + dev_read_rand(chronyd_t) + dev_read_urand(chronyd_t) ++dev_read_sysfs(chronyd_t) + + dev_rw_realtime_clock(chronyd_t) + +diff --git a/cloudform.te b/cloudform.te +index 786d623..496ce03 100644 +--- a/cloudform.te ++++ b/cloudform.te +@@ -270,8 +270,9 @@ files_tmp_filetrans(mongod_t, mongod_tmp_t, { file dir sock_file }) + + manage_dirs_pattern(mongod_t, mongod_var_run_t, mongod_var_run_t) + manage_files_pattern(mongod_t, mongod_var_run_t, mongod_var_run_t) ++manage_sock_files_pattern(mongod_t, mongod_var_run_t, mongod_var_run_t) + #needed by dbomatic +-files_pid_filetrans(mongod_t, mongod_var_run_t, { file }) ++files_pid_filetrans(mongod_t, mongod_var_run_t, { file sock_file dir }) + + corecmd_exec_bin(mongod_t) + corecmd_exec_shell(mongod_t) +diff --git a/conman.te b/conman.te +index 0de2d4d..d6b0314 100644 +--- a/conman.te ++++ b/conman.te +@@ -25,7 +25,7 @@ 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 }; ++allow conman_t self:tcp_socket { accept 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) +@@ -40,6 +40,10 @@ auth_read_passwd(conman_t) + + logging_send_syslog_msg(conman_t) + ++sysnet_dns_name_resolve(conman_t) ++ ++userdom_use_user_ptys(conman_t) ++ + optional_policy(` + freeipmi_stream_connect(conman_t) + ') +diff --git a/cups.fc b/cups.fc +index afe482b..9437dbe 100644 +--- a/cups.fc ++++ b/cups.fc +@@ -76,10 +76,14 @@ + /var/run/udev-configure-printer(/.*)? gen_context(system_u:object_r:cupsd_config_var_run_t,s0) + /var/turboprint(/.*)? gen_context(system_u:object_r:cupsd_var_run_t,s0) + ++/etc/opt/Brother/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) + /usr/Brother/fax/.*\.log.* gen_context(system_u:object_r:cupsd_log_t,s0) + /usr/Brother/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) +-/etc/opt/Brother/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) + /usr/Printer/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) ++/usr/local/Brother/fax/.*\.log.* gen_context(system_u:object_r:cupsd_log_t,s0) ++/usr/local/Brother/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) ++/usr/local/Printer/(.*/)?inf(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) ++ + + /usr/local/linuxprinter/ppd(/.*)? gen_context(system_u:object_r:cupsd_rw_etc_t,s0) + +diff --git a/dhcp.te b/dhcp.te +index cdb4d60..5d61f10 100644 +--- a/dhcp.te ++++ b/dhcp.te +@@ -103,13 +103,26 @@ auth_use_nsswitch(dhcpd_t) + + logging_send_syslog_msg(dhcpd_t) + ++sysnet_read_config(dhcpd_t) + sysnet_read_dhcp_config(dhcpd_t) + + userdom_dontaudit_use_unpriv_user_fds(dhcpd_t) + userdom_dontaudit_search_user_home_dirs(dhcpd_t) + + tunable_policy(`dhcpd_use_ldap',` +- sysnet_use_ldap(dhcpd_t) ++ allow dhcpd_t self:tcp_socket create_socket_perms; ++') ++ ++tunable_policy(`dhcpd_use_ldap',` ++ corenet_tcp_sendrecv_generic_if(dhcpd_t) ++ corenet_tcp_sendrecv_generic_node(dhcpd_t) ++ corenet_tcp_sendrecv_ldap_port(dhcpd_t) ++ corenet_tcp_connect_ldap_port(dhcpd_t) ++ corenet_sendrecv_ldap_client_packets(dhcpd_t) ++') ++ ++tunable_policy(`dhcpd_use_ldap',` ++ ldap_read_certs(dhcpd_t) + ') + + ifdef(`distro_gentoo',` +diff --git a/docker.te b/docker.te +index c80e06c..73e71c1 100644 +--- a/docker.te ++++ b/docker.te +@@ -97,6 +97,7 @@ manage_chr_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) + manage_blk_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) + manage_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) + manage_lnk_files_pattern(docker_t, docker_var_lib_t, docker_var_lib_t) ++allow docker_t docker_var_lib_t:dir_file_class_set { relabelfrom relabelto }; + files_var_lib_filetrans(docker_t, docker_var_lib_t, { dir file lnk_file }) + + manage_dirs_pattern(docker_t, docker_var_run_t, docker_var_run_t) +@@ -135,12 +136,14 @@ files_read_etc_files(docker_t) + + fs_read_cgroup_files(docker_t) + fs_read_tmpfs_symlinks(docker_t) ++fs_getattr_all_fs(docker_t) + + storage_raw_rw_fixed_disk(docker_t) + + auth_use_nsswitch(docker_t) + + init_read_state(docker_t) ++init_status(docker_t) + + logging_send_audit_msgs(docker_t) + logging_send_syslog_msg(docker_t) +@@ -220,6 +223,12 @@ term_mounton_unallocated_ttys(docker_t) + + modutils_domtrans_insmod(docker_t) + ++systemd_status_all_unit_files(docker_t) ++systemd_start_systemd_services(docker_t) ++ ++userdom_stream_connect(docker_t) ++userdom_search_user_home_content(docker_t) ++ + optional_policy(` + dbus_system_bus_client(docker_t) + init_dbus_chat(docker_t) +diff --git a/drbd.fc b/drbd.fc +index 671a3fb..c781675 100644 +--- a/drbd.fc ++++ b/drbd.fc +@@ -3,7 +3,7 @@ + /sbin/drbdadm -- gen_context(system_u:object_r:drbd_exec_t,s0) + /sbin/drbdsetup -- gen_context(system_u:object_r:drbd_exec_t,s0) + +-/usr/lib/ocf/resource.\d/linbit/drbd -- gen_context(system_u:object_r:drbd_exec_t,s0) ++/usr/lib/ocf/resource\.d/linbit/drbd -- gen_context(system_u:object_r:drbd_exec_t,s0) + + /usr/sbin/drbdadm -- gen_context(system_u:object_r:drbd_exec_t,s0) + /usr/sbin/drbdsetup -- gen_context(system_u:object_r:drbd_exec_t,s0) +diff --git a/exim.fc b/exim.fc +index dc0254b..9df498d 100644 +--- a/exim.fc ++++ b/exim.fc +@@ -3,6 +3,8 @@ + /usr/sbin/exim[0-9]? -- gen_context(system_u:object_r:exim_exec_t,s0) + /usr/sbin/exim_tidydb -- gen_context(system_u:object_r:exim_exec_t,s0) + ++/var/lib/exim[0-9]?(/.*)? gen_context(system_u:object_r:exim_var_lib_t,s0) ++ + /var/log/exim[0-9]?(/.*)? gen_context(system_u:object_r:exim_log_t,s0) + + /var/run/exim[0-9]?(/.*)? gen_context(system_u:object_r:exim_var_run_t,s0) +diff --git a/exim.if b/exim.if +index ef3b449..4a8d053 100644 +--- a/exim.if ++++ b/exim.if +@@ -241,8 +241,46 @@ interface(`exim_manage_spool_files',` + + ######################################## + ## +-## All of the rules required to administrate +-## an exim environment. ++## Read exim var lib files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`exim_read_var_lib_files',` ++ gen_require(` ++ type exim_var_lib_t; ++ ') ++ ++ read_files_pattern($1, exim_var_lib_t, exim_var_lib_t) ++ files_search_var_lib($1) ++') ++ ++######################################## ++## ++## Create, read, and write exim var lib files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`exim_manage_var_lib_files',` ++ gen_require(` ++ type exim_var_lib_t; ++ ') ++ ++ manage_files_pattern($1, exim_var_lib_t, exim_var_lib_t) ++ files_search_var_lib($1) ++') ++ ++######################################## ++## ++## All of the rules required to ++## administrate an exim environment. + ## + ## + ## +@@ -257,8 +295,9 @@ interface(`exim_manage_spool_files',` + # + interface(`exim_admin',` + gen_require(` +- type exim_t, exim_initrc_exec_t, exim_log_t; +- type exim_tmp_t, exim_spool_t, exim_var_run_t; ++ type exim_t, exim_spool_t, exim_log_t; ++ type exim_var_run_t, exim_initrc_exec_t, exim_tmp_t; ++ type exim_keytab_t; + ') + + allow $1 exim_t:process signal_perms; +@@ -273,6 +312,9 @@ interface(`exim_admin',` + role_transition $2 exim_initrc_exec_t system_r; + allow $2 system_r; + ++ files_search_etc($1) ++ admin_pattern($1, exim_keytab_t) ++ + files_search_spool($1) + admin_pattern($1, exim_spool_t) + +diff --git a/exim.te b/exim.te +index 3e86b12..5495c90 100644 +--- a/exim.te ++++ b/exim.te +@@ -1,4 +1,4 @@ +-policy_module(exim, 1.5.4) ++policy_module(exim, 1.6.1) + + ######################################## + # +@@ -45,6 +45,9 @@ mta_agent_executable(exim_exec_t) + type exim_initrc_exec_t; + init_script_file(exim_initrc_exec_t) + ++type exim_var_lib_t; ++files_type(exim_var_lib_t) ++ + type exim_log_t; + logging_log_file(exim_log_t) + +@@ -57,6 +60,10 @@ files_tmp_file(exim_tmp_t) + type exim_var_run_t; + files_pid_file(exim_var_run_t) + ++ifdef(`distro_debian',` ++ init_daemon_run_dir(exim_var_run_t, "exim4") ++') ++ + ######################################## + # + # Local policy +@@ -68,6 +75,8 @@ allow exim_t self:fifo_file rw_fifo_file_perms; + allow exim_t self:unix_stream_socket { accept listen }; + allow exim_t self:tcp_socket { accept listen }; + ++manage_files_pattern(exim_t, exim_var_lib_t, exim_var_lib_t) ++ + append_files_pattern(exim_t, exim_log_t, exim_log_t) + create_files_pattern(exim_t, exim_log_t, exim_log_t) + setattr_files_pattern(exim_t, exim_log_t, exim_log_t) +@@ -88,6 +97,7 @@ files_pid_filetrans(exim_t, exim_var_run_t, { dir file }) + + can_exec(exim_t, exim_exec_t) + ++kernel_read_crypto_sysctls(exim_t) + kernel_read_kernel_sysctls(exim_t) + kernel_read_network_state(exim_t) + kernel_read_system_state(exim_t) +@@ -122,6 +132,7 @@ corenet_tcp_connect_spamd_port(exim_t) + + dev_read_rand(exim_t) + dev_read_urand(exim_t) ++dev_read_sysfs(exim_t) + + domain_use_interactive_fds(exim_t) + +@@ -134,6 +145,7 @@ fs_getattr_xattr_fs(exim_t) + fs_list_inotifyfs(exim_t) + + auth_use_nsswitch(exim_t) ++auth_domtrans_chk_passwd(exim_t) + + logging_send_syslog_msg(exim_t) + +@@ -175,6 +187,7 @@ optional_policy(` + optional_policy(` + cron_read_pipes(exim_t) + cron_rw_system_job_pipes(exim_t) ++ cron_use_system_job_fds(exim_t) + ') + + optional_policy(` +@@ -186,7 +199,7 @@ optional_policy(` + ') + + optional_policy(` +- kerberos_keytab_template(exim, exim_t) ++ kerberos_keytab_template(exim, exim_t) + ') + + optional_policy(` +diff --git a/fprintd.te b/fprintd.te +index ed04b9e..72b7712 100644 +--- a/fprintd.te ++++ b/fprintd.te +@@ -33,6 +33,8 @@ dev_read_sysfs(fprintd_t) + dev_read_urand(fprintd_t) + dev_rw_generic_usb_dev(fprintd_t) + ++files_dontaudit_list_tmp(fprintd_t) ++ + fs_getattr_all_fs(fprintd_t) + + auth_use_nsswitch(fprintd_t) +diff --git a/freeipmi.te b/freeipmi.te +index 8071a76..0710d79 100644 +--- a/freeipmi.te ++++ b/freeipmi.te +@@ -40,6 +40,7 @@ files_var_lib_filetrans(freeipmi_domain, freeipmi_var_lib_t, { dir }) + + dev_read_rand(freeipmi_domain) + dev_read_urand(freeipmi_domain) ++dev_rw_ipmi_dev(freeipmi_domain) + + sysnet_dns_name_resolve(freeipmi_domain) + +@@ -50,7 +51,6 @@ sysnet_dns_name_resolve(freeipmi_domain) + + 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; + +diff --git a/gear.fc b/gear.fc +index 5eabf35..98c012c 100644 +--- a/gear.fc ++++ b/gear.fc +@@ -1,7 +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) ++/usr/lib/systemd/system/gear.service -- gen_context(system_u:object_r:gear_unit_file_t,s0) + ++/var/lib/containers(/.*)? gen_context(system_u:object_r:gear_var_lib_t,s0) ++/var/lib/containers/units(/.*)? gen_context(system_u:object_r:gear_unit_file_t,s0) + /var/lib/gear(/.*)? gen_context(system_u:object_r:gear_var_lib_t,s0) +diff --git a/gear.te b/gear.te +index 6c32f79..cb68ca9 100644 +--- a/gear.te ++++ b/gear.te +@@ -25,11 +25,15 @@ systemd_unit_file(gear_unit_file_t) + # + # gear local policy + # ++allow gear_t self:capability { chown net_admin fowner dac_override }; ++allow gear_t self:capability2 block_suspend; + 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; + ++allow gear_t gear_unit_file_t:dir { relabelfrom relabelto }; ++ + 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) +@@ -43,6 +47,7 @@ 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 }) ++allow gear_t gear_var_lib_t:dir { relabelfrom relabelto }; + + 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) +@@ -56,6 +61,7 @@ kernel_read_all_sysctls(gear_t) + kernel_rw_net_sysctls(gear_t) + + domain_use_interactive_fds(gear_t) ++domain_read_all_domains_state(gear_t) + + corecmd_exec_bin(gear_t) + corecmd_exec_shell(gear_t) +@@ -66,6 +72,11 @@ corenet_tcp_sendrecv_generic_node(gear_t) + corenet_tcp_sendrecv_generic_port(gear_t) + corenet_tcp_bind_gear_port(gear_t) + ++dev_mounton_sysfs(gear_t) ++dev_mount_sysfs_fs(gear_t) ++dev_unmount_sysfs_fs(gear_t) ++ ++files_mounton_rootfs(gear_t) + files_read_etc_files(gear_t) + + fs_read_cgroup_files(gear_t) +@@ -75,6 +86,9 @@ auth_use_nsswitch(gear_t) + + init_read_state(gear_t) + init_dbus_chat(gear_t) ++init_enable_services(gear_t) ++ ++iptables_domtrans(gear_t) + + logging_send_audit_msgs(gear_t) + logging_send_syslog_msg(gear_t) +@@ -87,8 +101,25 @@ seutil_read_default_contexts(gear_t) + + sysnet_dns_name_resolve(gear_t) + ++sysnet_exec_ifconfig(gear_t) ++sysnet_manage_ifconfig_run(gear_t) ++ + systemd_manage_all_unit_files(gear_t) + + optional_policy(` ++ hostname_exec(gear_t) ++') ++ ++optional_policy(` ++ dbus_system_bus_client(gear_t) ++') ++ ++optional_policy(` + docker_stream_connect(gear_t) + ') ++ ++optional_policy(` ++ openshift_manage_lib_dirs(gear_t) ++ openshift_manage_lib_files(gear_t) ++ openshift_relabelfrom_lib(gear_t) ++') +diff --git a/glance.te b/glance.te +index 16dcb5b..2d17fe6 100644 +--- a/glance.te ++++ b/glance.te +@@ -5,6 +5,13 @@ policy_module(glance, 1.0.2) + # Declarations + # + ++## ++##

++## Allow glance domain to manage fuse files ++##

++##
++gen_tunable(glance_use_fusefs, false) ++ + attribute glance_domain; + + glance_basic_types_template(glance_registry) +@@ -77,6 +84,19 @@ libs_exec_ldconfig(glance_domain) + + sysnet_dns_name_resolve(glance_domain) + ++tunable_policy(`glance_use_fusefs',` ++ fs_manage_fusefs_dirs(glance_domain) ++ fs_manage_fusefs_files(glance_domain) ++ fs_read_fusefs_symlinks(glance_domain) ++ fs_getattr_fusefs(glance_domain) ++') ++ ++ ++ ++optional_policy(` ++ mysql_read_db_lnk_files(glance_domain) ++') ++ + ######################################## + # + # Registry local policy +@@ -122,6 +142,8 @@ corenet_tcp_connect_mysqld_port(glance_api_t) + corenet_tcp_connect_http_port(glance_api_t) + + corenet_tcp_connect_all_ephemeral_ports(glance_api_t) ++corenet_tcp_connect_commplex_main_port(glance_api_t) ++corenet_tcp_connect_http_cache_port(glance_api_t) + + corenet_sendrecv_hplip_server_packets(glance_api_t) + corenet_tcp_bind_hplip_port(glance_api_t) +diff --git a/gnome.te b/gnome.te +index 5314f96..ea1115c 100644 +--- a/gnome.te ++++ b/gnome.te +@@ -226,7 +226,6 @@ allow gkeyringd_domain gconf_home_t:dir create_dir_perms; + filetrans_pattern(gkeyringd_domain, gconf_home_t, data_home_t, dir, "share") + filetrans_pattern(gkeyringd_domain, gnome_home_t, gkeyringd_gnome_home_t, dir, "keyrings") + filetrans_pattern(gkeyringd_domain, data_home_t, gkeyringd_gnome_home_t, dir, "keyrings") +-filetrans_pattern(gkeyringd_domain, gnome_home_t, data_home_t, dir, "keyrings") + + manage_dirs_pattern(gkeyringd_domain, gkeyringd_tmp_t, gkeyringd_tmp_t) + manage_sock_files_pattern(gkeyringd_domain, gkeyringd_tmp_t, gkeyringd_tmp_t) +diff --git a/iscsi.if b/iscsi.if +index 2ea1241..a7e1562 100644 +--- a/iscsi.if ++++ b/iscsi.if +@@ -117,6 +117,28 @@ interface(`iscsi_filetrans_named_content',` + files_lock_filetrans($1, iscsi_lock_t, dir, "iscsi") + ') + ++######################################## ++## ++## Execute iscsi server in the iscsi domain. ++## ++## ++## ++## Domain allowed to transition. ++## ++## ++# ++interface(`iscsi_systemctl',` ++ gen_require(` ++ type iscsid_t; ++ type iscsi_unit_file_t; ++ ') ++ ++ systemd_exec_systemctl($1) ++ allow $1 iscsi_unit_file_t:file read_file_perms; ++ allow $1 iscsi_unit_file_t:service manage_service_perms; ++ ++ ps_process_pattern($1, iscsid_t) ++') + + ######################################## + ## +diff --git a/iscsi.te b/iscsi.te +index 56d45ec..b25cfd0 100644 +--- a/iscsi.te ++++ b/iscsi.te +@@ -90,6 +90,9 @@ corenet_sendrecv_winshadow_client_packets(iscsid_t) + corenet_tcp_connect_winshadow_port(iscsid_t) + corenet_tcp_sendrecv_winshadow_port(iscsid_t) + ++corecmd_exec_bin(iscsid_t) ++corecmd_exec_shell(iscsid_t) ++ + dev_read_urand(iscsid_t) + dev_rw_sysfs(iscsid_t) + dev_rw_userio_dev(iscsid_t) +@@ -108,5 +111,9 @@ logging_send_syslog_msg(iscsid_t) + modutils_read_module_config(iscsid_t) + + optional_policy(` ++ iscsi_systemctl(iscsid_t) ++') ++ ++optional_policy(` + tgtd_manage_semaphores(iscsid_t) + ') +diff --git a/keepalived.te b/keepalived.te +index 535f79b..dc5c775 100644 +--- a/keepalived.te ++++ b/keepalived.te +@@ -33,6 +33,9 @@ files_pid_filetrans(keepalived_t, keepalived_var_run_t, { file }) + kernel_read_system_state(keepalived_t) + kernel_read_network_state(keepalived_t) + ++corecmd_exec_bin(keepalived_t) ++corecmd_exec_shell(keepalived_t) ++ + auth_use_nsswitch(keepalived_t) + + corenet_tcp_connect_connlcli_port(keepalived_t) +diff --git a/keystone.te b/keystone.te +index a82637c..c21beab 100644 +--- a/keystone.te ++++ b/keystone.te +@@ -78,6 +78,7 @@ libs_exec_ldconfig(keystone_t) + optional_policy(` + mysql_stream_connect(keystone_t) + mysql_tcp_connect(keystone_t) ++ mysql_read_db_lnk_files(keystone_t) + ') + + optional_policy(` +diff --git a/logrotate.te b/logrotate.te +index f8c5464..17ea89c 100644 +--- a/logrotate.te ++++ b/logrotate.te +@@ -38,7 +38,7 @@ files_type(logrotate_var_lib_t) + + # Change ownership on log files. + allow logrotate_t self:capability { chown dac_override dac_read_search kill fsetid fowner setuid setgid sys_resource sys_nice sys_ptrace }; +-dontaudit logrotate_t self:capability sys_resource; ++dontaudit logrotate_t self:capability { sys_resource net_admin }; + + allow logrotate_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; + +diff --git a/logwatch.te b/logwatch.te +index 7569cd9..aea48db 100644 +--- a/logwatch.te ++++ b/logwatch.te +@@ -187,6 +187,8 @@ dev_read_sysfs(logwatch_mail_t) + logging_read_all_logs(logwatch_mail_t) + + mta_read_home(logwatch_mail_t) ++mta_filetrans_home_content(logwatch_mail_t) ++mta_filetrans_admin_home_content(logwatch_mail_t) + + optional_policy(` + cron_use_system_job_fds(logwatch_mail_t) +diff --git a/mock.if b/mock.if +index 6568bfe..f5b98e6 100644 +--- a/mock.if ++++ b/mock.if +@@ -53,6 +53,7 @@ interface(`mock_read_lib_files',` + ') + + files_search_var_lib($1) ++ list_dirs_pattern($1, mock_var_lib_t, mock_var_lib_t) + read_files_pattern($1, mock_var_lib_t, mock_var_lib_t) + ') + +diff --git a/mock.te b/mock.te +index fc64201..1bf717f 100644 +--- a/mock.te ++++ b/mock.te +@@ -192,7 +192,7 @@ optional_policy(` + # + # mock_build local policy + # +-allow mock_build_t self:capability { sys_admin setfcap setuid sys_chroot chown dac_override sys_nice mknod fsetid setgid fowner }; ++allow mock_build_t self:capability { sys_admin setfcap setuid sys_chroot chown dac_override sys_nice mknod fsetid setgid fowner sys_ptrace }; + dontaudit mock_build_t self:capability audit_write; + allow mock_build_t self:process { fork setsched setpgid signal_perms }; + allow mock_build_t self:netlink_audit_socket { create_socket_perms nlmsg_relay }; +@@ -269,6 +269,7 @@ init_dontaudit_stream_connect(mock_build_t) + + libs_exec_ldconfig(mock_build_t) + ++term_use_all_inherited_terms(mock_build_t) + userdom_use_inherited_user_ptys(mock_build_t) + + tunable_policy(`mock_enable_homedirs',` +diff --git a/motion.te b/motion.te +index b694afc..c7f4eb5 100644 +--- a/motion.te ++++ b/motion.te +@@ -26,7 +26,7 @@ files_type(motion_data_t) + # motion local policy + # + allow motion_t self:udp_socket { create connect getattr }; +-allow motion_t self:tcp_socket { bind create setopt listen }; ++allow motion_t self:tcp_socket create_stream_socket_perms; + allow motion_t self:netlink_route_socket r_netlink_socket_perms; + + manage_dirs_pattern(motion_t, motion_log_t, motion_log_t) +@@ -43,6 +43,7 @@ files_var_filetrans(motion_t, motion_data_t, { dir file }) + + corenet_tcp_bind_http_cache_port(motion_t) + corenet_tcp_bind_transproxy_port(motion_t) ++corenet_tcp_bind_us_cli_port(motion_t) + corenet_tcp_connect_http_port(motion_t) + corenet_tcp_bind_generic_node(motion_t) + +diff --git a/mozilla.te b/mozilla.te +index e76899c..a4f86f5 100644 +--- a/mozilla.te ++++ b/mozilla.te +@@ -442,6 +442,7 @@ dev_dontaudit_read_mtrr(mozilla_plugin_t) + xserver_dri_domain(mozilla_plugin_t) + + dev_dontaudit_getattr_all(mozilla_plugin_t) ++dev_dontaudit_leaked_xserver_misc(mozilla_plugin_t) + + domain_use_interactive_fds(mozilla_plugin_t) + domain_dontaudit_read_all_domains_state(mozilla_plugin_t) +@@ -458,6 +459,10 @@ fs_read_noxattr_fs_files(mozilla_plugin_t) + fs_read_hugetlbfs_files(mozilla_plugin_t) + fs_exec_hugetlbfs_files(mozilla_plugin_t) + ++storage_raw_read_removable_device(mozilla_plugin_t) ++fs_read_removable_files(mozilla_plugin_t) ++fs_read_removable_symlinks(mozilla_plugin_t) ++ + application_exec(mozilla_plugin_t) + application_dontaudit_signull(mozilla_plugin_t) + +diff --git a/mta.fc b/mta.fc +index cb2791a..1e1a679 100644 +--- a/mta.fc ++++ b/mta.fc +@@ -1,7 +1,7 @@ +-HOME_DIR/\.esmtp_queue -- gen_context(system_u:object_r:mail_home_t,s0) + HOME_DIR/\.forward[^/]* -- gen_context(system_u:object_r:mail_home_t,s0) + HOME_DIR/dead\.letter -- gen_context(system_u:object_r:mail_home_t,s0) + HOME_DIR/\.mailrc -- gen_context(system_u:object_r:mail_home_t,s0) ++HOME_DIR/\.esmtp_queue(/.*)? gen_context(system_u:object_r:mail_home_rw_t,s0) + HOME_DIR/Maildir(/.*)? gen_context(system_u:object_r:mail_home_rw_t,s0) + HOME_DIR/.maildir(/.*)? gen_context(system_u:object_r:mail_home_rw_t,s0) + +@@ -17,10 +17,10 @@ ifdef(`distro_redhat',` + /etc/postfix/aliases.* gen_context(system_u:object_r:etc_aliases_t,s0) + ') + +-/root/\.esmtp_queue -- gen_context(system_u:object_r:mail_home_t,s0) + /root/\.forward -- gen_context(system_u:object_r:mail_home_t,s0) + /root/dead\.letter -- gen_context(system_u:object_r:mail_home_t,s0) + /root/\.mailrc -- gen_context(system_u:object_r:mail_home_t,s0) ++/root/\.esmtp_queue(/.*)? gen_context(system_u:object_r:mail_home_rw_t,s0) + /root/Maildir(/.*)? gen_context(system_u:object_r:mail_home_rw_t,s0) + + /usr/bin/esmtp -- gen_context(system_u:object_r:sendmail_exec_t,s0) +@@ -42,3 +42,4 @@ ifdef(`distro_redhat',` + /var/spool/(client)?mqueue(/.*)? gen_context(system_u:object_r:mqueue_spool_t,s0) + /var/spool/mqueue\.in(/.*)? gen_context(system_u:object_r:mqueue_spool_t,s0) + /var/spool/mail(/.*)? gen_context(system_u:object_r:mail_spool_t,s0) ++/var/spool/smtpd(/.*)? gen_context(system_u:object_r:mail_spool_t,s0) +diff --git a/mta.if b/mta.if +index e968c28..8f217ea 100644 +--- a/mta.if ++++ b/mta.if +@@ -1174,6 +1174,7 @@ interface(`mta_filetrans_admin_home_content',` + userdom_admin_home_dir_filetrans($1, mail_home_rw_t, dir, "Maildir") + userdom_admin_home_dir_filetrans($1, mail_home_rw_t, dir, ".maildir") + userdom_admin_home_dir_filetrans($1, mail_home_rw_t, file, ".esmtp_queue") ++ userdom_admin_home_dir_filetrans($1, mail_home_rw_t, dir, ".esmtp_queue") + ') + + ######################################## +@@ -1198,6 +1199,7 @@ interface(`mta_filetrans_home_content',` + userdom_user_home_dir_filetrans($1, mail_home_rw_t, dir, "Maildir") + userdom_user_home_dir_filetrans($1, mail_home_rw_t, dir, ".maildir") + userdom_user_home_dir_filetrans($1, mail_home_rw_t, file, ".esmtp_queue") ++ userdom_user_home_dir_filetrans($1, mail_home_rw_t, dir, ".esmtp_queue") + ') + + ######################################## +diff --git a/mysql.if b/mysql.if +index 404ed6d..a77dc09 100644 +--- a/mysql.if ++++ b/mysql.if +@@ -233,6 +233,24 @@ interface(`mysql_append_db_files',` + files_search_var_lib($1) + append_files_pattern($1, mysqld_db_t, mysqld_db_t) + ') ++####################################### ++## ++## Read and write to the MySQL database directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`mysql_read_db_lnk_files',` ++ gen_require(` ++ type mysqld_db_t; ++ ') ++ ++ files_search_var_lib($1) ++ read_lnk_files_pattern($1, mysqld_db_t, mysqld_db_t) ++') + + ####################################### + ## +diff --git a/mysql.te b/mysql.te +index 699587e..6e73360 100644 +--- a/mysql.te ++++ b/mysql.te +@@ -132,6 +132,7 @@ auth_use_nsswitch(mysqld_t) + logging_send_syslog_msg(mysqld_t) + + sysnet_read_config(mysqld_t) ++sysnet_exec_ifconfig(mysqld_t) + + ifdef(`distro_redhat',` + filetrans_pattern(mysqld_t, mysqld_db_t, mysqld_var_run_t, sock_file) +diff --git a/nova.te b/nova.te +index d5b54e5..2d9ab86 100644 +--- a/nova.te ++++ b/nova.te +@@ -46,6 +46,7 @@ files_pid_file(nova_var_run_t) + # nova general domain local policy + # + ++allow nova_domain self:process signal_perms; + allow nova_domain self:fifo_file rw_fifo_file_perms; + allow nova_domain self:tcp_socket create_stream_socket_perms; + allow nova_domain self:unix_stream_socket create_stream_socket_perms; +@@ -76,6 +77,11 @@ fs_getattr_xattr_fs(nova_domain) + libs_exec_ldconfig(nova_domain) + + optional_policy(` ++ mysql_stream_connect(nova_domain) ++ mysql_read_db_lnk_files(nova_domain) ++') ++ ++optional_policy(` + sysnet_read_config(nova_domain) + sysnet_exec_ifconfig(nova_domain) + ') +@@ -142,10 +148,6 @@ auth_use_nsswitch(nova_cert_t) + miscfiles_read_certs(nova_cert_t) + + optional_policy(` +- mysql_stream_connect(nova_cert_t) +-') +- +-optional_policy(` + postgresql_stream_connect(nova_cert_t) + ') + +@@ -176,10 +178,6 @@ allow nova_console_t self:udp_socket create_socket_perms; + + auth_use_nsswitch(nova_console_t) + +-optional_policy(` +- mysql_stream_connect(nova_console_t) +-') +- + ####################################### + # + # nova direct local policy +@@ -270,6 +268,8 @@ optional_policy(` + allow nova_scheduler_t self:netlink_route_socket r_netlink_socket_perms; + allow nova_scheduler_t self:udp_socket create_socket_perms; + ++auth_read_passwd(nova_scheduler_t) ++ + #optional_policy(` + # unconfined_domain(nova_scheduler_t) + #') +diff --git a/openshift.fc b/openshift.fc +index 1d4e039..95b6381 100644 +--- a/openshift.fc ++++ b/openshift.fc +@@ -5,7 +5,7 @@ + + /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/containers/home(/.*)? 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) + +diff --git a/openshift.if b/openshift.if +index 9451b83..a472b52 100644 +--- a/openshift.if ++++ b/openshift.if +@@ -362,6 +362,26 @@ interface(`openshift_manage_content',` + manage_sock_files_pattern($1, openshift_file_type, openshift_file_type) + ') + ++######################################## ++## ++## Relabel openshift library files ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_relabelfrom_lib',` ++ gen_require(` ++ type openshift_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ relabel_dirs_pattern($1, openshift_var_lib_t, openshift_var_lib_t) ++ relabel_files_pattern($1, openshift_var_lib_t, openshift_var_lib_t) ++') ++ + ####################################### + ## + ## Create private objects in the +@@ -416,7 +436,6 @@ interface(`openshift_read_pid_files',` + allow $1 openshift_var_run_t:file read_file_perms; + ') + +- + ######################################## + ## + ## All of the rules required to administrate +diff --git a/openshift.te b/openshift.te +index ebd0c68..93fd0ea 100644 +--- a/openshift.te ++++ b/openshift.te +@@ -321,6 +321,10 @@ optional_policy(` + ') + + optional_policy(` ++ gear_search_lib(openshift_domain) ++') ++ ++optional_policy(` + gpg_entry_type(openshift_domain) + ') + +diff --git a/openvpn.te b/openvpn.te +index 265896b..fcda1bc 100644 +--- a/openvpn.te ++++ b/openvpn.te +@@ -26,7 +26,7 @@ gen_tunable(openvpn_enable_homedirs, false) + ## connect to the TCP network. + ##

+ ## +-gen_tunable(openvpn_can_network_connect, false) ++gen_tunable(openvpn_can_network_connect, true) + + attribute_role openvpn_roles; + +diff --git a/openwsman.te b/openwsman.te +index 49dc5ef..3bcd32c 100644 +--- a/openwsman.te ++++ b/openwsman.te +@@ -9,6 +9,12 @@ type openwsman_t; + type openwsman_exec_t; + init_daemon_domain(openwsman_t, openwsman_exec_t) + ++type openwsman_tmp_t; ++files_tmp_file(openwsman_tmp_t) ++ ++type openwsman_tmpfs_t; ++files_tmpfs_file(openwsman_tmpfs_t) ++ + type openwsman_log_t; + logging_log_file(openwsman_log_t) + +@@ -22,10 +28,21 @@ systemd_unit_file(openwsman_unit_file_t) + # + # openwsman local policy + # ++ ++allow openwsman_t self:capability setuid; ++ + 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 }; ++allow openwsman_t self:tcp_socket { create_socket_perms accept listen }; ++ ++manage_files_pattern(openwsman_t, openwsman_tmp_t, openwsman_tmp_t) ++manage_dirs_pattern(openwsman_t, openwsman_tmp_t, openwsman_tmp_t) ++files_tmp_filetrans(openwsman_t, openwsman_tmp_t, { dir file }) ++ ++manage_files_pattern(openwsman_t, openwsman_tmpfs_t, openwsman_tmpfs_t) ++manage_dirs_pattern(openwsman_t, openwsman_tmpfs_t, openwsman_tmpfs_t) ++fs_tmpfs_filetrans(openwsman_t, openwsman_tmpfs_t, { dir file }) + + manage_files_pattern(openwsman_t, openwsman_log_t, openwsman_log_t) + logging_log_filetrans(openwsman_t, openwsman_log_t, { file }) +@@ -34,10 +51,24 @@ 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) ++auth_domtrans_chkpwd(openwsman_t) + ++corenet_tcp_connect_pegasus_https_port(openwsman_t) + corenet_tcp_bind_vnc_port(openwsman_t) ++corenet_tcp_bind_http_port(openwsman_t) + + dev_read_urand(openwsman_t) + + logging_send_syslog_msg(openwsman_t) ++logging_send_audit_msgs(openwsman_t) ++ ++optional_policy(` ++ sblim_stream_connect_sfcbd(openwsman_t) ++ sblim_rw_semaphores_sfcbd(openwsman_t) ++ sblim_getattr_exec_sfcbd(openwsman_t) ++') ++ ++optional_policy(` ++ unconfined_domain(openwsman_t) ++') + +diff --git a/passenger.if b/passenger.if +index 0ec51d4..2d8335f 100644 +--- a/passenger.if ++++ b/passenger.if +@@ -159,3 +159,22 @@ interface(`passenger_manage_tmp_files',` + manage_files_pattern($1, passenger_tmp_t, passenger_tmp_t) + manage_dirs_pattern($1, passenger_tmp_t, passenger_tmp_t) + ') ++ ++######################################## ++## ++## Send kill signals to passenger. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`passenger_kill',` ++ gen_require(` ++ type passenger_t; ++ ') ++ ++ allow $1 passenger_t:process sigkill; ++') ++ +diff --git a/pegasus.te b/pegasus.te +index 6c3afa0..37539ec 100644 +--- a/pegasus.te ++++ b/pegasus.te +@@ -203,6 +203,8 @@ optional_policy(` + # pegasus openlmi service local policy + # + ++fs_getattr_all_fs(pegasus_openlmi_admin_t) ++ + init_manage_transient_unit(pegasus_openlmi_admin_t) + init_disable_services(pegasus_openlmi_admin_t) + init_enable_services(pegasus_openlmi_admin_t) +@@ -217,6 +219,9 @@ systemd_manage_all_unit_lnk_files(pegasus_openlmi_admin_t) + + allow pegasus_openlmi_service_t self:udp_socket create_socket_perms; + ++logging_read_syslog_pid(pegasus_openlmi_admin_t) ++logging_read_generic_logs(pegasus_openlmi_admin_t) ++ + optional_policy(` + dbus_system_bus_client(pegasus_openlmi_admin_t) + +diff --git a/puppet.fc b/puppet.fc +index 8c0b242..cad91e2 100644 +--- a/puppet.fc ++++ b/puppet.fc +@@ -1,11 +1,19 @@ +-/etc/puppet(/.*)? gen_context(system_u:object_r:puppet_etc_t,s0) ++/etc/puppet(/.*)? gen_context(system_u:object_r:puppet_etc_t,s0) + +-/etc/rc\.d/init\.d/puppet -- gen_context(system_u:object_r:puppet_initrc_exec_t,s0) ++/etc/rc\.d/init\.d/puppet -- gen_context(system_u:object_r:puppetagent_initrc_exec_t,s0) + /etc/rc\.d/init\.d/puppetmaster -- gen_context(system_u:object_r:puppetmaster_initrc_exec_t,s0) + +-/usr/sbin/puppetca -- gen_context(system_u:object_r:puppetca_exec_t,s0) +-/usr/sbin/puppetd -- gen_context(system_u:object_r:puppet_exec_t,s0) +-/usr/sbin/puppetmasterd -- gen_context(system_u:object_r:puppetmaster_exec_t,s0) ++#helper scripts ++/usr/bin/start-puppet-agent -- gen_context(system_u:object_r:puppetagent_exec_t,s0) ++/usr/bin/start-puppet-master -- gen_context(system_u:object_r:puppetmaster_exec_t,s0) ++ ++/usr/bin/puppetca -- gen_context(system_u:object_r:puppetca_exec_t,s0) ++/usr/bin/puppetd -- gen_context(system_u:object_r:puppetagent_exec_t,s0) ++/usr/bin/puppetmasterd -- gen_context(system_u:object_r:puppetmaster_exec_t,s0) ++ ++/usr/sbin/puppetca -- gen_context(system_u:object_r:puppetca_exec_t,s0) ++/usr/sbin/puppetd -- gen_context(system_u:object_r:puppetagent_exec_t,s0) ++/usr/sbin/puppetmasterd -- gen_context(system_u:object_r:puppetmaster_exec_t,s0) + + /var/lib/puppet(/.*)? gen_context(system_u:object_r:puppet_var_lib_t,s0) + /var/log/puppet(/.*)? gen_context(system_u:object_r:puppet_log_t,s0) +diff --git a/puppet.te b/puppet.te +index a375475..0903e67 100644 +--- a/puppet.te ++++ b/puppet.te +@@ -1,4 +1,4 @@ +-policy_module(puppet, 1.3.0) ++policy_module(puppet, 1.4.0) + + ######################################## + # +@@ -11,7 +11,7 @@ policy_module(puppet, 1.3.0) + ## types. + ##

+ ## +-gen_tunable(puppet_manage_all_files, false) ++gen_tunable(puppetagent_manage_all_files, false) + + ## + ##

+@@ -20,15 +20,18 @@ gen_tunable(puppet_manage_all_files, false) + ## + gen_tunable(puppetmaster_use_db, false) + +-type puppet_t; +-type puppet_exec_t; +-init_daemon_domain(puppet_t, puppet_exec_t) ++type puppetagent_t; ++type puppetagent_exec_t; ++typealias puppetagent_exec_t alias puppet_exec_t; ++typealias puppetagent_t alias puppet_t; ++init_daemon_domain(puppetagent_t, puppetagent_exec_t) + + type puppet_etc_t; + files_config_file(puppet_etc_t) + +-type puppet_initrc_exec_t; +-init_script_file(puppet_initrc_exec_t) ++type puppetagent_initrc_exec_t; ++typealias puppetagent_initrc_exec_t alias puppet_initrc_exec_t; ++init_script_file(puppetagent_initrc_exec_t) + + type puppet_log_t; + logging_log_file(puppet_log_t) +@@ -62,205 +65,142 @@ files_tmp_file(puppetmaster_tmp_t) + # Puppet personal policy + # + +-allow puppet_t self:capability { fowner fsetid setuid setgid dac_override sys_nice sys_tty_config }; +-allow puppet_t self:process { signal signull getsched setsched }; +-allow puppet_t self:fifo_file rw_fifo_file_perms; +-allow puppet_t self:netlink_route_socket create_netlink_socket_perms; +-allow puppet_t self:tcp_socket create_stream_socket_perms; +-allow puppet_t self:udp_socket create_socket_perms; ++allow puppetagent_t self:capability { fowner fsetid setuid setgid dac_override sys_nice sys_tty_config }; ++allow puppetagent_t self:process { signal signull getsched setsched }; ++allow puppetagent_t self:fifo_file rw_fifo_file_perms; ++allow puppetagent_t self:netlink_route_socket create_netlink_socket_perms; ++allow puppetagent_t self:tcp_socket create_stream_socket_perms; ++allow puppetagent_t self:udp_socket create_socket_perms; + +-read_files_pattern(puppet_t, puppet_etc_t, puppet_etc_t) ++read_files_pattern(puppetagent_t, puppet_etc_t, puppet_etc_t) + +-manage_dirs_pattern(puppet_t, puppet_var_lib_t, puppet_var_lib_t) +-manage_files_pattern(puppet_t, puppet_var_lib_t, puppet_var_lib_t) +-files_search_var_lib(puppet_t) ++manage_dirs_pattern(puppetagent_t, puppet_var_lib_t, puppet_var_lib_t) ++manage_files_pattern(puppetagent_t, puppet_var_lib_t, puppet_var_lib_t) ++files_search_var_lib(puppetagent_t) + +-manage_dirs_pattern(puppet_t, puppet_var_run_t, puppet_var_run_t) +-manage_files_pattern(puppet_t, puppet_var_run_t, puppet_var_run_t) +-files_pid_filetrans(puppet_t, puppet_var_run_t, { file dir }) ++manage_dirs_pattern(puppetagent_t, puppet_var_run_t, puppet_var_run_t) ++manage_files_pattern(puppetagent_t, puppet_var_run_t, puppet_var_run_t) ++files_pid_filetrans(puppetagent_t, puppet_var_run_t, { file dir }) + +-create_dirs_pattern(puppet_t, var_log_t, puppet_log_t) +-create_files_pattern(puppet_t, puppet_log_t, puppet_log_t) +-append_files_pattern(puppet_t, puppet_log_t, puppet_log_t) +-logging_log_filetrans(puppet_t, puppet_log_t, { file dir }) ++create_dirs_pattern(puppetagent_t, var_log_t, puppet_log_t) ++create_files_pattern(puppetagent_t, puppet_log_t, puppet_log_t) ++append_files_pattern(puppetagent_t, puppet_log_t, puppet_log_t) ++logging_log_filetrans(puppetagent_t, puppet_log_t, { file dir }) + +-manage_dirs_pattern(puppet_t, puppet_tmp_t, puppet_tmp_t) +-manage_files_pattern(puppet_t, puppet_tmp_t, puppet_tmp_t) +-files_tmp_filetrans(puppet_t, puppet_tmp_t, { file dir }) ++manage_dirs_pattern(puppetagent_t, puppet_tmp_t, puppet_tmp_t) ++manage_files_pattern(puppetagent_t, puppet_tmp_t, puppet_tmp_t) ++files_tmp_filetrans(puppetagent_t, puppet_tmp_t, { file dir }) + +-kernel_dontaudit_search_sysctl(puppet_t) +-kernel_dontaudit_search_kernel_sysctl(puppet_t) +-kernel_read_system_state(puppet_t) +-kernel_read_crypto_sysctls(puppet_t) +-kernel_read_kernel_sysctls(puppet_t) ++kernel_dontaudit_search_sysctl(puppetagent_t) ++kernel_dontaudit_search_kernel_sysctl(puppetagent_t) ++kernel_read_system_state(puppetagent_t) ++kernel_read_crypto_sysctls(puppetagent_t) ++kernel_read_kernel_sysctls(puppetagent_t) + +-corecmd_read_all_executables(puppet_t) +-corecmd_dontaudit_access_all_executables(puppet_t) +-corecmd_exec_bin(puppet_t) +-corecmd_exec_shell(puppet_t) ++corecmd_read_all_executables(puppetagent_t) ++corecmd_dontaudit_access_all_executables(puppetagent_t) ++corecmd_exec_bin(puppetagent_t) ++corecmd_exec_shell(puppetagent_t) + +-corenet_all_recvfrom_netlabel(puppet_t) +-corenet_tcp_sendrecv_generic_if(puppet_t) +-corenet_tcp_sendrecv_generic_node(puppet_t) +-corenet_tcp_bind_generic_node(puppet_t) +-corenet_tcp_connect_puppet_port(puppet_t) +-corenet_sendrecv_puppet_client_packets(puppet_t) ++corenet_all_recvfrom_netlabel(puppetagent_t) ++corenet_tcp_sendrecv_generic_if(puppetagent_t) ++corenet_tcp_sendrecv_generic_node(puppetagent_t) ++corenet_tcp_bind_generic_node(puppetagent_t) ++corenet_tcp_connect_puppet_port(puppetagent_t) ++corenet_sendrecv_puppet_client_packets(puppetagent_t) + +-dev_read_rand(puppet_t) +-dev_read_sysfs(puppet_t) +-dev_read_urand(puppet_t) ++dev_read_rand(puppetagent_t) ++dev_read_sysfs(puppetagent_t) ++dev_read_urand(puppetagent_t) + +-domain_read_all_domains_state(puppet_t) +-domain_interactive_fd(puppet_t) ++domain_read_all_domains_state(puppetagent_t) ++domain_interactive_fd(puppetagent_t) ++domain_named_filetrans(puppetagent_t) + +-files_manage_config_files(puppet_t) +-files_manage_config_dirs(puppet_t) +-files_manage_etc_dirs(puppet_t) +-files_manage_etc_files(puppet_t) +-files_read_usr_symlinks(puppet_t) +-files_relabel_config_dirs(puppet_t) +-files_relabel_config_files(puppet_t) ++files_manage_config_files(puppetagent_t) ++files_manage_config_dirs(puppetagent_t) ++files_manage_etc_dirs(puppetagent_t) ++files_manage_etc_files(puppetagent_t) ++files_read_usr_symlinks(puppetagent_t) ++files_relabel_config_dirs(puppetagent_t) ++files_relabel_config_files(puppetagent_t) + +-selinux_set_all_booleans(puppet_t) +-selinux_set_generic_booleans(puppet_t) +-selinux_validate_context(puppet_t) ++selinux_set_all_booleans(puppetagent_t) ++selinux_set_generic_booleans(puppetagent_t) ++selinux_validate_context(puppetagent_t) + +-term_dontaudit_getattr_unallocated_ttys(puppet_t) +-term_dontaudit_getattr_all_ttys(puppet_t) ++term_dontaudit_getattr_unallocated_ttys(puppetagent_t) ++term_dontaudit_getattr_all_ttys(puppetagent_t) + +-auth_use_nsswitch(puppet_t) ++auth_use_nsswitch(puppetagent_t) + +-init_all_labeled_script_domtrans(puppet_t) +-init_domtrans_script(puppet_t) +-init_read_utmp(puppet_t) +-init_signull_script(puppet_t) ++init_all_labeled_script_domtrans(puppetagent_t) ++init_domtrans_script(puppetagent_t) ++init_read_utmp(puppetagent_t) ++init_signull_script(puppetagent_t) + +-logging_send_syslog_msg(puppet_t) ++logging_send_syslog_msg(puppetagent_t) + +-miscfiles_read_hwdata(puppet_t) ++miscfiles_read_hwdata(puppetagent_t) + +-seutil_domtrans_setfiles(puppet_t) +-seutil_domtrans_semanage(puppet_t) +-seutil_read_file_contexts(puppet_t) ++seutil_domtrans_setfiles(puppetagent_t) ++seutil_domtrans_semanage(puppetagent_t) ++seutil_read_file_contexts(puppetagent_t) + +-sysnet_run_ifconfig(puppet_t, system_r) ++sysnet_run_ifconfig(puppetagent_t, system_r) + +-usermanage_access_check_groupadd(puppet_t) +-usermanage_access_check_passwd(puppet_t) +-usermanage_access_check_useradd(puppet_t) ++usermanage_access_check_groupadd(puppetagent_t) ++usermanage_access_check_passwd(puppetagent_t) ++usermanage_access_check_useradd(puppetagent_t) + +-tunable_policy(`puppet_manage_all_files',` +- files_manage_non_security_files(puppet_t) ++tunable_policy(`puppetagent_manage_all_files',` ++ files_manage_non_security_files(puppetagent_t) + ') + + optional_policy(` +- cfengine_read_lib_files(puppet_t) ++ mysql_stream_connect(puppetagent_t) + ') + + optional_policy(` +- consoletype_exec(puppet_t) ++ postgresql_stream_connect(puppetagent_t) + ') + + optional_policy(` +- hostname_exec(puppet_t) ++ cfengine_read_lib_files(puppetagent_t) + ') + + optional_policy(` +- mount_domtrans(puppet_t) ++ consoletype_exec(puppetagent_t) + ') + + optional_policy(` +- mta_send_mail(puppet_t) ++ hostname_exec(puppetagent_t) + ') + + optional_policy(` +- portage_domtrans(puppet_t) +- portage_domtrans_fetch(puppet_t) +- portage_domtrans_gcc_config(puppet_t) ++ mount_domtrans(puppetagent_t) + ') + + optional_policy(` +- files_rw_var_files(puppet_t) +- +- rpm_domtrans(puppet_t) +- rpm_manage_db(puppet_t) +- rpm_manage_log(puppet_t) +-') +- +-optional_policy(` +- unconfined_domain(puppet_t) +-') +- +-optional_policy(` +- auth_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- alsa_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- bootloader_filetrans_config(puppet_t) +-') +- +-optional_policy(` +- devicekit_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- dnsmasq_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- kerberos_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- libs_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- miscfiles_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- mta_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- modules_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- networkmanager_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- nx_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- postfix_filetrans_named_content(puppet_t) +-') +- +-optional_policy(` +- openshift_initrc_domtrans(puppet_t) ++ mta_send_mail(puppetagent_t) + ') + + optional_policy(` +- quota_filetrans_named_content(puppet_t) ++ portage_domtrans(puppetagent_t) ++ portage_domtrans_fetch(puppetagent_t) ++ portage_domtrans_gcc_config(puppetagent_t) + ') + + optional_policy(` +- sysnet_filetrans_named_content(puppet_t) +-') ++ files_rw_var_files(puppetagent_t) + +-optional_policy(` +- virt_filetrans_home_content(puppet_t) ++ rpm_domtrans(puppetagent_t) ++ rpm_manage_db(puppetagent_t) ++ rpm_manage_log(puppetagent_t) + ') + + optional_policy(` +- ssh_filetrans_admin_home_content(puppet_t) ++ unconfined_domain_noaudit(puppetagent_t) + ') + + ######################################## +diff --git a/quantum.te b/quantum.te +index 52bad99..156e9af 100644 +--- a/quantum.te ++++ b/quantum.te +@@ -29,13 +29,17 @@ systemd_unit_file(neutron_unit_file_t) + # Local policy + # + +-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:capability { dac_override sys_ptrace kill setgid setuid sys_resource net_admin sys_admin net_raw net_bind_service}; ++allow neutron_t self:capability2 block_suspend; ++allow neutron_t self:process { setsched setrlimit setcap signal_perms }; ++ + 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 }; + allow neutron_t self:netlink_route_socket rw_netlink_socket_perms; ++allow neutron_t self:rawip_socket create_socket_perms; ++allow neutron_t self:packet_socket create_socket_perms; + + manage_dirs_pattern(neutron_t, neutron_log_t, neutron_log_t) + append_files_pattern(neutron_t, neutron_log_t, neutron_log_t) +@@ -44,18 +48,21 @@ setattr_files_pattern(neutron_t, neutron_log_t, neutron_log_t) + logging_log_filetrans(neutron_t, neutron_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(neutron_t, neutron_tmp_t, neutron_tmp_t) ++files_tmp_filetrans(neutron_t, neutron_tmp_t, { file dir }) + + 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) ++manage_sock_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(neutron_t, neutron_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) ++kernel_rw_kernel_sysctl(neutron_t) ++kernel_rw_net_sysctls(neutron_t) + + corecmd_exec_shell(neutron_t) + corecmd_exec_bin(neutron_t) +@@ -71,7 +78,9 @@ 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) ++corenet_tcp_connect_osapi_compute_port(neutron_t) + ++domain_read_all_domains_state(neutron_t) + domain_named_filetrans(neutron_t) + + dev_read_sysfs(neutron_t) +@@ -82,6 +91,8 @@ dev_unmount_sysfs_fs(neutron_t) + + files_mounton_non_security(neutron_t) + ++fs_getattr_all_fs(neutron_t) ++ + auth_use_nsswitch(neutron_t) + + libs_exec_ldconfig(neutron_t) +@@ -89,6 +100,9 @@ libs_exec_ldconfig(neutron_t) + logging_send_audit_msgs(neutron_t) + logging_send_syslog_msg(neutron_t) + ++netutils_exec(neutron_t) ++ ++# need to stay in neutron + sysnet_exec_ifconfig(neutron_t) + sysnet_manage_ifconfig_run(neutron_t) + sysnet_filetrans_named_content_ifconfig(neutron_t) +@@ -109,16 +123,19 @@ optional_policy(` + ') + + optional_policy(` ++ modutils_domtrans_insmod(neutron_t) ++') ++ ++optional_policy(` + mysql_stream_connect(neutron_t) ++ mysql_read_db_lnk_files(neutron_t) + mysql_read_config(neutron_t) +- + mysql_tcp_connect(neutron_t) + ') + + optional_policy(` + postgresql_stream_connect(neutron_t) + postgresql_unpriv_client(neutron_t) +- + postgresql_tcp_connect(neutron_t) + ') + +@@ -129,4 +146,8 @@ optional_policy(` + + optional_policy(` + sudo_exec(neutron_t) ++') ++ ++optional_policy(` ++ udev_domtrans(neutron_t) + ') +diff --git a/rabbitmq.te b/rabbitmq.te +index 7d5630f..9fb98a1 100644 +--- a/rabbitmq.te ++++ b/rabbitmq.te +@@ -87,6 +87,7 @@ 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) ++corenet_tcp_connect_http_port(rabbitmq_beam_t) + + domain_read_all_domains_state(rabbitmq_beam_t) + +@@ -127,7 +128,7 @@ allow rabbitmq_epmd_t self:fifo_file rw_fifo_file_perms; + allow rabbitmq_epmd_t self:tcp_socket create_stream_socket_perms; + allow rabbitmq_epmd_t self:unix_stream_socket { accept listen }; + +-allow rabbitmq_epmd_t rabbitmq_var_log_t:file append_file_perms; ++allow rabbitmq_epmd_t rabbitmq_var_log_t:file manage_file_perms; + + manage_files_pattern(rabbitmq_beam_t, rabbitmq_var_log_t, rabbitmq_var_log_t) + +diff --git a/rhcs.te b/rhcs.te +index 4fd3b77..503838b 100644 +--- a/rhcs.te ++++ b/rhcs.te +@@ -593,6 +593,7 @@ logging_send_syslog_msg(groupd_t) + allow haproxy_t self:capability { dac_override kill }; + + allow haproxy_t self:capability { chown setgid setuid sys_chroot sys_resource }; ++allow haproxy_t self:capability2 block_suspend; + 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; +diff --git a/rhsmcertd.te b/rhsmcertd.te +index d193f7a..87038e7 100644 +--- a/rhsmcertd.te ++++ b/rhsmcertd.te +@@ -53,6 +53,7 @@ kernel_read_system_state(rhsmcertd_t) + kernel_read_sysctl(rhsmcertd_t) + + corenet_tcp_connect_http_port(rhsmcertd_t) ++corenet_tcp_connect_http_cache_port(rhsmcertd_t) + corenet_tcp_connect_squid_port(rhsmcertd_t) + + corecmd_exec_bin(rhsmcertd_t) +diff --git a/rsync.te b/rsync.te +index d7db2d9..7a6ca6c 100644 +--- a/rsync.te ++++ b/rsync.te +@@ -170,4 +170,6 @@ auth_can_read_shadow_passwords(rsync_t) + + optional_policy(` + swift_manage_data_files(rsync_t) ++ swift_manage_lock(rsync_t) ++ swift_filetrans_named_lock(rsync_t) + ') +diff --git a/sandbox.if b/sandbox.if +index 89bc443..a2cb772 100644 +--- a/sandbox.if ++++ b/sandbox.if +@@ -22,14 +22,42 @@ interface(`sandbox_transition',` + attribute sandbox_domain; + ') + +- allow $1 sandbox_domain:process transition; +- dontaudit $1 sandbox_domain:process { noatsecure siginh rlimitinh }; +- role $2 types sandbox_domain; +- 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; ++ sandbox_dyntransition($1) #885288 ++ allow $1 sandbox_domain:process transition; ++ dontaudit $1 sandbox_domain:process { noatsecure siginh rlimitinh }; ++ ++ role $2 types sandbox_domain; ++ ++ 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; ++') ++ ++######################################## ++##

++## Execute sandbox in the sandbox domain, and ++## allow the specified role the sandbox domain. ++## ++## ++## ++## Domain allowed access ++## ++## ++## ++## ++## The role to be allowed the sandbox domain. ++## ++## ++# ++interface(`sandbox_dyntransition',` ++ gen_require(` ++ attribute sandbox_domain; ++ ') ++ ++ allow $1 sandbox_domain:process dyntransition; + ') + + ######################################## +diff --git a/sandboxX.if b/sandboxX.if +index 3258f45..03bdcef 100644 +--- a/sandboxX.if ++++ b/sandboxX.if +@@ -26,6 +26,7 @@ interface(`sandbox_x_transition',` + ') + + allow $1 sandbox_x_domain:process { signal_perms transition }; ++ allow $1 sandbox_x_domain:process dyntransition; + dontaudit $1 sandbox_x_domain:process { noatsecure siginh rlimitinh }; + allow sandbox_x_domain $1:process { sigchld signull }; + allow { sandbox_x_domain sandbox_xserver_t } $1:fd use; +diff --git a/sblim.if b/sblim.if +index d4aa009..562666e 100644 +--- a/sblim.if ++++ b/sblim.if +@@ -86,6 +86,84 @@ interface(`sblim_filetrans_named_content',` + + ######################################## + ## ++## Connect to sblim_sfcb over a unix stream socket. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`sblim_stream_connect_sfcbd',` ++ gen_require(` ++ type sblim_sfcb_t, sblim_var_lib_t; ++ type sblim_tmp_t; ++ ') ++ ++ files_search_pids($1) ++ stream_connect_pattern($1, sblim_var_lib_t, sblim_var_lib_t, sblim_sfcb_t) ++ stream_connect_pattern($1, sblim_var_lib_t, sblim_tmp_t, sblim_tmp_t) ++') ++ ++####################################### ++## ++## Getattr on sblim executable. ++## ++## ++## ++## Domain allowed to transition. ++## ++## ++# ++interface(`sblim_getattr_exec_sfcbd',` ++ gen_require(` ++ type sblim_sfcbd_exec_t; ++ ') ++ ++ allow $1 sblim_sfcbd_exec_t:file getattr; ++') ++ ++ ++######################################## ++## ++## Connect to sblim_sfcb over a unix stream socket. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`sblim_stream_connect_sfcb',` ++ gen_require(` ++ type sblim_sfcb_t, sblim_var_lib_t; ++ ') ++ ++ files_search_pids($1) ++ stream_connect_pattern($1, sblim_var_lib_t, sblim_var_lib_t, sblim_sfcb_t) ++') ++ ++####################################### ++## ++## Allow read and write access to sblim semaphores. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`sblim_rw_semaphores_sfcbd',` ++ gen_require(` ++ type sblim_sfcbd_t; ++ ') ++ ++ allow $1 sblim_sfcbd_t:sem rw_sem_perms; ++') ++ ++ ++######################################## ++## + ## All of the rules required to administrate + ## an gatherd environment + ## +diff --git a/sblim.te b/sblim.te +index 20f5040..21c15bb 100644 +--- a/sblim.te ++++ b/sblim.te +@@ -157,9 +157,19 @@ auth_use_nsswitch(sblim_sfcbd_t) + + corenet_tcp_bind_pegasus_http_port(sblim_sfcbd_t) + corenet_tcp_connect_pegasus_http_port(sblim_sfcbd_t) ++corenet_tcp_bind_pegasus_https_port(sblim_sfcbd_t) ++corenet_tcp_connect_pegasus_https_port(sblim_sfcbd_t) ++ ++corecmd_exec_shell(sblim_sfcbd_t) ++corecmd_exec_bin(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) ++ ++optional_policy(` ++ rpm_exec(sblim_sfcbd_t) ++ rpm_dontaudit_manage_db(sblim_sfcbd_t) ++') +diff --git a/sensord.fc b/sensord.fc +index 97926d2..9be989a 100644 +--- a/sensord.fc ++++ b/sensord.fc +@@ -4,6 +4,6 @@ + + /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/log/sensor.* 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/slocate.te b/slocate.te +index 8417705..669d253 100644 +--- a/slocate.te ++++ b/slocate.te +@@ -61,3 +61,8 @@ ifdef(`enable_mls',` + optional_policy(` + cron_system_entry(locate_t, locate_exec_t) + ') ++ ++optional_policy(` ++ mock_getattr_lib(locate_t) ++') ++ +diff --git a/snapper.fc b/snapper.fc +index 660fcd2..d1d72f2 100644 +--- a/snapper.fc ++++ b/snapper.fc +@@ -6,3 +6,5 @@ HOME_DIR/\.snapshots -d gen_context(system_u:object_r:snapperd_home_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) ++ ++/mnt/(.*/)?.snapshots(/.*)? gen_context(system_u:object_r:snapperd_data_t,s0) +diff --git a/spamassassin.te b/spamassassin.te +index 32f670e..e8531d9 100644 +--- a/spamassassin.te ++++ b/spamassassin.te +@@ -275,12 +275,17 @@ manage_lnk_files_pattern(spamc_t, spamc_home_t, spamc_home_t) + manage_fifo_files_pattern(spamc_t, spamc_home_t, spamc_home_t) + manage_sock_files_pattern(spamc_t, spamc_home_t, spamc_home_t) + userdom_append_user_home_content_files(spamc_t) ++spamassassin_filetrans_home_content(spamc_t) ++spamassassin_filetrans_admin_home_content(spamc_t) + # for /root/.pyzor + allow spamc_t self:capability dac_override; + + list_dirs_pattern(spamc_t, spamd_var_lib_t, spamd_var_lib_t) + read_files_pattern(spamc_t, spamd_var_lib_t, spamd_var_lib_t) + ++read_files_pattern(spamc_t, spamd_spool_t, spamd_spool_t) ++list_dirs_pattern(spamc_t, spamd_spool_t, spamd_spool_t) ++ + # Allow connecting to a local spamd + allow spamc_t spamd_t:unix_stream_socket connectto; + allow spamc_t spamd_tmp_t:sock_file rw_sock_file_perms; +diff --git a/sssd.te b/sssd.te +index fb39837..eb8bb88 100644 +--- a/sssd.te ++++ b/sssd.te +@@ -68,6 +68,7 @@ kernel_request_load_module(sssd_t) + corenet_udp_bind_generic_port(sssd_t) + corenet_dontaudit_udp_bind_all_ports(sssd_t) + corenet_tcp_connect_kerberos_password_port(sssd_t) ++corenet_tcp_connect_smbd_port(sssd_t) + + corecmd_exec_bin(sssd_t) + +diff --git a/stapserver.te b/stapserver.te +index e472397..6aeecac 100644 +--- a/stapserver.te ++++ b/stapserver.te +@@ -72,6 +72,7 @@ files_list_tmp(stapserver_t) + files_search_kernel_modules(stapserver_t) + + fs_search_cgroup_dirs(stapserver_t) ++fs_getattr_all_fs(stapserver_t) + + auth_use_nsswitch(stapserver_t) + +diff --git a/swift.fc b/swift.fc +index 744f0ce..b07d112 100644 +--- a/swift.fc ++++ b/swift.fc +@@ -15,8 +15,11 @@ + /usr/bin/swift-object-server -- gen_context(system_u:object_r:swift_exec_t,s0) + /usr/bin/swift-object-updater -- gen_context(system_u:object_r:swift_exec_t,s0) + ++/usr/bin/swift-proxy-server -- gen_context(system_u:object_r:swift_exec_t,s0) ++ + /usr/lib/systemd/system/openstack-swift.* -- gen_context(system_u:object_r:swift_unit_file_t,s0) + ++/var/lock/swift.* gen_context(system_u:object_r:swift_lock_t,s0) + /var/cache/swift(/.*)? -- gen_context(system_u:object_r:swift_var_cache_t,s0) + /var/run/swift(/.*)? -- gen_context(system_u:object_r:swift_var_run_t,s0) + +diff --git a/swift.if b/swift.if +index df82c36..6a1f575 100644 +--- a/swift.if ++++ b/swift.if +@@ -59,6 +59,43 @@ interface(`swift_manage_data_files',` + manage_dirs_pattern($1, swift_data_t, swift_data_t) + ') + ++##################################### ++## ++## Read and write swift lock files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`swift_manage_lock',` ++ gen_require(` ++ type swift_lock_t; ++ ') ++ ++ files_search_locks($1) ++ manage_files_pattern($1, swift_lock_t, swift_lock_t) ++') ++ ++####################################### ++## ++## Transition content labels to swift named content ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`swift_filetrans_named_lock',` ++ gen_require(` ++ type swift_lock_t; ++ ') ++ ++ files_lock_filetrans($1, swift_lock_t, file, "swift_server.lock") ++') ++ + ######################################## + ## + ## Execute swift server in the swift domain. +diff --git a/swift.te b/swift.te +index 7bef550..7fce837 100644 +--- a/swift.te ++++ b/swift.te +@@ -9,8 +9,14 @@ type swift_t; + type swift_exec_t; + init_daemon_domain(swift_t, swift_exec_t) + ++type swift_lock_t; ++files_lock_file(swift_lock_t) ++ + type swift_tmp_t; +-files_tmpfs_file(swift_tmp_t) ++files_tmp_file(swift_tmp_t) ++ ++type swift_tmpfs_t; ++files_tmpfs_file(swift_tmpfs_t) + + type swift_var_cache_t; + files_type(swift_var_cache_t) +@@ -36,10 +42,18 @@ allow swift_t self:tcp_socket create_stream_socket_perms; + 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_lock_t, swift_lock_t) ++manage_files_pattern(swift_t, swift_lock_t, swift_lock_t) ++files_lock_filetrans(swift_t, swift_lock_t, { dir file }) ++ + 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_tmpfs_t, swift_tmpfs_t) ++manage_files_pattern(swift_t, swift_tmpfs_t, swift_tmpfs_t) ++fs_tmpfs_filetrans(swift_t, swift_tmpfs_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) +@@ -59,7 +73,12 @@ kernel_dgram_send(swift_t) + kernel_read_system_state(swift_t) + kernel_read_network_state(swift_t) + ++# bug in swift ++corenet_tcp_bind_xserver_port(swift_t) ++corenet_tcp_bind_http_cache_port(swift_t) ++ + corecmd_exec_shell(swift_t) ++corecmd_exec_bin(swift_t) + + dev_read_urand(swift_t) + +@@ -67,6 +86,8 @@ domain_use_interactive_fds(swift_t) + + files_dontaudit_search_home(swift_t) + ++fs_getattr_all_fs(swift_t) ++ + auth_use_nsswitch(swift_t) + + libs_exec_ldconfig(swift_t) +@@ -77,4 +98,5 @@ userdom_dontaudit_search_user_home_dirs(swift_t) + + optional_policy(` + rpm_exec(swift_t) ++ rpm_dontaudit_manage_db(swift_t) + ') +diff --git a/tgtd.te b/tgtd.te +index 60f4ce9..704a0e2 100644 +--- a/tgtd.te ++++ b/tgtd.te +@@ -56,6 +56,7 @@ files_pid_filetrans(tgtd_t,tgtd_var_run_t, { file sock_file }) + + kernel_read_system_state(tgtd_t) + kernel_read_fs_sysctls(tgtd_t) ++kernel_read_network_state(tgtd_t) + + corenet_all_recvfrom_netlabel(tgtd_t) + corenet_tcp_sendrecv_generic_if(tgtd_t) +diff --git a/ulogd.te b/ulogd.te +index bd23e7f..022c367 100644 +--- a/ulogd.te ++++ b/ulogd.te +@@ -44,7 +44,7 @@ create_files_pattern(ulogd_t, ulogd_var_log_t, ulogd_var_log_t) + setattr_files_pattern(ulogd_t, ulogd_var_log_t, ulogd_var_log_t) + logging_log_filetrans(ulogd_t, ulogd_var_log_t, file) + +- ++kernel_request_load_module(ulogd_t) + + sysnet_dns_name_resolve(ulogd_t) + +diff --git a/virt.te b/virt.te +index 57af4d0..1df2084 100644 +--- a/virt.te ++++ b/virt.te +@@ -522,7 +522,7 @@ tunable_policy(`virt_use_nfs',` + ') + + tunable_policy(`virt_use_samba',` +- fs_manage_nfs_files(virtd_t) ++ fs_manage_cifs_dirs(virtd_t) + fs_manage_cifs_files(virtd_t) + fs_read_cifs_symlinks(virtd_t) + ') +@@ -1168,6 +1168,7 @@ allow svirt_sandbox_domain self:msgq create_msgq_perms; + allow svirt_sandbox_domain self:unix_stream_socket { create_stream_socket_perms connectto }; + allow svirt_sandbox_domain self:unix_dgram_socket { sendto create_socket_perms }; + allow svirt_sandbox_domain self:passwd rootok; ++allow svirt_sandbox_domain self:filesystem associate; + + tunable_policy(`deny_ptrace',`',` + allow svirt_sandbox_domain self:process ptrace; +@@ -1256,11 +1257,16 @@ optional_policy(` + docker_manage_lib_files(svirt_lxc_net_t) + docker_manage_lib_dirs(svirt_lxc_net_t) + docker_read_share_files(svirt_sandbox_domain) ++ docker_exec_lib(svirt_sandbox_domain) + docker_lib_filetrans(svirt_sandbox_domain,svirt_sandbox_file_t, sock_file) + docker_use_ptys(svirt_sandbox_domain) + ') + + optional_policy(` ++ gear_read_pid_files(svirt_sandbox_domain) ++') ++ ++optional_policy(` + mta_dontaudit_read_spool_symlinks(svirt_sandbox_domain) + ') + +@@ -1283,8 +1289,8 @@ tunable_policy(`virt_use_nfs',` + ') + + tunable_policy(`virt_use_samba',` +- fs_manage_nfs_files(svirt_sandbox_domain) + fs_manage_cifs_files(svirt_sandbox_domain) ++ fs_manage_cifs_dirs(svirt_sandbox_domain) + fs_read_cifs_symlinks(svirt_sandbox_domain) + ') + +@@ -1671,5 +1677,3 @@ optional_policy(` + optional_policy(` + systemd_dbus_chat_logind(sandbox_net_domain) + ') +- +- +diff --git a/zabbix.te b/zabbix.te +index 614e66c..551c4e9 100644 +--- a/zabbix.te ++++ b/zabbix.te +@@ -125,9 +125,9 @@ zabbix_agent_tcp_connect(zabbix_t) + logging_send_syslog_msg(zabbix_t) + + tunable_policy(`zabbix_can_network',` +- corenet_sendrecv_all_client_packets(zabbix_t) +- corenet_tcp_connect_all_ports(zabbix_t) +- corenet_tcp_sendrecv_all_ports(zabbix_t) ++ corenet_sendrecv_all_client_packets(zabbix_domain) ++ corenet_tcp_connect_all_ports(zabbix_domain) ++ corenet_tcp_sendrecv_all_ports(zabbix_domain) + ') + + optional_policy(` diff --git a/SPECS/selinux-policy.spec b/SPECS/selinux-policy.spec index e363177..f478c9f 100644 --- a/SPECS/selinux-policy.spec +++ b/SPECS/selinux-policy.spec @@ -19,12 +19,14 @@ Summary: SELinux policy configuration Name: selinux-policy Version: 3.12.1 -Release: 153%{?dist} +Release: 153%{?dist}.10 License: GPLv2+ Group: System Environment/Base Source: serefpolicy-%{version}.tgz patch: policy-f20-base.patch patch1: policy-f20-contrib.patch +patch2: policy-rhel-7.0.z-base.patch +patch3: policy-rhel-7.0.z-contrib.patch Source1: modules-targeted-base.conf Source31: modules-targeted-contrib.conf Source2: booleans-targeted.conf @@ -316,9 +318,11 @@ Based off of reference policy: Checked out revision 2.20091117 %prep %setup -n serefpolicy-contrib-%{version} -q -b 29 %patch1 -p1 +%patch3 -p1 contrib_path=`pwd` %setup -n serefpolicy-%{version} -q %patch -p1 +%patch2 -p1 refpolicy_path=`pwd` cp $contrib_path/* $refpolicy_path/policy/modules/contrib @@ -579,6 +583,56 @@ SELinux Reference policy mls base module. %endif %changelog +* Tue Jun 3 2014 Miroslav Grepl 3.12.1-153.el7_0.10 +- Allow swift to execute bin_t +- Allow swift to bind http_cache +- Label /var/log/horizon as an apache log + +* Tue Jun 3 2014 Miroslav Grepl 3.12.1-153.el7_0.9 +- Allow neutron to bind xserver port +- Allow neutron to execute kmod in insmod_t +- Allow neutron to execute udevadm in udev_t +- Allow keepalived to execute bin_t/shell_exec_t +- Allow neutron to create sock files +- Label swift-proxy-server as swift_exec_t + +* Wed May 21 2014 Miroslav Grepl 3.12.1-153.el7_0.8 +- Allow rsync to create swift_server.lock with swift.log labeling +- Add labeling for swift lock files +- Make neutron_t as unconfined domain + +* Mon May 19 2014 Miroslav Grepl 3.12.1-153.el7_0.7 +- Add more fixes for OpenStack +- Add fixes for geard +- Make openwsman as unconfined_domain in RHEL7.0 + +* Mon May 12 2014 Miroslav Grepl 3.12.1-153.el7_0.6 +- Back port openstack fixes +- svirt sandbox domains to read gear content in /run +- Allow gear_t to manage openshift files + +* Wed May 7 2014 Miroslav Grepl 3.12.1-153.el7_0.5 +- More rules for gears and openshift +Resolves:#1092405 + +* Wed May 7 2014 Miroslav Grepl 3.12.1-153.el7_0.4 +- Bump release to rebuild as z-stream +Resolves:#1092405 + +* Wed May 7 2014 Miroslav Grepl 3.12.1-153.el7_0.3 +- Add fixes for gear to just execute ifconfig +- More fixes for mongod_t +Resolves:#1092405 + +* Mon May 5 2014 Miroslav Grepl 3.12.1-153.el7_0.2 +- Bump release +Resolves:#1092405 + +* Mon May 5 2014 Miroslav Grepl 3.12.1-153.el7_0.1 +- Allow mongod to create sock files +Resolves:#1092405 +- Add additional fixes related to docker and upgrade issues + * Mon Apr 7 2014 Miroslav Grepl 3.12.1-153 - Change hsperfdata_root to have as user_tmp_t Resolves:#1076523