diff --git a/policy-rawhide.patch b/policy-rawhide.patch index 4c08960..36b4027 100644 --- a/policy-rawhide.patch +++ b/policy-rawhide.patch @@ -62802,7 +62802,7 @@ index c6ca761..46e0767 100644 ') diff --git a/policy/modules/admin/netutils.te b/policy/modules/admin/netutils.te -index e0791b9..9d5a8c0 100644 +index e0791b9..8ad5b9d 100644 --- a/policy/modules/admin/netutils.te +++ b/policy/modules/admin/netutils.te @@ -41,6 +41,7 @@ allow netutils_t self:packet_socket create_socket_perms; @@ -62894,18 +62894,22 @@ index e0791b9..9d5a8c0 100644 pcmcia_use_cardmgr_fds(ping_t) ') -@@ -157,6 +175,10 @@ optional_policy(` +@@ -157,6 +175,14 @@ optional_policy(` hotplug_use_fds(ping_t) ') +optional_policy(` ++ openshift_rw_inherited_content(ping_t) ++') ++ ++optional_policy(` + zabbix_read_tmp(ping_t) +') + ######################################## # # Traceroute local policy -@@ -170,7 +192,6 @@ allow traceroute_t self:udp_socket create_socket_perms; +@@ -170,7 +196,6 @@ allow traceroute_t self:udp_socket create_socket_perms; kernel_read_system_state(traceroute_t) kernel_read_network_state(traceroute_t) @@ -62913,7 +62917,7 @@ index e0791b9..9d5a8c0 100644 corenet_all_recvfrom_netlabel(traceroute_t) corenet_tcp_sendrecv_generic_if(traceroute_t) corenet_udp_sendrecv_generic_if(traceroute_t) -@@ -194,6 +215,7 @@ fs_dontaudit_getattr_xattr_fs(traceroute_t) +@@ -194,6 +219,7 @@ fs_dontaudit_getattr_xattr_fs(traceroute_t) domain_use_interactive_fds(traceroute_t) files_read_etc_files(traceroute_t) @@ -62921,7 +62925,7 @@ index e0791b9..9d5a8c0 100644 files_dontaudit_search_var(traceroute_t) init_use_fds(traceroute_t) -@@ -204,9 +226,16 @@ logging_send_syslog_msg(traceroute_t) +@@ -204,9 +230,16 @@ logging_send_syslog_msg(traceroute_t) miscfiles_read_localization(traceroute_t) @@ -68274,7 +68278,7 @@ index 6a1e4d1..eee8419 100644 + dontaudit $1 domain:socket_class_set { read write }; ') diff --git a/policy/modules/kernel/domain.te b/policy/modules/kernel/domain.te -index cf04cb5..b5b32d3 100644 +index cf04cb5..edd588e 100644 --- a/policy/modules/kernel/domain.te +++ b/policy/modules/kernel/domain.te @@ -4,6 +4,21 @@ policy_module(domain, 1.11.0) @@ -68380,7 +68384,7 @@ index cf04cb5..b5b32d3 100644 # Create/access any System V IPC objects. allow unconfined_domain_type domain:{ sem msgq shm } *; -@@ -166,5 +211,259 @@ allow unconfined_domain_type domain:lnk_file { read_lnk_file_perms ioctl lock }; +@@ -166,5 +211,263 @@ allow unconfined_domain_type domain:lnk_file { read_lnk_file_perms ioctl lock }; # act on all domains keys allow unconfined_domain_type domain:key *; @@ -68626,6 +68630,10 @@ index cf04cb5..b5b32d3 100644 +# these seem questionable: + +optional_policy(` ++ puppet_rw_tmp(domain) ++') ++ ++optional_policy(` + rpm_use_fds(domain) + rpm_read_pipes(domain) +') @@ -70653,7 +70661,7 @@ index e1e814d..76477ca 100644 + files_etc_filetrans_etc_runtime($1, file, "iptables.save") +') diff --git a/policy/modules/kernel/files.te b/policy/modules/kernel/files.te -index 52ef84e..14fabe2 100644 +index 52ef84e..59b37a3 100644 --- a/policy/modules/kernel/files.te +++ b/policy/modules/kernel/files.te @@ -10,7 +10,9 @@ attribute files_unconfined_type; @@ -70728,7 +70736,12 @@ index 52ef84e..14fabe2 100644 ######################################## # -@@ -229,6 +245,6 @@ allow files_unconfined_type file_type:{ dir lnk_file sock_file fifo_file blk_fil +@@ -225,10 +241,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 } *; ++allow files_unconfined_type file_type:service *; + # Mount/unmount any filesystem with the context= option. allow files_unconfined_type file_type:filesystem *; @@ -73479,7 +73492,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 01dd2f1..bce2776 100644 +index 01dd2f1..b62922c 100644 --- a/policy/modules/kernel/terminal.if +++ b/policy/modules/kernel/terminal.if @@ -124,7 +124,7 @@ interface(`term_user_tty',` @@ -73591,6 +73604,15 @@ index 01dd2f1..bce2776 100644 ## Do not audit attempts to read the ## /dev/pts directory. ## +@@ -601,7 +660,7 @@ interface(`term_use_generic_ptys',` + + ######################################## + ## +-## Dot not audit attempts to read and ++## Do not audit attempts to read and + ## write the generic pty type. This is + ## generally only used in the targeted policy. + ## @@ -616,6 +675,7 @@ interface(`term_dontaudit_use_generic_ptys',` type devpts_t; ') @@ -75874,10 +75896,10 @@ index 0000000..bac0dc0 + diff --git a/policy/modules/roles/unconfineduser.te b/policy/modules/roles/unconfineduser.te new file mode 100644 -index 0000000..20bc285 +index 0000000..905a4b5 --- /dev/null +++ b/policy/modules/roles/unconfineduser.te -@@ -0,0 +1,384 @@ +@@ -0,0 +1,388 @@ +policy_module(unconfineduser, 1.0.0) + +######################################## @@ -76240,6 +76262,10 @@ index 0000000..20bc285 +') + +optional_policy(` ++ openshift_run(unconfined_usertype, unconfined_r) ++') ++ ++optional_policy(` + usermanage_run_useradd(unconfined_t, unconfined_r) +') + @@ -76739,7 +76765,7 @@ index 078bcd7..8ed5b99 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..61070e4 100644 +index fe0c682..b161c31 100644 --- a/policy/modules/services/ssh.if +++ b/policy/modules/services/ssh.if @@ -32,10 +32,11 @@ @@ -77218,7 +77244,7 @@ index fe0c682..61070e4 100644 ') ###################################### -@@ -754,3 +894,64 @@ interface(`ssh_delete_tmp',` +@@ -754,3 +894,101 @@ interface(`ssh_delete_tmp',` files_search_tmp($1) delete_files_pattern($1, sshd_tmp_t, sshd_tmp_t) ') @@ -77283,8 +77309,45 @@ index fe0c682..61070e4 100644 + userdom_user_home_dir_filetrans($1, ssh_home_t, dir, ".ssh") + userdom_user_home_dir_filetrans($1, ssh_home_t, dir, ".shosts") +') ++ ++######################################## ++## ++## Do not audit attempts to read and ++## write the sshd pty type. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`ssh_dontaudit_use_ptys',` ++ gen_require(` ++ type sshd_devpts_t; ++ ') ++ ++ dontaudit $1 sshd_devpts_t:chr_file { getattr read write ioctl }; ++') ++ ++######################################## ++## ++## Read and write inherited sshd pty type. ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`ssh_use_ptys',` ++ gen_require(` ++ type sshd_devpts_t; ++ ') ++ ++ allow $1 sshd_devpts_t:chr_file { getattr read write ioctl }; ++') diff --git a/policy/modules/services/ssh.te b/policy/modules/services/ssh.te -index b17e27a..5c691d1 100644 +index b17e27a..47fd62a 100644 --- a/policy/modules/services/ssh.te +++ b/policy/modules/services/ssh.te @@ -6,44 +6,51 @@ policy_module(ssh, 2.3.0) @@ -77615,7 +77678,7 @@ index b17e27a..5c691d1 100644 ') optional_policy(` -@@ -283,6 +330,15 @@ optional_policy(` +@@ -283,6 +330,24 @@ optional_policy(` ') optional_policy(` @@ -77628,10 +77691,19 @@ index b17e27a..5c691d1 100644 +') + +optional_policy(` ++ openshift_dyntransition(sshd_t) ++ openshift_transition(sshd_t) ++ openshift_manage_tmp_files(sshd_t) ++ openshift_manage_tmp_sockets(sshd_t) ++ openshift_mounton_tmp(sshd_t) ++ openshift_search_lib(sshd_t) ++') ++ ++optional_policy(` unconfined_shell_domtrans(sshd_t) ') -@@ -290,6 +346,29 @@ optional_policy(` +@@ -290,6 +355,29 @@ optional_policy(` xserver_domtrans_xauth(sshd_t) ') @@ -77661,7 +77733,7 @@ index b17e27a..5c691d1 100644 ######################################## # # ssh_keygen local policy -@@ -298,19 +377,26 @@ optional_policy(` +@@ -298,19 +386,26 @@ optional_policy(` # ssh_keygen_t is the type of the ssh-keygen program when run at install time # and by sysadm_t @@ -77689,7 +77761,7 @@ index b17e27a..5c691d1 100644 dev_read_urand(ssh_keygen_t) term_dontaudit_use_console(ssh_keygen_t) -@@ -327,9 +413,11 @@ auth_use_nsswitch(ssh_keygen_t) +@@ -327,9 +422,11 @@ auth_use_nsswitch(ssh_keygen_t) logging_send_syslog_msg(ssh_keygen_t) userdom_dontaudit_use_unpriv_user_fds(ssh_keygen_t) @@ -77703,7 +77775,7 @@ index b17e27a..5c691d1 100644 ') optional_policy(` -@@ -339,3 +427,83 @@ optional_policy(` +@@ -339,3 +436,83 @@ optional_policy(` optional_policy(` udev_read_db(ssh_keygen_t) ') @@ -79249,7 +79321,7 @@ index 130ced9..1b31c76 100644 + files_search_tmp($1) +') diff --git a/policy/modules/services/xserver.te b/policy/modules/services/xserver.te -index d40f750..20ee046 100644 +index d40f750..29cb626 100644 --- a/policy/modules/services/xserver.te +++ b/policy/modules/services/xserver.te @@ -26,27 +26,50 @@ gen_require(` @@ -79484,7 +79556,7 @@ index d40f750..20ee046 100644 ') ######################################## -@@ -247,45 +311,78 @@ tunable_policy(`use_samba_home_dirs',` +@@ -247,45 +311,81 @@ tunable_policy(`use_samba_home_dirs',` # Xauth local policy # @@ -79518,6 +79590,9 @@ index d40f750..20ee046 100644 +kernel_read_system_state(xauth_t) kernel_request_load_module(xauth_t) ++dev_read_rand(xauth_t) ++dev_read_urand(xauth_t) ++ domain_use_interactive_fds(xauth_t) +domain_dontaudit_leaks(xauth_t) @@ -79573,7 +79648,7 @@ index d40f750..20ee046 100644 ') optional_policy(` -@@ -299,64 +396,105 @@ optional_policy(` +@@ -299,64 +399,105 @@ optional_policy(` # XDM Local policy # @@ -79689,7 +79764,7 @@ index d40f750..20ee046 100644 # connect to xdm xserver over stream socket stream_connect_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t, xserver_t) -@@ -365,20 +503,27 @@ stream_connect_pattern(xdm_t, xserver_tmp_t, xserver_tmp_t, xserver_t) +@@ -365,20 +506,27 @@ 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) @@ -79719,7 +79794,7 @@ index d40f750..20ee046 100644 corenet_all_recvfrom_netlabel(xdm_t) corenet_tcp_sendrecv_generic_if(xdm_t) corenet_udp_sendrecv_generic_if(xdm_t) -@@ -388,38 +533,48 @@ corenet_tcp_sendrecv_all_ports(xdm_t) +@@ -388,38 +536,48 @@ 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) @@ -79772,7 +79847,7 @@ index d40f750..20ee046 100644 files_read_etc_files(xdm_t) files_read_var_files(xdm_t) -@@ -430,9 +585,25 @@ files_list_mnt(xdm_t) +@@ -430,9 +588,25 @@ 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) @@ -79798,7 +79873,7 @@ index d40f750..20ee046 100644 storage_dontaudit_read_fixed_disk(xdm_t) storage_dontaudit_write_fixed_disk(xdm_t) -@@ -441,28 +612,38 @@ storage_dontaudit_raw_read_removable_device(xdm_t) +@@ -441,28 +615,38 @@ 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) @@ -79840,7 +79915,7 @@ index d40f750..20ee046 100644 userdom_dontaudit_use_unpriv_user_fds(xdm_t) userdom_create_all_users_keys(xdm_t) -@@ -471,24 +652,43 @@ userdom_read_user_home_content_files(xdm_t) +@@ -471,24 +655,43 @@ 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) @@ -79890,7 +79965,7 @@ index d40f750..20ee046 100644 tunable_policy(`xdm_sysadm_login',` userdom_xsession_spec_domtrans_all_users(xdm_t) # FIXME: -@@ -502,11 +702,21 @@ tunable_policy(`xdm_sysadm_login',` +@@ -502,11 +705,21 @@ tunable_policy(`xdm_sysadm_login',` ') optional_policy(` @@ -79912,7 +79987,7 @@ index d40f750..20ee046 100644 ') optional_policy(` -@@ -514,12 +724,64 @@ optional_policy(` +@@ -514,12 +727,64 @@ optional_policy(` ') optional_policy(` @@ -79977,7 +80052,7 @@ index d40f750..20ee046 100644 hostname_exec(xdm_t) ') -@@ -537,28 +799,69 @@ optional_policy(` +@@ -537,28 +802,69 @@ optional_policy(` ') optional_policy(` @@ -80056,7 +80131,7 @@ index d40f750..20ee046 100644 ') optional_policy(` -@@ -570,6 +873,14 @@ optional_policy(` +@@ -570,6 +876,14 @@ optional_policy(` ') optional_policy(` @@ -80071,7 +80146,7 @@ index d40f750..20ee046 100644 xfs_stream_connect(xdm_t) ') -@@ -594,8 +905,11 @@ allow xserver_t input_xevent_t:x_event send; +@@ -594,8 +908,11 @@ allow xserver_t input_xevent_t:x_event send; # execheap needed until the X module loader is fixed. # NVIDIA Needs execstack @@ -80084,7 +80159,7 @@ index d40f750..20ee046 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 +922,15 @@ allow xserver_t self:unix_dgram_socket { create_socket_perms sendto }; +@@ -608,8 +925,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; @@ -80100,7 +80175,7 @@ index d40f750..20ee046 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) -@@ -628,12 +949,19 @@ manage_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t) +@@ -628,12 +952,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) @@ -80122,7 +80197,7 @@ index d40f750..20ee046 100644 kernel_read_system_state(xserver_t) kernel_read_device_sysctls(xserver_t) -@@ -641,12 +969,12 @@ kernel_read_modprobe_sysctls(xserver_t) +@@ -641,12 +972,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) @@ -80136,7 +80211,7 @@ index d40f750..20ee046 100644 corenet_all_recvfrom_netlabel(xserver_t) corenet_tcp_sendrecv_generic_if(xserver_t) corenet_udp_sendrecv_generic_if(xserver_t) -@@ -667,23 +995,28 @@ dev_rw_apm_bios(xserver_t) +@@ -667,23 +998,28 @@ dev_rw_apm_bios(xserver_t) dev_rw_agp(xserver_t) dev_rw_framebuffer(xserver_t) dev_manage_dri_dev(xserver_t) @@ -80168,7 +80243,7 @@ index d40f750..20ee046 100644 # brought on by rhgb files_search_mnt(xserver_t) -@@ -694,8 +1027,13 @@ fs_getattr_xattr_fs(xserver_t) +@@ -694,8 +1030,13 @@ fs_getattr_xattr_fs(xserver_t) fs_search_nfs(xserver_t) fs_search_auto_mountpoints(xserver_t) fs_search_ramfs(xserver_t) @@ -80182,7 +80257,7 @@ index d40f750..20ee046 100644 selinux_validate_context(xserver_t) selinux_compute_access_vector(xserver_t) -@@ -708,8 +1046,6 @@ init_getpgid(xserver_t) +@@ -708,8 +1049,6 @@ init_getpgid(xserver_t) term_setattr_unallocated_ttys(xserver_t) term_use_unallocated_ttys(xserver_t) @@ -80191,7 +80266,7 @@ index d40f750..20ee046 100644 locallogin_use_fds(xserver_t) logging_send_syslog_msg(xserver_t) -@@ -717,11 +1053,12 @@ logging_send_audit_msgs(xserver_t) +@@ -717,11 +1056,12 @@ logging_send_audit_msgs(xserver_t) miscfiles_read_localization(xserver_t) miscfiles_read_fonts(xserver_t) @@ -80206,7 +80281,7 @@ index d40f750..20ee046 100644 userdom_search_user_home_dirs(xserver_t) userdom_use_user_ttys(xserver_t) -@@ -775,16 +1112,40 @@ optional_policy(` +@@ -775,16 +1115,40 @@ optional_policy(` ') optional_policy(` @@ -80248,7 +80323,7 @@ index d40f750..20ee046 100644 unconfined_domtrans(xserver_t) ') -@@ -793,6 +1154,10 @@ optional_policy(` +@@ -793,6 +1157,10 @@ optional_policy(` ') optional_policy(` @@ -80259,7 +80334,7 @@ index d40f750..20ee046 100644 xfs_stream_connect(xserver_t) ') -@@ -808,10 +1173,10 @@ allow xserver_t xdm_t:shm rw_shm_perms; +@@ -808,10 +1176,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!!! @@ -80273,7 +80348,7 @@ index d40f750..20ee046 100644 # Label pid and temporary files with derived types. manage_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) -@@ -819,7 +1184,7 @@ manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) +@@ -819,7 +1187,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. @@ -80282,7 +80357,7 @@ index d40f750..20ee046 100644 can_exec(xserver_t, xkb_var_lib_t) # VNC v4 module in X server -@@ -832,26 +1197,21 @@ init_use_fds(xserver_t) +@@ -832,26 +1200,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) @@ -80317,7 +80392,7 @@ index d40f750..20ee046 100644 ') optional_policy(` -@@ -859,6 +1219,10 @@ optional_policy(` +@@ -859,6 +1222,10 @@ optional_policy(` rhgb_rw_tmpfs_files(xserver_t) ') @@ -80328,7 +80403,7 @@ index d40f750..20ee046 100644 ######################################## # # Rules common to all X window domains -@@ -902,7 +1266,7 @@ allow x_domain xproperty_t:x_property { getattr create read write append destroy +@@ -902,7 +1269,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 }; @@ -80337,7 +80412,7 @@ index d40f750..20ee046 100644 # operations allowed on all windows allow x_domain x_domain:x_drawable { getattr get_property set_property remove_child }; -@@ -956,11 +1320,31 @@ allow x_domain self:x_resource { read write }; +@@ -956,11 +1323,31 @@ allow x_domain self:x_resource { read write }; # can mess with the screensaver allow x_domain xserver_t:x_screen { getattr saver_getattr }; @@ -80369,7 +80444,7 @@ index d40f750..20ee046 100644 tunable_policy(`! xserver_object_manager',` # should be xserver_unconfined(x_domain), # but typeattribute doesnt work in conditionals -@@ -982,18 +1366,44 @@ tunable_policy(`! xserver_object_manager',` +@@ -982,18 +1369,44 @@ tunable_policy(`! xserver_object_manager',` allow x_domain xevent_type:{ x_event x_synthetic_event } *; ') @@ -83178,7 +83253,7 @@ index d26fe81..efdc556 100644 + allow $1 init_t:system undefined; +') diff --git a/policy/modules/system/init.te b/policy/modules/system/init.te -index 4a88fa1..fb77fcb 100644 +index 4a88fa1..c9eef60 100644 --- a/policy/modules/system/init.te +++ b/policy/modules/system/init.te @@ -16,6 +16,34 @@ gen_require(` @@ -83426,7 +83501,7 @@ index 4a88fa1..fb77fcb 100644 corecmd_shell_domtrans(init_t, initrc_t) ',` # Run the shell in the sysadm role for single-user mode. -@@ -196,16 +301,154 @@ tunable_policy(`init_upstart',` +@@ -196,16 +301,158 @@ tunable_policy(`init_upstart',` sysadm_shell_domtrans(init_t) ') @@ -83435,6 +83510,7 @@ index 4a88fa1..fb77fcb 100644 optional_policy(` - auth_rw_login_records(init_t) + modutils_domtrans_insmod(init_t) ++ modutils_list_module_config(init_t) ') optional_policy(` @@ -83501,6 +83577,7 @@ index 4a88fa1..fb77fcb 100644 + files_list_var(init_t) + files_create_lock_dirs(init_t) + files_relabel_all_lock_dirs(init_t) ++ files_read_kernel_modules(init_t) + + fs_getattr_all_fs(init_t) + fs_manage_cgroup_dirs(init_t) @@ -83545,6 +83622,8 @@ index 4a88fa1..fb77fcb 100644 + systemd_logger_stream_connect(init_t) + systemd_config_all_services(init_t) + systemd_relabelto_fifo_file_passwd_run(init_t) ++ systemd_relabel_unit_dirs(init_t) ++ systemd_relabel_unit_files(init_t) + systemd_config_all_services(initrc_t) + + create_sock_files_pattern(init_t, init_sock_file_type, init_sock_file_type) @@ -83583,7 +83662,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -213,6 +456,22 @@ optional_policy(` +@@ -213,6 +460,22 @@ optional_policy(` ') optional_policy(` @@ -83606,7 +83685,7 @@ index 4a88fa1..fb77fcb 100644 unconfined_domain(init_t) ') -@@ -222,8 +481,9 @@ optional_policy(` +@@ -222,8 +485,9 @@ optional_policy(` # allow initrc_t self:process { getpgid setsched setpgid setrlimit getsched }; @@ -83618,7 +83697,7 @@ index 4a88fa1..fb77fcb 100644 allow initrc_t self:passwd rootok; allow initrc_t self:key manage_key_perms; -@@ -251,12 +511,15 @@ manage_fifo_files_pattern(initrc_t, initrc_state_t, initrc_state_t) +@@ -251,12 +515,15 @@ 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) @@ -83634,7 +83713,7 @@ index 4a88fa1..fb77fcb 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) -@@ -272,23 +535,36 @@ kernel_change_ring_buffer_level(initrc_t) +@@ -272,23 +539,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) @@ -83677,7 +83756,7 @@ index 4a88fa1..fb77fcb 100644 corenet_tcp_sendrecv_all_ports(initrc_t) corenet_udp_sendrecv_all_ports(initrc_t) corenet_tcp_connect_all_ports(initrc_t) -@@ -296,6 +572,7 @@ corenet_sendrecv_all_client_packets(initrc_t) +@@ -296,6 +576,7 @@ corenet_sendrecv_all_client_packets(initrc_t) dev_read_rand(initrc_t) dev_read_urand(initrc_t) @@ -83685,7 +83764,7 @@ index 4a88fa1..fb77fcb 100644 dev_write_kmsg(initrc_t) dev_write_rand(initrc_t) dev_write_urand(initrc_t) -@@ -306,8 +583,10 @@ dev_write_framebuffer(initrc_t) +@@ -306,8 +587,10 @@ dev_write_framebuffer(initrc_t) dev_read_realtime_clock(initrc_t) dev_read_sound_mixer(initrc_t) dev_write_sound_mixer(initrc_t) @@ -83696,7 +83775,7 @@ index 4a88fa1..fb77fcb 100644 dev_delete_lvm_control_dev(initrc_t) dev_manage_generic_symlinks(initrc_t) dev_manage_generic_files(initrc_t) -@@ -315,17 +594,16 @@ dev_manage_generic_files(initrc_t) +@@ -315,17 +598,16 @@ 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) @@ -83716,7 +83795,7 @@ index 4a88fa1..fb77fcb 100644 domain_getsession_all_domains(initrc_t) domain_use_interactive_fds(initrc_t) # for lsof which is used by alsa shutdown: -@@ -333,6 +611,7 @@ domain_dontaudit_getattr_all_udp_sockets(initrc_t) +@@ -333,6 +615,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) @@ -83724,7 +83803,7 @@ index 4a88fa1..fb77fcb 100644 files_getattr_all_dirs(initrc_t) files_getattr_all_files(initrc_t) -@@ -340,8 +619,10 @@ files_getattr_all_symlinks(initrc_t) +@@ -340,8 +623,10 @@ files_getattr_all_symlinks(initrc_t) files_getattr_all_pipes(initrc_t) files_getattr_all_sockets(initrc_t) files_purge_tmp(initrc_t) @@ -83736,7 +83815,7 @@ index 4a88fa1..fb77fcb 100644 files_delete_all_pids(initrc_t) files_delete_all_pid_dirs(initrc_t) files_read_etc_files(initrc_t) -@@ -357,8 +638,12 @@ files_list_isid_type_dirs(initrc_t) +@@ -357,8 +642,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) @@ -83750,7 +83829,7 @@ index 4a88fa1..fb77fcb 100644 fs_list_inotifyfs(initrc_t) fs_register_binary_executable_type(initrc_t) # rhgb-console writes to ramfs -@@ -368,9 +653,12 @@ fs_mount_all_fs(initrc_t) +@@ -368,9 +657,12 @@ fs_mount_all_fs(initrc_t) fs_unmount_all_fs(initrc_t) fs_remount_all_fs(initrc_t) fs_getattr_all_fs(initrc_t) @@ -83764,7 +83843,7 @@ index 4a88fa1..fb77fcb 100644 mcs_killall(initrc_t) mcs_process_set_categories(initrc_t) -@@ -380,6 +668,7 @@ mls_process_read_up(initrc_t) +@@ -380,6 +672,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) @@ -83772,7 +83851,7 @@ index 4a88fa1..fb77fcb 100644 selinux_get_enforce_mode(initrc_t) -@@ -391,6 +680,7 @@ term_use_all_terms(initrc_t) +@@ -391,6 +684,7 @@ term_use_all_terms(initrc_t) term_reset_tty_labels(initrc_t) auth_rw_login_records(initrc_t) @@ -83780,7 +83859,7 @@ index 4a88fa1..fb77fcb 100644 auth_setattr_login_records(initrc_t) auth_rw_lastlog(initrc_t) auth_read_pam_pid(initrc_t) -@@ -411,18 +701,17 @@ logging_read_audit_config(initrc_t) +@@ -411,18 +705,17 @@ logging_read_audit_config(initrc_t) miscfiles_read_localization(initrc_t) # slapd needs to read cert files from its initscript @@ -83802,7 +83881,7 @@ index 4a88fa1..fb77fcb 100644 ifdef(`distro_debian',` dev_setattr_generic_dirs(initrc_t) -@@ -476,6 +765,10 @@ ifdef(`distro_gentoo',` +@@ -476,6 +769,10 @@ ifdef(`distro_gentoo',` sysnet_setattr_config(initrc_t) optional_policy(` @@ -83813,7 +83892,7 @@ index 4a88fa1..fb77fcb 100644 alsa_read_lib(initrc_t) ') -@@ -496,7 +789,7 @@ ifdef(`distro_redhat',` +@@ -496,7 +793,7 @@ ifdef(`distro_redhat',` # Red Hat systems seem to have a stray # fd open from the initrd @@ -83822,7 +83901,7 @@ index 4a88fa1..fb77fcb 100644 files_dontaudit_read_root_files(initrc_t) # These seem to be from the initrd -@@ -511,6 +804,7 @@ ifdef(`distro_redhat',` +@@ -511,6 +808,7 @@ ifdef(`distro_redhat',` files_create_boot_dirs(initrc_t) files_create_boot_flag(initrc_t) files_rw_boot_symlinks(initrc_t) @@ -83830,7 +83909,7 @@ index 4a88fa1..fb77fcb 100644 # wants to read /.fonts directory files_read_default_files(initrc_t) files_mountpoint(initrc_tmp_t) -@@ -531,6 +825,7 @@ ifdef(`distro_redhat',` +@@ -531,6 +829,7 @@ ifdef(`distro_redhat',` miscfiles_rw_localization(initrc_t) miscfiles_setattr_localization(initrc_t) miscfiles_relabel_localization(initrc_t) @@ -83838,7 +83917,7 @@ index 4a88fa1..fb77fcb 100644 miscfiles_read_fonts(initrc_t) miscfiles_read_hwdata(initrc_t) -@@ -540,8 +835,35 @@ ifdef(`distro_redhat',` +@@ -540,8 +839,35 @@ ifdef(`distro_redhat',` ') optional_policy(` @@ -83874,7 +83953,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -549,14 +871,27 @@ ifdef(`distro_redhat',` +@@ -549,14 +875,27 @@ ifdef(`distro_redhat',` rpc_write_exports(initrc_t) rpc_manage_nfs_state_data(initrc_t) ') @@ -83902,7 +83981,7 @@ index 4a88fa1..fb77fcb 100644 ') ') -@@ -567,6 +902,39 @@ ifdef(`distro_suse',` +@@ -567,6 +906,39 @@ ifdef(`distro_suse',` ') ') @@ -83942,7 +84021,7 @@ index 4a88fa1..fb77fcb 100644 optional_policy(` amavis_search_lib(initrc_t) amavis_setattr_pid_files(initrc_t) -@@ -579,6 +947,8 @@ optional_policy(` +@@ -579,6 +951,8 @@ optional_policy(` optional_policy(` apache_read_config(initrc_t) apache_list_modules(initrc_t) @@ -83951,7 +84030,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -600,6 +970,7 @@ optional_policy(` +@@ -600,6 +974,7 @@ optional_policy(` optional_policy(` cgroup_stream_connect_cgred(initrc_t) @@ -83959,7 +84038,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -612,6 +983,17 @@ optional_policy(` +@@ -612,6 +987,17 @@ optional_policy(` ') optional_policy(` @@ -83977,7 +84056,7 @@ index 4a88fa1..fb77fcb 100644 dev_getattr_printer_dev(initrc_t) cups_read_log(initrc_t) -@@ -628,9 +1010,13 @@ optional_policy(` +@@ -628,9 +1014,13 @@ optional_policy(` dbus_connect_system_bus(initrc_t) dbus_system_bus_client(initrc_t) dbus_read_config(initrc_t) @@ -83991,7 +84070,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -655,6 +1041,10 @@ optional_policy(` +@@ -655,6 +1045,10 @@ optional_policy(` ') optional_policy(` @@ -84002,7 +84081,7 @@ index 4a88fa1..fb77fcb 100644 gpm_setattr_gpmctl(initrc_t) ') -@@ -672,6 +1062,15 @@ optional_policy(` +@@ -672,6 +1066,15 @@ optional_policy(` ') optional_policy(` @@ -84018,7 +84097,7 @@ index 4a88fa1..fb77fcb 100644 inn_exec_config(initrc_t) ') -@@ -712,6 +1111,7 @@ optional_policy(` +@@ -712,6 +1115,7 @@ optional_policy(` lpd_list_spool(initrc_t) lpd_read_config(initrc_t) @@ -84026,7 +84105,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -729,7 +1129,14 @@ optional_policy(` +@@ -729,7 +1133,14 @@ optional_policy(` ') optional_policy(` @@ -84041,7 +84120,7 @@ index 4a88fa1..fb77fcb 100644 mta_dontaudit_read_spool_symlinks(initrc_t) ') -@@ -752,6 +1159,10 @@ optional_policy(` +@@ -752,6 +1163,10 @@ optional_policy(` ') optional_policy(` @@ -84052,7 +84131,7 @@ index 4a88fa1..fb77fcb 100644 postgresql_manage_db(initrc_t) postgresql_read_config(initrc_t) ') -@@ -761,10 +1172,20 @@ optional_policy(` +@@ -761,10 +1176,20 @@ optional_policy(` ') optional_policy(` @@ -84073,7 +84152,7 @@ index 4a88fa1..fb77fcb 100644 quota_manage_flags(initrc_t) ') -@@ -773,6 +1194,10 @@ optional_policy(` +@@ -773,6 +1198,10 @@ optional_policy(` ') optional_policy(` @@ -84084,7 +84163,7 @@ index 4a88fa1..fb77fcb 100644 fs_write_ramfs_sockets(initrc_t) fs_search_ramfs(initrc_t) -@@ -794,8 +1219,6 @@ optional_policy(` +@@ -794,8 +1223,6 @@ optional_policy(` # bash tries ioctl for some reason files_dontaudit_ioctl_all_pids(initrc_t) @@ -84093,7 +84172,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -804,6 +1227,10 @@ optional_policy(` +@@ -804,6 +1231,10 @@ optional_policy(` ') optional_policy(` @@ -84104,7 +84183,7 @@ index 4a88fa1..fb77fcb 100644 # shorewall-init script run /var/lib/shorewall/firewall shorewall_lib_domtrans(initrc_t) ') -@@ -813,10 +1240,12 @@ optional_policy(` +@@ -813,10 +1244,12 @@ optional_policy(` squid_manage_logs(initrc_t) ') @@ -84117,7 +84196,7 @@ index 4a88fa1..fb77fcb 100644 optional_policy(` ssh_dontaudit_read_server_keys(initrc_t) -@@ -828,8 +1257,6 @@ optional_policy(` +@@ -828,8 +1261,6 @@ optional_policy(` ') optional_policy(` @@ -84126,7 +84205,7 @@ index 4a88fa1..fb77fcb 100644 udev_manage_pid_files(initrc_t) udev_manage_pid_dirs(initrc_t) udev_manage_rules_files(initrc_t) -@@ -840,12 +1267,30 @@ optional_policy(` +@@ -840,12 +1271,30 @@ optional_policy(` ') optional_policy(` @@ -84159,7 +84238,7 @@ index 4a88fa1..fb77fcb 100644 ifdef(`distro_redhat',` # system-config-services causes avc messages that should be dontaudited -@@ -855,6 +1300,18 @@ optional_policy(` +@@ -855,6 +1304,18 @@ optional_policy(` optional_policy(` mono_domtrans(initrc_t) ') @@ -84178,7 +84257,7 @@ index 4a88fa1..fb77fcb 100644 ') optional_policy(` -@@ -870,6 +1327,10 @@ optional_policy(` +@@ -870,6 +1331,10 @@ optional_policy(` ') optional_policy(` @@ -84189,7 +84268,7 @@ index 4a88fa1..fb77fcb 100644 # Set device ownerships/modes. xserver_setattr_console_pipes(initrc_t) -@@ -880,3 +1341,164 @@ optional_policy(` +@@ -880,3 +1345,164 @@ optional_policy(` optional_policy(` zebra_read_config(initrc_t) ') @@ -86049,7 +86128,7 @@ index 321bb13..e7fd936 100644 + init_named_pid_filetrans($1, syslogd_var_run_t, dir, "journal") +') diff --git a/policy/modules/system/logging.te b/policy/modules/system/logging.te -index 0034021..8c87704 100644 +index 0034021..2d55123 100644 --- a/policy/modules/system/logging.te +++ b/policy/modules/system/logging.te @@ -5,6 +5,20 @@ policy_module(logging, 1.19.0) @@ -86258,19 +86337,21 @@ index 0034021..8c87704 100644 kernel_read_system_state(syslogd_t) kernel_read_kernel_sysctls(syslogd_t) kernel_read_proc_symlinks(syslogd_t) -@@ -401,7 +453,10 @@ kernel_read_messages(syslogd_t) +@@ -400,8 +452,12 @@ kernel_read_proc_symlinks(syslogd_t) + kernel_read_messages(syslogd_t) kernel_clear_ring_buffer(syslogd_t) kernel_change_ring_buffer_level(syslogd_t) - --corenet_all_recvfrom_unlabeled(syslogd_t) ++kernel_read_ring_buffer(syslogd_t) ++ +ifdef(`hide_broken_symptoms',` + kernel_rw_unix_dgram_sockets(syslogd_t) +') -+ + +-corenet_all_recvfrom_unlabeled(syslogd_t) corenet_all_recvfrom_netlabel(syslogd_t) corenet_udp_sendrecv_generic_if(syslogd_t) corenet_udp_sendrecv_generic_node(syslogd_t) -@@ -427,10 +482,27 @@ corenet_sendrecv_syslogd_server_packets(syslogd_t) +@@ -427,10 +483,28 @@ corenet_sendrecv_syslogd_server_packets(syslogd_t) corenet_sendrecv_postgresql_client_packets(syslogd_t) corenet_sendrecv_mysqld_client_packets(syslogd_t) @@ -86290,6 +86371,7 @@ index 0034021..8c87704 100644 +dev_read_urand(syslogd_t) +# relating to systemd-kmsg-syslogd +dev_write_kmsg(syslogd_t) ++dev_read_kmsg(syslogd_t) +domain_read_all_domains_state(syslogd_t) domain_use_interactive_fds(syslogd_t) @@ -86298,7 +86380,7 @@ index 0034021..8c87704 100644 files_read_etc_files(syslogd_t) files_read_usr_files(syslogd_t) -@@ -442,13 +514,16 @@ files_read_kernel_symbol_table(syslogd_t) +@@ -442,13 +516,16 @@ files_read_kernel_symbol_table(syslogd_t) fs_getattr_all_fs(syslogd_t) fs_search_auto_mountpoints(syslogd_t) @@ -86315,7 +86397,7 @@ index 0034021..8c87704 100644 # for sending messages to logged in users init_read_utmp(syslogd_t) init_dontaudit_write_utmp(syslogd_t) -@@ -460,6 +535,7 @@ init_use_fds(syslogd_t) +@@ -460,6 +537,7 @@ init_use_fds(syslogd_t) # cjp: this doesnt make sense logging_send_syslog_msg(syslogd_t) @@ -86323,7 +86405,7 @@ index 0034021..8c87704 100644 miscfiles_read_localization(syslogd_t) -@@ -493,15 +569,29 @@ optional_policy(` +@@ -493,15 +571,29 @@ optional_policy(` ') optional_policy(` @@ -90169,10 +90251,10 @@ index 0000000..7da5bf6 +/var/run/initramfs(/.*)? <> diff --git a/policy/modules/system/systemd.if b/policy/modules/system/systemd.if new file mode 100644 -index 0000000..846c140 +index 0000000..23bac8e --- /dev/null +++ b/policy/modules/system/systemd.if -@@ -0,0 +1,756 @@ +@@ -0,0 +1,792 @@ +## SELinux policy for systemd components + +####################################### @@ -90667,6 +90749,42 @@ index 0000000..846c140 + +####################################### +## ++## Relabel systemd unit directories ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`systemd_relabel_unit_dirs',` ++ gen_require(` ++ attribute systemd_unit_file_type; ++ ') ++ ++ relabel_dirs_pattern($1, systemd_unit_file_type, systemd_unit_file_type) ++') ++ ++####################################### ++## ++## Relabel systemd unit files ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`systemd_relabel_unit_files',` ++ gen_require(` ++ attribute systemd_unit_file_type; ++ ') ++ ++ relabel_files_pattern($1, systemd_unit_file_type, systemd_unit_file_type) ++') ++ ++####################################### ++## +## Send generic signals to systemd_passwd_agent processes. +## +## diff --git a/policy_contrib-rawhide.patch b/policy_contrib-rawhide.patch index 91c8035..640d620 100644 --- a/policy_contrib-rawhide.patch +++ b/policy_contrib-rawhide.patch @@ -2029,7 +2029,7 @@ index fd9fa07..c0ecd7e 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 6480167..d30bdbf 100644 +index 6480167..273a121 100644 --- a/apache.if +++ b/apache.if @@ -13,62 +13,46 @@ @@ -2674,7 +2674,7 @@ index 6480167..d30bdbf 100644 admin_pattern($1, httpd_log_t) admin_pattern($1, httpd_modules_t) -@@ -1205,14 +1349,88 @@ interface(`apache_admin',` +@@ -1205,14 +1349,106 @@ interface(`apache_admin',` admin_pattern($1, httpd_var_run_t) files_pid_filetrans($1, httpd_var_run_t, file) @@ -2747,6 +2747,24 @@ index 6480167..d30bdbf 100644 + +######################################## +## ++## Allow any httpd_exec_t to be an entrypoint of this domain ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`apache_entrypoint',` ++ gen_require(` ++ type httpd_exec_t; ++ ') ++ allow $1 httpd_exec_t:file entrypoint; ++') ++ ++######################################## ++## +## Transition to apache home content +## +## @@ -2769,7 +2787,7 @@ index 6480167..d30bdbf 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 0833afb..18e92f6 100644 +index 0833afb..e901478 100644 --- a/apache.te +++ b/apache.te @@ -18,6 +18,8 @@ policy_module(apache, 2.4.0) @@ -3478,7 +3496,7 @@ index 0833afb..18e92f6 100644 ') optional_policy(` -@@ -594,6 +930,34 @@ optional_policy(` +@@ -594,6 +930,37 @@ optional_policy(` ') optional_policy(` @@ -3492,6 +3510,9 @@ index 0833afb..18e92f6 100644 + passenger_exec(httpd_t) + passenger_manage_pid_content(httpd_t) + passenger_manage_lib_files(httpd_t) ++ files_dontaudit_getattr_all_files(httpd_t) ++ domain_dontaudit_read_all_domains_state(httpd_t) ++ domain_getpgid_all_domains(httpd_t) + ',` + passenger_domtrans(httpd_t) + passenger_manage_pid_content(httpd_t) @@ -3513,7 +3534,7 @@ index 0833afb..18e92f6 100644 # Allow httpd to work with postgresql postgresql_stream_connect(httpd_t) postgresql_unpriv_client(httpd_t) -@@ -608,6 +972,11 @@ optional_policy(` +@@ -608,6 +975,11 @@ optional_policy(` ') optional_policy(` @@ -3525,7 +3546,7 @@ index 0833afb..18e92f6 100644 snmp_dontaudit_read_snmp_var_lib_files(httpd_t) snmp_dontaudit_write_snmp_var_lib_files(httpd_t) ') -@@ -620,6 +989,12 @@ optional_policy(` +@@ -620,6 +992,12 @@ optional_policy(` yam_read_content(httpd_t) ') @@ -3538,7 +3559,7 @@ index 0833afb..18e92f6 100644 ######################################## # # Apache helper local policy -@@ -633,7 +1008,11 @@ allow httpd_helper_t httpd_log_t:file append_file_perms; +@@ -633,7 +1011,11 @@ allow httpd_helper_t httpd_log_t:file append_file_perms; logging_send_syslog_msg(httpd_helper_t) @@ -3551,7 +3572,7 @@ index 0833afb..18e92f6 100644 ######################################## # -@@ -671,28 +1050,30 @@ libs_exec_lib_files(httpd_php_t) +@@ -671,28 +1053,30 @@ libs_exec_lib_files(httpd_php_t) userdom_use_unpriv_users_fds(httpd_php_t) tunable_policy(`httpd_can_network_connect_db',` @@ -3595,7 +3616,7 @@ index 0833afb..18e92f6 100644 ') ######################################## -@@ -702,6 +1083,7 @@ optional_policy(` +@@ -702,6 +1086,7 @@ optional_policy(` allow httpd_suexec_t self:capability { setuid setgid }; allow httpd_suexec_t self:process signal_perms; @@ -3603,7 +3624,7 @@ index 0833afb..18e92f6 100644 allow httpd_suexec_t self:unix_stream_socket create_stream_socket_perms; domtrans_pattern(httpd_t, httpd_suexec_exec_t, httpd_suexec_t) -@@ -716,19 +1098,27 @@ manage_dirs_pattern(httpd_suexec_t, httpd_suexec_tmp_t, httpd_suexec_tmp_t) +@@ -716,19 +1101,27 @@ manage_dirs_pattern(httpd_suexec_t, httpd_suexec_tmp_t, httpd_suexec_tmp_t) manage_files_pattern(httpd_suexec_t, httpd_suexec_tmp_t, httpd_suexec_tmp_t) files_tmp_filetrans(httpd_suexec_t, httpd_suexec_tmp_t, { file dir }) @@ -3632,7 +3653,7 @@ index 0833afb..18e92f6 100644 files_read_usr_files(httpd_suexec_t) files_dontaudit_search_pids(httpd_suexec_t) files_search_home(httpd_suexec_t) -@@ -745,7 +1135,6 @@ tunable_policy(`httpd_can_network_connect',` +@@ -745,7 +1138,6 @@ tunable_policy(`httpd_can_network_connect',` allow httpd_suexec_t self:tcp_socket create_stream_socket_perms; allow httpd_suexec_t self:udp_socket create_socket_perms; @@ -3640,7 +3661,7 @@ index 0833afb..18e92f6 100644 corenet_all_recvfrom_netlabel(httpd_suexec_t) corenet_tcp_sendrecv_generic_if(httpd_suexec_t) corenet_udp_sendrecv_generic_if(httpd_suexec_t) -@@ -757,13 +1146,31 @@ tunable_policy(`httpd_can_network_connect',` +@@ -757,13 +1149,31 @@ tunable_policy(`httpd_can_network_connect',` corenet_sendrecv_all_client_packets(httpd_suexec_t) ') @@ -3673,7 +3694,7 @@ index 0833afb..18e92f6 100644 fs_read_nfs_files(httpd_suexec_t) fs_read_nfs_symlinks(httpd_suexec_t) fs_exec_nfs_files(httpd_suexec_t) -@@ -786,6 +1193,25 @@ optional_policy(` +@@ -786,6 +1196,25 @@ optional_policy(` dontaudit httpd_suexec_t httpd_t:unix_stream_socket { read write }; ') @@ -3699,7 +3720,7 @@ index 0833afb..18e92f6 100644 ######################################## # # Apache system script local policy -@@ -806,12 +1232,17 @@ read_lnk_files_pattern(httpd_sys_script_t, squirrelmail_spool_t, squirrelmail_sp +@@ -806,12 +1235,17 @@ read_lnk_files_pattern(httpd_sys_script_t, squirrelmail_spool_t, squirrelmail_sp kernel_read_kernel_sysctls(httpd_sys_script_t) @@ -3717,7 +3738,7 @@ index 0833afb..18e92f6 100644 ifdef(`distro_redhat',` allow httpd_sys_script_t httpd_log_t:file append_file_perms; ') -@@ -820,18 +1251,49 @@ tunable_policy(`httpd_can_sendmail',` +@@ -820,18 +1254,49 @@ tunable_policy(`httpd_can_sendmail',` mta_send_mail(httpd_sys_script_t) ') @@ -3774,7 +3795,7 @@ index 0833afb..18e92f6 100644 corenet_tcp_sendrecv_all_ports(httpd_sys_script_t) corenet_udp_sendrecv_all_ports(httpd_sys_script_t) corenet_tcp_connect_all_ports(httpd_sys_script_t) -@@ -839,14 +1301,39 @@ tunable_policy(`httpd_enable_cgi && httpd_can_network_connect',` +@@ -839,14 +1304,39 @@ tunable_policy(`httpd_enable_cgi && httpd_can_network_connect',` ') tunable_policy(`httpd_enable_homedirs',` @@ -3815,7 +3836,7 @@ index 0833afb..18e92f6 100644 tunable_policy(`httpd_enable_homedirs && use_samba_home_dirs',` fs_read_cifs_files(httpd_sys_script_t) fs_read_cifs_symlinks(httpd_sys_script_t) -@@ -859,10 +1346,20 @@ optional_policy(` +@@ -859,10 +1349,20 @@ optional_policy(` optional_policy(` mysql_stream_connect(httpd_sys_script_t) mysql_rw_db_sockets(httpd_sys_script_t) @@ -3836,7 +3857,7 @@ index 0833afb..18e92f6 100644 ') ######################################## -@@ -878,7 +1375,6 @@ kernel_read_kernel_sysctls(httpd_rotatelogs_t) +@@ -878,7 +1378,6 @@ kernel_read_kernel_sysctls(httpd_rotatelogs_t) kernel_dontaudit_list_proc(httpd_rotatelogs_t) kernel_dontaudit_read_proc_symlinks(httpd_rotatelogs_t) @@ -3844,7 +3865,7 @@ index 0833afb..18e92f6 100644 logging_search_logs(httpd_rotatelogs_t) -@@ -908,11 +1404,144 @@ optional_policy(` +@@ -908,11 +1407,143 @@ optional_policy(` tunable_policy(`httpd_enable_cgi && httpd_unified',` allow httpd_user_script_t httpdcontent:file entrypoint; @@ -3862,7 +3883,7 @@ index 0833afb..18e92f6 100644 + userdom_search_user_home_content(httpd_t) + userdom_search_user_home_content(httpd_suexec_t) + userdom_search_user_home_content(httpd_user_script_t) - ') ++') + +tunable_policy(`httpd_read_user_content',` + userdom_read_user_home_content_files(httpd_t) @@ -3990,8 +4011,7 @@ index 0833afb..18e92f6 100644 + corenet_tcp_connect_keystone_port(httpd_sys_script_t) + corenet_tcp_connect_all_ephemeral_ports(httpd_t) + corenet_tcp_connect_glance_port(httpd_sys_script_t) -+') -+ + ') diff --git a/apcupsd.fc b/apcupsd.fc index cd07b96..f3506be 100644 --- a/apcupsd.fc @@ -11920,90 +11940,98 @@ index 3559a05..224142a 100644 /var/spool/cron/atjobs -d gen_context(system_u:object_r:cron_spool_t,s0) /var/spool/cron/atjobs/[^/]* -- <> diff --git a/cron.if b/cron.if -index 6e12dc7..59480a6 100644 +index 6e12dc7..1382775 100644 --- a/cron.if +++ b/cron.if -@@ -12,6 +12,11 @@ +@@ -12,12 +12,17 @@ ## # template(`cron_common_crontab_template',` + gen_require(` -+ type crond_t, crond_var_run_t, crontab_exec_t; -+ type cron_spool_t, user_cron_spool_t; ++ attribute crontab_domain; ++ type crontab_exec_t; + ') + ############################## # # Declarations -@@ -30,11 +35,15 @@ template(`cron_common_crontab_template',` + # - # dac_override is to create the file in the directory under /tmp - allow $1_t self:capability { fowner setuid setgid chown dac_override }; -- allow $1_t self:process { setsched signal_perms }; -+ allow $1_t self:process { getcap setsched signal_perms }; - allow $1_t self:fifo_file rw_fifo_file_perms; +- type $1_t; ++ type $1_t, crontab_domain; + userdom_user_application_domain($1_t, crontab_exec_t) + type $1_tmp_t; +@@ -28,63 +33,15 @@ template(`cron_common_crontab_template',` + # Local policy + # + +- # dac_override is to create the file in the directory under /tmp +- allow $1_t self:capability { fowner setuid setgid chown dac_override }; +- allow $1_t self:process { setsched signal_perms }; +- allow $1_t self:fifo_file rw_fifo_file_perms; +- - allow $1_t $1_tmp_t:file manage_file_perms; - files_tmp_filetrans($1_t, $1_tmp_t, file) -+ allow $1_t crond_t:process signal; -+ allow $1_t crond_var_run_t:file read_file_perms; -+ +- +- # create files in /var/spool/cron +- manage_files_pattern($1_t, { cron_spool_t user_cron_spool_t }, user_cron_spool_t) +- filetrans_pattern($1_t, cron_spool_t, user_cron_spool_t, file) +- files_list_spool($1_t) +- +- # crontab signals crond by updating the mtime on the spooldir +- allow $1_t cron_spool_t:dir setattr; +- +- kernel_read_system_state($1_t) +- +- # for the checks used by crontab -u +- selinux_dontaudit_search_fs($1_t) +- +- fs_getattr_xattr_fs($1_t) +- +- domain_use_interactive_fds($1_t) +- +- files_read_etc_files($1_t) +- files_read_usr_files($1_t) +- files_dontaudit_search_pids($1_t) + manage_dirs_pattern($1_t, $1_tmp_t, $1_tmp_t) + manage_files_pattern($1_t, $1_tmp_t, $1_tmp_t) + files_tmp_filetrans($1_t, $1_tmp_t, { dir file }) - # create files in /var/spool/cron - manage_files_pattern($1_t, { cron_spool_t user_cron_spool_t }, user_cron_spool_t) -@@ -42,7 +51,7 @@ template(`cron_common_crontab_template',` - files_list_spool($1_t) - - # crontab signals crond by updating the mtime on the spooldir -- allow $1_t cron_spool_t:dir setattr; -+ allow $1_t cron_spool_t:dir setattr_dir_perms; - - kernel_read_system_state($1_t) - -@@ -50,6 +59,8 @@ template(`cron_common_crontab_template',` - selinux_dontaudit_search_fs($1_t) - - fs_getattr_xattr_fs($1_t) -+ fs_manage_cgroup_dirs($1_t) -+ fs_manage_cgroup_files($1_t) - - domain_use_interactive_fds($1_t) - -@@ -58,12 +69,16 @@ template(`cron_common_crontab_template',` - files_dontaudit_search_pids($1_t) - auth_domtrans_chk_passwd($1_t) -+ auth_rw_var_auth($1_t) + auth_use_nsswitch($1_t) - logging_send_syslog_msg($1_t) - logging_send_audit_msgs($1_t) -+ logging_set_loginuid($1_t) - - init_dontaudit_write_utmp($1_t) - init_read_utmp($1_t) -+ init_read_state($1_t) - - miscfiles_read_localization($1_t) +- logging_send_syslog_msg($1_t) +- logging_send_audit_msgs($1_t) +- +- init_dontaudit_write_utmp($1_t) +- init_read_utmp($1_t) ++ userdom_home_reader($1_t) -@@ -72,9 +87,12 @@ template(`cron_common_crontab_template',` - userdom_manage_user_tmp_dirs($1_t) - userdom_manage_user_tmp_files($1_t) - # Access terminals. +- miscfiles_read_localization($1_t) +- +- seutil_read_config($1_t) +- +- userdom_manage_user_tmp_dirs($1_t) +- userdom_manage_user_tmp_files($1_t) +- # Access terminals. - userdom_use_user_terminals($1_t) -+ userdom_use_inherited_user_terminals($1_t) - # Read user crontabs - userdom_read_user_home_content_files($1_t) -+ userdom_read_user_home_content_symlinks($1_t) -+ -+ userdom_home_reader($1_t) +- # Read user crontabs +- userdom_read_user_home_content_files($1_t) +- +- tunable_policy(`fcron_crond',` +- # fcron wants an instant update of a crontab change for the administrator +- # also crontab does a security check for crontab -u +- dontaudit $1_t crond_t:process signal; +- ') +- +- optional_policy(` +- nscd_socket_use($1_t) +- ') + ') - tunable_policy(`fcron_crond',` - # fcron wants an instant update of a crontab change for the administrator -@@ -101,10 +119,12 @@ template(`cron_common_crontab_template',` + ######################################## +@@ -101,10 +58,12 @@ template(`cron_common_crontab_template',` ## User domain for the role ## ## @@ -12016,7 +12044,7 @@ index 6e12dc7..59480a6 100644 ') role $1 types { cronjob_t crontab_t }; -@@ -115,9 +135,20 @@ interface(`cron_role',` +@@ -115,9 +74,20 @@ interface(`cron_role',` # Transition from the user domain to the derived domain. domtrans_pattern($2, crontab_exec_t, crontab_t) @@ -12038,7 +12066,7 @@ index 6e12dc7..59480a6 100644 # Run helper programs as the user domain #corecmd_bin_domtrans(crontab_t, $2) -@@ -150,29 +181,21 @@ interface(`cron_role',` +@@ -150,29 +120,21 @@ interface(`cron_role',` ## User domain for the role ## ## @@ -12075,7 +12103,7 @@ index 6e12dc7..59480a6 100644 optional_policy(` gen_require(` -@@ -180,9 +203,8 @@ interface(`cron_unconfined_role',` +@@ -180,9 +142,8 @@ interface(`cron_unconfined_role',` ') dbus_stub(unconfined_cronjob_t) @@ -12086,7 +12114,7 @@ index 6e12dc7..59480a6 100644 ') ######################################## -@@ -199,6 +221,7 @@ interface(`cron_unconfined_role',` +@@ -199,6 +160,7 @@ interface(`cron_unconfined_role',` ## User domain for the role ## ## @@ -12094,7 +12122,7 @@ index 6e12dc7..59480a6 100644 # interface(`cron_admin_role',` gen_require(` -@@ -219,7 +242,10 @@ interface(`cron_admin_role',` +@@ -219,7 +181,10 @@ interface(`cron_admin_role',` # crontab shows up in user ps ps_process_pattern($2, admin_crontab_t) @@ -12106,7 +12134,7 @@ index 6e12dc7..59480a6 100644 # Run helper programs as the user domain #corecmd_bin_domtrans(admin_crontab_t, $2) -@@ -263,6 +289,9 @@ interface(`cron_system_entry',` +@@ -263,6 +228,9 @@ interface(`cron_system_entry',` domtrans_pattern(crond_t, $2, $1) role system_r types $1; @@ -12116,7 +12144,7 @@ index 6e12dc7..59480a6 100644 ') ######################################## -@@ -303,7 +332,7 @@ interface(`cron_exec',` +@@ -303,7 +271,7 @@ interface(`cron_exec',` ######################################## ## @@ -12125,7 +12153,7 @@ index 6e12dc7..59480a6 100644 ## ## ## -@@ -321,6 +350,29 @@ interface(`cron_initrc_domtrans',` +@@ -321,6 +289,29 @@ interface(`cron_initrc_domtrans',` ######################################## ## @@ -12155,7 +12183,7 @@ index 6e12dc7..59480a6 100644 ## Inherit and use a file descriptor ## from the cron daemon. ## -@@ -358,6 +410,24 @@ interface(`cron_sigchld',` +@@ -358,6 +349,24 @@ interface(`cron_sigchld',` ######################################## ## @@ -12180,7 +12208,7 @@ index 6e12dc7..59480a6 100644 ## Read a cron daemon unnamed pipe. ## ## -@@ -376,6 +446,47 @@ interface(`cron_read_pipes',` +@@ -376,6 +385,47 @@ interface(`cron_read_pipes',` ######################################## ## @@ -12228,7 +12256,7 @@ index 6e12dc7..59480a6 100644 ## Do not audit attempts to write cron daemon unnamed pipes. ## ## -@@ -407,7 +518,43 @@ interface(`cron_rw_pipes',` +@@ -407,7 +457,43 @@ interface(`cron_rw_pipes',` type crond_t; ') @@ -12273,7 +12301,7 @@ index 6e12dc7..59480a6 100644 ') ######################################## -@@ -467,6 +614,25 @@ interface(`cron_search_spool',` +@@ -467,6 +553,25 @@ interface(`cron_search_spool',` ######################################## ## @@ -12299,7 +12327,7 @@ index 6e12dc7..59480a6 100644 ## Manage pid files used by cron ## ## -@@ -480,6 +646,7 @@ interface(`cron_manage_pid_files',` +@@ -480,6 +585,7 @@ interface(`cron_manage_pid_files',` type crond_var_run_t; ') @@ -12307,7 +12335,7 @@ index 6e12dc7..59480a6 100644 manage_files_pattern($1, crond_var_run_t, crond_var_run_t) ') -@@ -535,7 +702,7 @@ interface(`cron_write_system_job_pipes',` +@@ -535,7 +641,7 @@ interface(`cron_write_system_job_pipes',` type system_cronjob_t; ') @@ -12316,7 +12344,7 @@ index 6e12dc7..59480a6 100644 ') ######################################## -@@ -553,7 +720,7 @@ interface(`cron_rw_system_job_pipes',` +@@ -553,7 +659,7 @@ interface(`cron_rw_system_job_pipes',` type system_cronjob_t; ') @@ -12325,7 +12353,7 @@ index 6e12dc7..59480a6 100644 ') ######################################## -@@ -586,11 +753,14 @@ interface(`cron_rw_system_job_stream_sockets',` +@@ -586,11 +692,14 @@ interface(`cron_rw_system_job_stream_sockets',` # interface(`cron_read_system_job_tmp_files',` gen_require(` @@ -12341,7 +12369,7 @@ index 6e12dc7..59480a6 100644 ') ######################################## -@@ -626,7 +796,47 @@ interface(`cron_dontaudit_append_system_job_tmp_files',` +@@ -626,7 +735,47 @@ interface(`cron_dontaudit_append_system_job_tmp_files',` interface(`cron_dontaudit_write_system_job_tmp_files',` gen_require(` type system_cronjob_tmp_t; @@ -12390,7 +12418,7 @@ index 6e12dc7..59480a6 100644 + manage_files_pattern($1, system_cronjob_var_lib_t, system_cronjob_var_lib_t) ') diff --git a/cron.te b/cron.te -index b357856..2af4e88 100644 +index b357856..2b0b0d7 100644 --- a/cron.te +++ b/cron.te @@ -1,4 +1,4 @@ @@ -12399,7 +12427,7 @@ index b357856..2af4e88 100644 gen_require(` class passwd rootok; -@@ -10,18 +10,18 @@ gen_require(` +@@ -10,35 +10,36 @@ gen_require(` # ## @@ -12426,7 +12454,10 @@ index b357856..2af4e88 100644 ## gen_tunable(fcron_crond, false) -@@ -31,14 +31,14 @@ type anacron_exec_t; ++attribute crontab_domain; + attribute cron_spool_type; + + type anacron_exec_t; application_executable_file(anacron_exec_t) type cron_spool_t; @@ -12443,7 +12474,7 @@ index b357856..2af4e88 100644 # var/log files type cron_log_t; -@@ -61,11 +61,17 @@ domain_cron_exemption_source(crond_t) +@@ -61,11 +62,17 @@ domain_cron_exemption_source(crond_t) type crond_initrc_exec_t; init_script_file(crond_initrc_exec_t) @@ -12461,7 +12492,7 @@ index b357856..2af4e88 100644 type crontab_exec_t; application_executable_file(crontab_exec_t) -@@ -79,14 +85,16 @@ typealias crontab_t alias { user_crontab_t staff_crontab_t }; +@@ -79,14 +86,16 @@ typealias crontab_t alias { user_crontab_t staff_crontab_t }; typealias crontab_t alias { auditadm_crontab_t secadm_crontab_t }; typealias crontab_tmp_t alias { user_crontab_tmp_t staff_crontab_tmp_t }; typealias crontab_tmp_t alias { auditadm_crontab_tmp_t secadm_crontab_tmp_t }; @@ -12479,7 +12510,7 @@ index b357856..2af4e88 100644 type system_cronjob_lock_t alias system_crond_lock_t; files_lock_file(system_cronjob_lock_t) -@@ -94,10 +102,6 @@ files_lock_file(system_cronjob_lock_t) +@@ -94,10 +103,6 @@ files_lock_file(system_cronjob_lock_t) type system_cronjob_tmp_t alias system_crond_tmp_t; files_tmp_file(system_cronjob_tmp_t) @@ -12490,7 +12521,7 @@ index b357856..2af4e88 100644 type unconfined_cronjob_t; domain_type(unconfined_cronjob_t) domain_cron_exemption_target(unconfined_cronjob_t) -@@ -106,8 +110,20 @@ domain_cron_exemption_target(unconfined_cronjob_t) +@@ -106,8 +111,20 @@ domain_cron_exemption_target(unconfined_cronjob_t) type user_cron_spool_t, cron_spool_type; typealias user_cron_spool_t alias { staff_cron_spool_t sysadm_cron_spool_t unconfined_cron_spool_t }; typealias user_cron_spool_t alias { auditadm_cron_spool_t secadm_cron_spool_t }; @@ -12512,7 +12543,7 @@ index b357856..2af4e88 100644 ######################################## # -@@ -115,7 +131,7 @@ ubac_constrained(user_cron_spool_t) +@@ -115,7 +132,7 @@ ubac_constrained(user_cron_spool_t) # # Allow our crontab domain to unlink a user cron spool file. @@ -12521,7 +12552,7 @@ index b357856..2af4e88 100644 # Manipulate other users crontab. selinux_get_fs_mount(admin_crontab_t) -@@ -125,7 +141,7 @@ selinux_compute_create_context(admin_crontab_t) +@@ -125,7 +142,7 @@ selinux_compute_create_context(admin_crontab_t) selinux_compute_relabel_context(admin_crontab_t) selinux_compute_user_contexts(admin_crontab_t) @@ -12530,7 +12561,7 @@ index b357856..2af4e88 100644 # fcron wants an instant update of a crontab change for the administrator # also crontab does a security check for crontab -u allow admin_crontab_t self:process setfscreate; -@@ -136,9 +152,9 @@ tunable_policy(`fcron_crond', ` +@@ -136,9 +153,9 @@ tunable_policy(`fcron_crond', ` # Cron daemon local policy # @@ -12542,7 +12573,7 @@ index b357856..2af4e88 100644 allow crond_t self:process { setexec setfscreate }; allow crond_t self:fd use; allow crond_t self:fifo_file rw_fifo_file_perms; -@@ -151,6 +167,7 @@ allow crond_t self:sem create_sem_perms; +@@ -151,6 +168,7 @@ allow crond_t self:sem create_sem_perms; allow crond_t self:msgq create_msgq_perms; allow crond_t self:msg { send receive }; allow crond_t self:key { search write link }; @@ -12550,7 +12581,7 @@ index b357856..2af4e88 100644 manage_files_pattern(crond_t, cron_log_t, cron_log_t) logging_log_filetrans(crond_t, cron_log_t, file) -@@ -187,27 +204,47 @@ fs_list_inotifyfs(crond_t) +@@ -187,27 +205,47 @@ fs_list_inotifyfs(crond_t) # need auth_chkpwd to check for locked accounts. auth_domtrans_chk_passwd(crond_t) @@ -12599,7 +12630,7 @@ index b357856..2af4e88 100644 logging_send_syslog_msg(crond_t) logging_set_loginuid(crond_t) -@@ -220,20 +257,23 @@ miscfiles_read_localization(crond_t) +@@ -220,20 +258,23 @@ miscfiles_read_localization(crond_t) userdom_use_unpriv_users_fds(crond_t) # Not sure why this is needed userdom_list_user_home_dirs(crond_t) @@ -12628,7 +12659,7 @@ index b357856..2af4e88 100644 # Run the rpm program in the rpm_t domain. Allow creation of RPM log files # via redirection of standard out. optional_policy(` -@@ -241,7 +281,7 @@ ifdef(`distro_redhat', ` +@@ -241,7 +282,7 @@ ifdef(`distro_redhat', ` ') ') @@ -12637,7 +12668,7 @@ index b357856..2af4e88 100644 files_polyinstantiate_all(crond_t) ') -@@ -250,11 +290,27 @@ tunable_policy(`fcron_crond', ` +@@ -250,11 +291,27 @@ tunable_policy(`fcron_crond', ` ') optional_policy(` @@ -12665,7 +12696,7 @@ index b357856..2af4e88 100644 amanda_search_var_lib(crond_t) ') -@@ -264,6 +320,8 @@ optional_policy(` +@@ -264,6 +321,8 @@ optional_policy(` optional_policy(` hal_dbus_chat(crond_t) @@ -12674,7 +12705,7 @@ index b357856..2af4e88 100644 ') optional_policy(` -@@ -286,15 +344,25 @@ optional_policy(` +@@ -286,15 +345,25 @@ optional_policy(` ') optional_policy(` @@ -12700,7 +12731,7 @@ index b357856..2af4e88 100644 allow system_cronjob_t self:process { signal_perms getsched setsched }; allow system_cronjob_t self:fifo_file rw_fifo_file_perms; allow system_cronjob_t self:passwd rootok; -@@ -306,10 +374,19 @@ logging_log_filetrans(system_cronjob_t, cron_log_t, file) +@@ -306,10 +375,19 @@ logging_log_filetrans(system_cronjob_t, cron_log_t, file) # This is to handle /var/lib/misc directory. Used currently # by prelink var/lib files for cron @@ -12721,7 +12752,7 @@ index b357856..2af4e88 100644 # The entrypoint interface is not used as this is not # a regular entrypoint. Since crontab files are # not directly executed, crond must ensure that -@@ -329,6 +406,7 @@ allow crond_t system_cronjob_t:fd use; +@@ -329,6 +407,7 @@ allow crond_t system_cronjob_t:fd use; allow system_cronjob_t crond_t:fd use; allow system_cronjob_t crond_t:fifo_file rw_file_perms; allow system_cronjob_t crond_t:process sigchld; @@ -12729,7 +12760,7 @@ index b357856..2af4e88 100644 # Write /var/lock/makewhatis.lock. allow system_cronjob_t system_cronjob_lock_t:file manage_file_perms; -@@ -340,11 +418,16 @@ manage_lnk_files_pattern(system_cronjob_t, crond_tmp_t, system_cronjob_tmp_t) +@@ -340,11 +419,16 @@ manage_lnk_files_pattern(system_cronjob_t, crond_tmp_t, system_cronjob_tmp_t) filetrans_pattern(system_cronjob_t, crond_tmp_t, system_cronjob_tmp_t, { file lnk_file }) files_tmp_filetrans(system_cronjob_t, system_cronjob_tmp_t, file) @@ -12747,7 +12778,7 @@ index b357856..2af4e88 100644 kernel_read_system_state(system_cronjob_t) kernel_read_software_raid_state(system_cronjob_t) -@@ -353,7 +436,6 @@ files_dontaudit_search_boot(system_cronjob_t) +@@ -353,7 +437,6 @@ files_dontaudit_search_boot(system_cronjob_t) corecmd_exec_all_executables(system_cronjob_t) @@ -12755,7 +12786,7 @@ index b357856..2af4e88 100644 corenet_all_recvfrom_netlabel(system_cronjob_t) corenet_tcp_sendrecv_generic_if(system_cronjob_t) corenet_udp_sendrecv_generic_if(system_cronjob_t) -@@ -365,6 +447,7 @@ corenet_udp_sendrecv_all_ports(system_cronjob_t) +@@ -365,6 +448,7 @@ corenet_udp_sendrecv_all_ports(system_cronjob_t) dev_getattr_all_blk_files(system_cronjob_t) dev_getattr_all_chr_files(system_cronjob_t) dev_read_urand(system_cronjob_t) @@ -12763,7 +12794,7 @@ index b357856..2af4e88 100644 fs_getattr_all_fs(system_cronjob_t) fs_getattr_all_files(system_cronjob_t) -@@ -376,7 +459,6 @@ fs_getattr_all_sockets(system_cronjob_t) +@@ -376,7 +460,6 @@ fs_getattr_all_sockets(system_cronjob_t) domain_dontaudit_read_all_domains_state(system_cronjob_t) files_exec_etc_files(system_cronjob_t) @@ -12771,7 +12802,7 @@ index b357856..2af4e88 100644 files_read_etc_runtime_files(system_cronjob_t) files_list_all(system_cronjob_t) files_getattr_all_dirs(system_cronjob_t) -@@ -391,6 +473,7 @@ files_dontaudit_search_pids(system_cronjob_t) +@@ -391,6 +474,7 @@ files_dontaudit_search_pids(system_cronjob_t) # Access other spool directories like # /var/spool/anacron and /var/spool/slrnpull. files_manage_generic_spool(system_cronjob_t) @@ -12779,7 +12810,7 @@ index b357856..2af4e88 100644 init_use_script_fds(system_cronjob_t) init_read_utmp(system_cronjob_t) -@@ -413,8 +496,10 @@ miscfiles_manage_man_pages(system_cronjob_t) +@@ -413,8 +497,10 @@ miscfiles_manage_man_pages(system_cronjob_t) seutil_read_config(system_cronjob_t) @@ -12791,7 +12822,7 @@ index b357856..2af4e88 100644 # via redirection of standard out. optional_policy(` rpm_manage_log(system_cronjob_t) -@@ -439,6 +524,8 @@ optional_policy(` +@@ -439,6 +525,8 @@ optional_policy(` apache_read_config(system_cronjob_t) apache_read_log(system_cronjob_t) apache_read_sys_content(system_cronjob_t) @@ -12800,7 +12831,7 @@ index b357856..2af4e88 100644 ') optional_policy(` -@@ -446,6 +533,14 @@ optional_policy(` +@@ -446,6 +534,14 @@ optional_policy(` ') optional_policy(` @@ -12815,7 +12846,7 @@ index b357856..2af4e88 100644 ftp_read_log(system_cronjob_t) ') -@@ -456,6 +551,10 @@ optional_policy(` +@@ -456,6 +552,10 @@ optional_policy(` ') optional_policy(` @@ -12826,7 +12857,7 @@ index b357856..2af4e88 100644 lpd_list_spool(system_cronjob_t) ') -@@ -464,7 +563,9 @@ optional_policy(` +@@ -464,7 +564,9 @@ optional_policy(` ') optional_policy(` @@ -12836,7 +12867,7 @@ index b357856..2af4e88 100644 ') optional_policy(` -@@ -472,6 +573,10 @@ optional_policy(` +@@ -472,6 +574,10 @@ optional_policy(` ') optional_policy(` @@ -12847,7 +12878,7 @@ index b357856..2af4e88 100644 postfix_read_config(system_cronjob_t) ') -@@ -480,7 +585,7 @@ optional_policy(` +@@ -480,7 +586,7 @@ optional_policy(` prelink_manage_lib(system_cronjob_t) prelink_manage_log(system_cronjob_t) prelink_read_cache(system_cronjob_t) @@ -12856,7 +12887,7 @@ index b357856..2af4e88 100644 ') optional_policy(` -@@ -495,6 +600,7 @@ optional_policy(` +@@ -495,6 +601,7 @@ optional_policy(` optional_policy(` spamassassin_manage_lib_files(system_cronjob_t) @@ -12864,7 +12895,7 @@ index b357856..2af4e88 100644 ') optional_policy(` -@@ -502,7 +608,18 @@ optional_policy(` +@@ -502,7 +609,18 @@ optional_policy(` ') optional_policy(` @@ -12883,7 +12914,7 @@ index b357856..2af4e88 100644 userdom_user_home_dir_filetrans_user_home_content(system_cronjob_t, { dir file lnk_file fifo_file sock_file }) ') -@@ -542,7 +659,6 @@ kernel_read_kernel_sysctls(cronjob_t) +@@ -542,7 +660,6 @@ kernel_read_kernel_sysctls(cronjob_t) # ps does not need to access /boot when run from cron files_dontaudit_search_boot(cronjob_t) @@ -12891,7 +12922,7 @@ index b357856..2af4e88 100644 corenet_all_recvfrom_netlabel(cronjob_t) corenet_tcp_sendrecv_generic_if(cronjob_t) corenet_udp_sendrecv_generic_if(cronjob_t) -@@ -595,9 +711,12 @@ userdom_manage_user_home_content_sockets(cronjob_t) +@@ -595,9 +712,12 @@ userdom_manage_user_home_content_sockets(cronjob_t) #userdom_user_home_dir_filetrans_user_home_content(cronjob_t, notdevfile_class_set) list_dirs_pattern(crond_t, user_cron_spool_t, user_cron_spool_t) @@ -12905,6 +12936,85 @@ index b357856..2af4e88 100644 allow crond_t user_cron_spool_t:file manage_file_perms; ') +@@ -626,3 +746,78 @@ optional_policy(` + + unconfined_domain(unconfined_cronjob_t) + ') ++ ++############################## ++# ++# crontab common policy ++# ++ ++# dac_override is to create the file in the directory under /tmp ++allow crontab_domain self:capability { fowner setuid setgid chown dac_override }; ++allow crontab_domain self:process { getcap setsched signal_perms }; ++allow crontab_domain self:fifo_file rw_fifo_file_perms; ++ ++allow crontab_domain crond_t:process signal; ++allow crontab_domain crond_var_run_t:file read_file_perms; ++ ++# create files in /var/spool/cron ++manage_files_pattern(crontab_domain, { cron_spool_t user_cron_spool_t }, user_cron_spool_t) ++filetrans_pattern(crontab_domain, cron_spool_t, user_cron_spool_t, file) ++files_list_spool(crontab_domain) ++ ++# crontab signals crond by updating the mtime on the spooldir ++allow crontab_domain cron_spool_t:dir setattr_dir_perms; ++ ++kernel_read_system_state(crontab_domain) ++ ++# for the checks used by crontab -u ++selinux_dontaudit_search_fs(crontab_domain) ++ ++fs_getattr_xattr_fs(crontab_domain) ++fs_manage_cgroup_dirs(crontab_domain) ++fs_manage_cgroup_files(crontab_domain) ++ ++domain_use_interactive_fds(crontab_domain) ++ ++files_read_etc_files(crontab_domain) ++files_read_usr_files(crontab_domain) ++files_dontaudit_search_pids(crontab_domain) ++ ++fs_dontaudit_rw_anon_inodefs_files(crontab_domain) ++ ++auth_rw_var_auth(crontab_domain) ++ ++logging_send_syslog_msg(crontab_domain) ++logging_send_audit_msgs(crontab_domain) ++logging_set_loginuid(crontab_domain) ++ ++init_dontaudit_write_utmp(crontab_domain) ++init_read_utmp(crontab_domain) ++init_read_state(crontab_domain) ++ ++miscfiles_read_localization(crontab_domain) ++ ++seutil_read_config(crontab_domain) ++ ++userdom_manage_user_tmp_dirs(crontab_domain) ++userdom_manage_user_tmp_files(crontab_domain) ++# Access terminals. ++userdom_use_inherited_user_terminals(crontab_domain) ++# Read user crontabs ++userdom_read_user_home_content_files(crontab_domain) ++userdom_read_user_home_content_symlinks(crontab_domain) ++ ++tunable_policy(`fcron_crond',` ++ # fcron wants an instant update of a crontab change for the administrator ++ # also crontab does a security check for crontab -u ++ dontaudit crontab_domain crond_t:process signal; ++') ++ ++optional_policy(` ++ ssh_dontaudit_use_ptys(crontab_domain) ++') ++ ++optional_policy(` ++ openshift_dontaudit_rw_inherited_fifo_files(crontab_domain) ++ openshift_transition(system_cronjob_t) ++') diff --git a/ctdbd.fc b/ctdbd.fc new file mode 100644 index 0000000..2db6b61 @@ -39095,6 +39205,1046 @@ index 0000000..faa9b16 +logging_send_syslog_msg(openhpid_t) + +miscfiles_read_localization(openhpid_t) +diff --git a/openshift-origin.fc b/openshift-origin.fc +new file mode 100644 +index 0000000..30ca148 +--- /dev/null ++++ b/openshift-origin.fc +@@ -0,0 +1 @@ ++# Left Blank +diff --git a/openshift-origin.if b/openshift-origin.if +new file mode 100644 +index 0000000..3eb6a30 +--- /dev/null ++++ b/openshift-origin.if +@@ -0,0 +1 @@ ++## +diff --git a/openshift-origin.te b/openshift-origin.te +new file mode 100644 +index 0000000..722adfb +--- /dev/null ++++ b/openshift-origin.te +@@ -0,0 +1,11 @@ ++policy_module(openshift-origin,1.0.0) ++gen_require(` ++ attribute openshift_domain; ++') ++ ++######################################## ++# ++# openshift origin standard local policy ++# ++corenet_tcp_connect_all_ports(openshift_domain) ++corenet_tcp_bind_all_ports(openshift_domain) +diff --git a/openshift.fc b/openshift.fc +new file mode 100644 +index 0000000..2144799 +--- /dev/null ++++ b/openshift.fc +@@ -0,0 +1,26 @@ ++/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) ++ ++/var/lib/stickshift/.httpd.d(/.*)? gen_context(system_u:object_r:httpd_config_t,s0) ++/var/lib/stickshift/.stickshift-proxy.d(/.*)? gen_context(system_u:object_r:etc_t,s0) ++/var/lib/stickshift/.limits.d(/.*)? gen_context(system_u:object_r:etc_t,s0) ++ ++/var/lib/stickshift(/.*)? gen_context(system_u:object_r:openshift_var_lib_t,s0) ++#/usr/libexec/stickshift/cartridges(/.*)? gen_context(system_u:object_r:openshift_var_lib_t,s0) ++#/var/lib/stickshift/.* <> ++/var/lib/stickshift/[^/]+/\.ssh(/.*)? gen_context(system_u:object_r:ssh_home_t,s0) ++/var/lib/stickshift/.*/data(/.*)? gen_context(system_u:object_r:openshift_rw_file_t,s0) ++/var/lib/stickshift/.*/\.tmp(/.*)? gen_context(system_u:object_r:openshift_tmp_t,s0) ++/var/lib/stickshift/.*/\.sandbox(/.*)? gen_context(system_u:object_r:openshift_tmp_t,s0) ++/var/lib/stickshift/a?quota\.(user|group) -- gen_context(system_u:object_r:quota_db_t,s0) ++ ++/var/log/mcollective\.log -- gen_context(system_u:object_r:openshift_log_t,s0) ++ ++/usr/bin/rhc-cgroup-read -- gen_context(system_u:object_r:openshift_cgroup_read_exec_t,s0) ++ ++/usr/bin/rhc-restorer -- gen_context(system_u:object_r:openshift_initrc_exec_t,s0) ++/usr/bin/rhc-restorer-wrapper.sh -- gen_context(unconfined_u:object_r:httpd_openshift_script_exec_t,s0) ++ ++/var/run/stickshift(/.*)? gen_context(system_u:object_r:openshift_var_run_t,s0) ++ ++/sandbox(/.*)? gen_context(system_u:object_r:tmp_t,s0) +diff --git a/openshift.if b/openshift.if +new file mode 100644 +index 0000000..75e8c7f +--- /dev/null ++++ b/openshift.if +@@ -0,0 +1,546 @@ ++## policy for openshift ++ ++######################################## ++## ++## Execute openshift server in the openshift domain. ++## ++## ++## ++## The type of the process performing this action. ++## ++## ++# ++interface(`openshift_initrc_domtrans',` ++ gen_require(` ++ type openshift_initrc_t; ++ type openshift_initrc_exec_t; ++ ') ++ ++ domtrans_pattern($1, openshift_initrc_exec_t, openshift_initrc_t) ++') ++ ++######################################## ++## ++## Search openshift cache directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_search_cache',` ++ gen_require(` ++ type openshift_cache_t; ++ ') ++ ++ allow $1 openshift_cache_t:dir search_dir_perms; ++ files_search_var($1) ++') ++ ++######################################## ++## ++## Read openshift cache files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_read_cache_files',` ++ gen_require(` ++ type openshift_cache_t; ++ ') ++ ++ files_search_var($1) ++ read_files_pattern($1, openshift_cache_t, openshift_cache_t) ++') ++ ++######################################## ++## ++## Create, read, write, and delete ++## openshift cache files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_manage_cache_files',` ++ gen_require(` ++ type openshift_cache_t; ++ ') ++ ++ files_search_var($1) ++ manage_files_pattern($1, openshift_cache_t, openshift_cache_t) ++') ++ ++######################################## ++## ++## Create, read, write, and delete ++## openshift cache dirs. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_manage_cache_dirs',` ++ gen_require(` ++ type openshift_cache_t; ++ ') ++ ++ files_search_var($1) ++ manage_dirs_pattern($1, openshift_cache_t, openshift_cache_t) ++') ++ ++ ++######################################## ++## ++## Allow the specified domain to read openshift's log files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++# ++interface(`openshift_read_log',` ++ gen_require(` ++ type openshift_log_t; ++ ') ++ ++ logging_search_logs($1) ++ read_files_pattern($1, openshift_log_t, openshift_log_t) ++') ++ ++######################################## ++## ++## Allow the specified domain to append ++## openshift log files. ++## ++## ++## ++## Domain allowed to transition. ++## ++## ++# ++interface(`openshift_append_log',` ++ gen_require(` ++ type openshift_log_t; ++ ') ++ ++ logging_search_logs($1) ++ append_files_pattern($1, openshift_log_t, openshift_log_t) ++') ++ ++######################################## ++## ++## Allow domain to manage openshift log files ++## ++## ++## ++## Domain to not audit. ++## ++## ++# ++interface(`openshift_manage_log',` ++ gen_require(` ++ type openshift_log_t; ++ ') ++ ++ logging_search_logs($1) ++ manage_dirs_pattern($1, openshift_log_t, openshift_log_t) ++ manage_files_pattern($1, openshift_log_t, openshift_log_t) ++ manage_lnk_files_pattern($1, openshift_log_t, openshift_log_t) ++') ++ ++######################################## ++## ++## Search openshift lib directories. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_search_lib',` ++ gen_require(` ++ type openshift_var_lib_t; ++ ') ++ ++ allow $1 openshift_var_lib_t:dir search_dir_perms; ++ files_search_var_lib($1) ++') ++ ++######################################## ++## ++## Read openshift lib files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_read_lib_files',` ++ gen_require(` ++ type openshift_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ read_files_pattern($1, openshift_var_lib_t, openshift_var_lib_t) ++') ++ ++######################################## ++## ++## Read openshift lib files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_append_lib_files',` ++ gen_require(` ++ type openshift_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ append_files_pattern($1, openshift_var_lib_t, openshift_var_lib_t) ++') ++ ++######################################## ++## ++## Create, read, write, and delete ++## openshift lib files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_manage_lib_files',` ++ gen_require(` ++ type openshift_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ manage_files_pattern($1, openshift_var_lib_t, openshift_var_lib_t) ++') ++ ++######################################## ++## ++## Manage openshift lib dirs files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_manage_lib_dirs',` ++ gen_require(` ++ type openshift_var_lib_t; ++ ') ++ ++ files_search_var_lib($1) ++ manage_dirs_pattern($1, openshift_var_lib_t, openshift_var_lib_t) ++') ++ ++ ++######################################## ++## ++## Read openshift PID files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_read_pid_files',` ++ gen_require(` ++ type openshift_var_run_t; ++ ') ++ ++ files_search_pids($1) ++ allow $1 openshift_var_run_t:file read_file_perms; ++') ++ ++ ++######################################## ++## ++## All of the rules required to administrate ++## an openshift environment ++## ++## ++## ++## Domain allowed access. ++## ++## ++## ++## ++## Role allowed access. ++## ++## ++## ++# ++interface(`openshift_admin',` ++ gen_require(` ++ type openshift_t; ++ type openshift_initrc_exec_t; ++ type openshift_cache_t; ++ type openshift_log_t; ++ type openshift_var_lib_t; ++ type openshift_var_run_t; ++ ') ++ ++ allow $1 openshift_t:process { ptrace signal_perms }; ++ ps_process_pattern($1, openshift_t) ++ ++ openshift_initrc_domtrans($1) ++ domain_system_change_exemption($1) ++ role_transition $2 openshift_initrc_exec_t system_r; ++ allow $2 system_r; ++ ++ files_search_var($1) ++ admin_pattern($1, openshift_cache_t) ++ ++ logging_search_logs($1) ++ admin_pattern($1, openshift_log_t) ++ ++ files_search_var_lib($1) ++ admin_pattern($1, openshift_var_lib_t) ++ ++ files_search_pids($1) ++ admin_pattern($1, openshift_var_run_t) ++ ++') ++ ++######################################## ++## ++## Make the specified type usable as a openshift domain. ++## ++## ++## ++## The prefix of the domain (e.g., openshift ++## is the prefix for openshift_t). ++## ++## ++# ++template(`openshift_service_domain_template',` ++ gen_require(` ++ attribute openshift_domain; ++ attribute openshift_user_domain; ++ ') ++ ++ type $1_t, openshift_domain, openshift_user_domain; ++ #typeattribute $1_t openshift_domain, openshift_user_domain; ++ domain_type($1_t) ++ role system_r types $1_t; ++ mcs_untrusted_proc($1_t) ++ domain_user_exemption_target($1_t) ++ auth_use_nsswitch($1_t) ++ domain_obj_id_change_exemption($1_t) ++ domain_dyntrans_type($1_t) ++ ++ type $1_app_t, openshift_domain; ++ #typeattribute $1_app_t, openshift_domain; ++ domain_type($1_app_t) ++ role system_r types $1_app_t; ++ mcs_untrusted_proc($1_app_t) ++ domain_user_exemption_target($1_app_t) ++ domain_obj_id_change_exemption($1_app_t) ++ domain_dyntrans_type($1_app_t) ++') ++ ++######################################## ++## ++## Make the specified type usable as a openshift domain. ++## ++## ++## ++## Type to be used as a openshift domain type. ++## ++## ++# ++template(`openshift_net_type',` ++ gen_require(` ++ attribute openshift_net_domain; ++ ') ++ ++ typeattribute $1 openshift_net_domain; ++') ++ ++######################################## ++## ++## Read and write inherited openshift files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_rw_inherited_content',` ++ gen_require(` ++ attribute openshift_file_type; ++ ') ++ ++ allow $1 openshift_file_type:file rw_inherited_file_perms; ++') ++ ++######################################## ++## ++## Manage openshift tmp files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_manage_tmp_files',` ++ gen_require(` ++ type openshift_tmp_t; ++ ') ++ ++ manage_files_pattern($1, openshift_tmp_t, openshift_tmp_t) ++') ++ ++######################################## ++## ++## Manage openshift tmp sockets. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_manage_tmp_sockets',` ++ gen_require(` ++ type openshift_tmp_t; ++ ') ++ ++ manage_sock_files_pattern($1, openshift_tmp_t, openshift_tmp_t) ++') ++ ++######################################## ++## ++## Mounton openshift tmp directory. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_mounton_tmp',` ++ gen_require(` ++ type openshift_tmp_t; ++ ') ++ ++ allow $1 openshift_tmp_t:dir mounton; ++') ++ ++######################################## ++## ++## Dontaudit Read and write inherited script fifo files. ++## ++## ++## ++## Domain allowed access. ++## ++## ++# ++interface(`openshift_dontaudit_rw_inherited_fifo_files',` ++ gen_require(` ++ type openshift_initrc_t; ++ ') ++ ++ dontaudit $1 openshift_initrc_t:fifo_file rw_inherited_fifo_file_perms; ++') ++ ++######################################## ++## ++## Allow calling app to transition to an openshift domain ++## ++## ++## ++## Domain allowed access ++## ++## ++## ++# ++interface(`openshift_transition',` ++ gen_require(` ++ attribute openshift_user_domain; ++ ') ++ ++ allow $1 openshift_user_domain:process transition; ++ dontaudit $1 openshift_user_domain:process { noatsecure siginh rlimitinh }; ++ allow openshift_user_domain $1:fd use; ++ allow openshift_user_domain $1:fifo_file rw_inherited_fifo_file_perms; ++ allow openshift_user_domain $1:process sigchld; ++ dontaudit $1 openshift_user_domain:socket_class_set { read write }; ++') ++ ++######################################## ++## ++## Allow calling app to transition to an openshift domain ++## ++## ++## ++## Domain allowed access ++## ++## ++## ++# ++interface(`openshift_dyntransition',` ++ gen_require(` ++ attribute openshift_domain; ++ attribute openshift_user_domain; ++ ') ++ ++ allow $1 openshift_user_domain:process dyntransition; ++ dontaudit openshift_user_domain $1:key view; ++ allow openshift_user_domain $1:unix_stream_socket { connectto rw_socket_perms }; ++ allow openshift_user_domain $1:unix_dgram_socket rw_socket_perms; ++ allow $1 openshift_user_domain:process { rlimitinh signal }; ++ dontaudit openshift_domain $1:tcp_socket { read write getattr setopt getopt shutdown }; ++') ++ ++######################################## ++## ++## Execute openshift in the openshift domain, and ++## allow the specified role the openshift domain. ++## ++## ++## ++## Domain allowed to transition. ++## ++## ++## ++## ++## Role allowed access. ++## ++## ++# ++interface(`openshift_run',` ++ gen_require(` ++ type openshift_initrc_exec_t; ++ ') ++ ++ openshift_initrc_domtrans($1) ++ role_transition $2 openshift_initrc_exec_t system_r; ++ openshift_transition($1) ++') +diff --git a/openshift.te b/openshift.te +new file mode 100644 +index 0000000..72b3bb4 +--- /dev/null ++++ b/openshift.te +@@ -0,0 +1,419 @@ ++policy_module(openshift,1.0.0) ++ ++gen_require(` ++ role system_r; ++') ++ ++######################################## ++# ++# Declarations ++# ++ ++# openshift applications that can use the network. ++attribute openshift_net_domain; ++# Attribute representing all openshift user processes execludes run by apache ++attribute openshift_user_domain; ++# Attribute representing all openshift processes ++attribute openshift_domain; ++ ++# Attribute for all openshift content ++attribute openshift_file_type; ++ ++# Type of openshift init script ++type openshift_initrc_t; ++type openshift_initrc_exec_t; ++init_daemon_domain(openshift_initrc_t, openshift_initrc_exec_t) ++init_ranged_daemon_domain(openshift_initrc_t, openshift_initrc_exec_t, s0 - mcs_systemhigh) ++oddjob_system_entry(openshift_initrc_t, openshift_initrc_exec_t) ++ ++type openshift_initrc_tmp_t; ++files_tmp_file(openshift_initrc_tmp_t) ++ ++type openshift_tmp_t, openshift_file_type; ++files_tmp_file(openshift_tmp_t) ++files_mountpoint(openshift_tmp_t) ++files_poly(openshift_tmp_t) ++files_poly_parent(openshift_tmp_t) ++ ++type openshift_var_run_t; ++files_pid_file(openshift_var_run_t) ++ ++type openshift_var_lib_t, openshift_file_type; ++files_poly(openshift_var_lib_t) ++files_poly_parent(openshift_var_lib_t) ++ ++type openshift_rw_file_t, openshift_file_type; ++files_poly(openshift_rw_file_t) ++files_poly_parent(openshift_rw_file_t) ++ ++type openshift_log_t; ++logging_log_file(openshift_log_t) ++ ++type openshift_port_t; ++corenet_port(openshift_port_t) ++corenet_reserved_port(openshift_port_t) ++ ++######################################## ++# ++# Template to create openshift_t and openshift_app_t ++# ++ ++openshift_service_domain_template(openshift) ++ ++######################################## ++# ++# openshift general local policy ++# ++ ++allow openshift_domain self:process { setcurrent getcap getattr fork getpgid setpgid setrlimit setfscreate setsched signal_perms getsched execmem execstack }; ++ ++allow openshift_domain self:msg all_msg_perms; ++allow openshift_domain self:msgq create_msgq_perms; ++allow openshift_domain self:shm create_shm_perms; ++allow openshift_domain self:sem create_sem_perms; ++# Not sure if we should allow or dontaudit. ++#allow openshift_domain self:socket create_socket_perms; ++dontaudit openshift_domain self:netlink_tcpdiag_socket create; ++allow openshift_domain self:tcp_socket create_stream_socket_perms; ++ ++allow openshift_domain self:fifo_file manage_fifo_file_perms; ++allow openshift_domain self:unix_stream_socket { create_stream_socket_perms connectto }; ++allow openshift_domain self:unix_dgram_socket { create_socket_perms sendto }; ++dontaudit openshift_domain self:netlink_audit_socket { create_socket_perms nlmsg_relay }; ++ ++allow openshift_domain openshift_log_t:file { getattr append lock ioctl }; ++ ++dontaudit openshift_domain openshift_initrc_tmp_t:file append; ++dontaudit openshift_domain openshift_var_run_t:file append; ++dontaudit openshift_domain openshift_file_type:sock_file execute; ++ ++manage_dirs_pattern(openshift_domain, openshift_file_type, openshift_file_type) ++manage_fifo_files_pattern(openshift_domain, openshift_file_type, openshift_file_type) ++manage_files_pattern(openshift_domain, openshift_file_type, openshift_file_type) ++manage_lnk_files_pattern(openshift_domain, openshift_file_type, openshift_file_type) ++manage_sock_files_pattern(openshift_domain, openshift_file_type, openshift_file_type) ++allow openshift_domain openshift_file_type:file execmod; ++files_read_var_lib_symlinks(openshift_domain) ++can_exec(openshift_domain, openshift_file_type) ++allow openshift_domain openshift_file_type:file entrypoint; ++ ++manage_dirs_pattern(openshift_domain, openshift_tmp_t, openshift_tmp_t) ++manage_fifo_files_pattern(openshift_domain, openshift_tmp_t, openshift_tmp_t) ++manage_files_pattern(openshift_domain, openshift_tmp_t, openshift_tmp_t) ++manage_lnk_files_pattern(openshift_domain, openshift_tmp_t, openshift_tmp_t) ++manage_sock_files_pattern(openshift_domain, openshift_tmp_t, openshift_tmp_t) ++files_tmp_filetrans(openshift_user_domain, openshift_tmp_t, { lnk_file file dir sock_file fifo_file }) ++allow openshift_domain openshift_tmp_t:dir_file_class_set { relabelfrom relabelto }; ++ ++list_dirs_pattern(openshift_domain, openshift_var_lib_t, openshift_var_lib_t) ++read_files_pattern(openshift_domain, openshift_var_lib_t, openshift_var_lib_t) ++rw_fifo_files_pattern(openshift_domain, openshift_var_lib_t, openshift_var_lib_t) ++rw_sock_files_pattern(openshift_domain, openshift_var_lib_t, openshift_var_lib_t) ++read_lnk_files_pattern(openshift_domain, openshift_var_lib_t, openshift_var_lib_t) ++allow openshift_domain openshift_var_lib_t:file entrypoint; ++ ++# Dontaudit openshift domains trying to search other openshift domains directories, ++# this happens just when users are probing the system ++dontaudit openshift_user_domain openshift_var_lib_t:dir search_dir_perms ++; ++ ++kernel_read_system_state(openshift_user_domain) ++kernel_read_network_state(openshift_user_domain) ++kernel_dontaudit_list_all_proc(openshift_user_domain) ++kernel_dontaudit_list_all_sysctls(openshift_user_domain) ++kernel_dontaudit_request_load_module(openshift_user_domain) ++kernel_get_sysvipc_info(openshift_user_domain) ++ ++corecmd_exec_bin(openshift_user_domain) ++corecmd_exec_shell(openshift_user_domain) ++corecmd_dontaudit_exec_all_executables(openshift_user_domain) ++# corecmd_dontaudit_read_all_executables(openshift_user_domain) ++ ++dev_list_sysfs(openshift_user_domain) ++dev_read_rand(openshift_user_domain) ++dev_dontaudit_append_rand(openshift_user_domain) ++dev_dontaudit_write_urand(openshift_user_domain) ++dev_dontaudit_getattr_all_blk_files(openshift_user_domain) ++dev_dontaudit_getattr_all_chr_files(openshift_user_domain) ++ ++domain_use_interactive_fds(openshift_user_domain) ++domain_dontaudit_read_all_domains_state(openshift_user_domain) ++ ++fs_rw_hugetlbfs_files(openshift_user_domain) ++fs_dontaudit_rw_anon_inodefs_files(openshift_user_domain) ++fs_search_tmpfs(openshift_user_domain) ++fs_getattr_xattr_fs(openshift_user_domain) ++fs_dontaudit_getattr_all_fs(openshift_user_domain) ++fs_list_inotifyfs(openshift_user_domain) ++fs_dontaudit_list_auto_mountpoints(openshift_user_domain) ++fs_dontaudit_list_tmpfs(openshift_user_domain) ++storage_dontaudit_getattr_fixed_disk_dev(openshift_user_domain) ++storage_getattr_fixed_disk_dev(openshift_user_domain) ++fs_get_xattr_fs_quotas(openshift_user_domain) ++fs_rw_inherited_tmpfs_files(openshift_user_domain) ++fs_dontaudit_rw_anon_inodefs_files(openshift_user_domain) ++ ++dontaudit openshift_domain file_type:dir read; ++files_dontaudit_list_home(openshift_user_domain) ++files_dontaudit_search_all_pids(openshift_user_domain) ++files_dontaudit_getattr_all_dirs(openshift_user_domain) ++files_dontaudit_getattr_all_files(openshift_user_domain) ++files_dontaudit_list_mnt(openshift_user_domain) ++files_dontaudit_list_var(openshift_user_domain) ++files_dontaudit_getattr_lost_found_dirs(openshift_user_domain) ++files_dontaudit_search_all_mountpoints(openshift_user_domain) ++files_dontaudit_search_spool(openshift_user_domain) ++files_dontaudit_search_all_dirs(openshift_user_domain) ++files_dontaudit_list_var(openshift_user_domain) ++files_read_etc_files(openshift_user_domain) ++files_exec_etc_files(openshift_user_domain) ++files_read_usr_files(openshift_user_domain) ++files_dontaudit_getattr_non_security_sockets(openshift_user_domain) ++files_dontaudit_setattr_etc_runtime_files(openshift_user_domain) ++ ++libs_exec_lib_files(openshift_user_domain) ++libs_exec_ld_so(openshift_user_domain) ++ ++logging_send_syslog_msg(openshift_user_domain) ++ ++selinux_validate_context(openshift_user_domain) ++ ++logging_inherit_append_all_logs(openshift_user_domain) ++ ++init_dontaudit_read_utmp(openshift_user_domain) ++ ++miscfiles_read_localization(openshift_user_domain) ++miscfiles_read_fonts(openshift_user_domain) ++miscfiles_read_man_pages(openshift_user_domain) ++miscfiles_dontaudit_setattr_fonts_cache_dirs(openshift_user_domain) ++ ++mta_dontaudit_read_spool_symlinks(openshift_user_domain) ++ ++term_dontaudit_search_ptys(openshift_user_domain) ++term_use_ptmx(openshift_user_domain) ++ ++userdom_dontaudit_search_admin_dir(openshift_user_domain) ++ ++application_exec(openshift_user_domain) ++ ++optional_policy(` ++ apache_exec(openshift_user_domain) ++ apache_exec_modules(openshift_user_domain) ++ apache_list_modules(openshift_user_domain) ++ apache_read_config(openshift_user_domain) ++ apache_search_config(openshift_user_domain) ++ apache_read_sys_content(openshift_user_domain) ++ apache_exec_sys_script(openshift_user_domain) ++') ++ ++######################################## ++# ++# openshift initrc local policy ++# ++ ++mcs_process_set_categories(openshift_initrc_t) ++ ++manage_dirs_pattern(openshift_initrc_t, openshift_initrc_tmp_t, openshift_initrc_tmp_t) ++manage_files_pattern(openshift_initrc_t, openshift_initrc_tmp_t, openshift_initrc_tmp_t) ++manage_lnk_files_pattern(openshift_initrc_t, openshift_initrc_tmp_t, openshift_initrc_tmp_t) ++files_tmp_filetrans(openshift_initrc_t, openshift_initrc_tmp_t, { file dir }) ++ ++manage_dirs_pattern(openshift_initrc_t, openshift_var_run_t, openshift_var_run_t) ++manage_files_pattern(openshift_initrc_t, openshift_var_run_t, openshift_var_run_t) ++manage_lnk_files_pattern(openshift_initrc_t, openshift_var_run_t, openshift_var_run_t) ++files_pid_filetrans(openshift_initrc_t, openshift_var_run_t, { file dir }) ++ ++manage_dirs_pattern(openshift_initrc_t, openshift_log_t, openshift_log_t) ++manage_files_pattern(openshift_initrc_t, openshift_log_t, openshift_log_t) ++logging_log_filetrans(openshift_initrc_t, openshift_log_t, { file dir }) ++ ++allow openshift_initrc_t openshift_user_domain:process { getattr getsched setsched transition signal signull sigkill }; ++allow openshift_user_domain openshift_initrc_t:fd use; ++allow openshift_user_domain openshift_initrc_t:fifo_file rw_inherited_fifo_file_perms; ++allow openshift_user_domain openshift_initrc_t:process sigchld; ++dontaudit openshift_user_domain openshift_initrc_t:key view; ++dontaudit openshift_user_domain openshift_initrc_t:process signull; ++dontaudit openshift_user_domain openshift_initrc_t:socket_class_set { read write }; ++ ++optional_policy(` ++ unconfined_domain_noaudit(openshift_initrc_t) ++') ++ ++######################################## ++# ++# generic policy ++# ++ ++corecmd_exec_all_executables(openshift_user_domain) ++ ++optional_policy(` ++ apache_entrypoint(openshift_user_domain) ++') ++ ++optional_policy(` ++ ssh_getattr_user_home_dir(openshift_user_domain) ++ ssh_dontaudit_search_user_home_dir(openshift_user_domain) ++') ++ ++######################################## ++# ++# Cron support ++# ++ ++optional_policy(` ++ cron_role(system_r, openshift_user_domain) ++') ++ ++######################################## ++# ++# Mysql support ++# ++ ++allow openshift_user_domain self:process setexec; ++ ++optional_policy(` ++ mysql_search_db(openshift_user_domain) ++') ++ ++######################################## ++# ++# Node.js support ++# ++ ++allow openshift_user_domain anon_inodefs_t:file write; ++ ++############################################# ++# ++# openshift cgi script policy ++# ++ ++optional_policy(` ++ apache_content_template(openshift) ++ domtrans_pattern(httpd_openshift_script_t, openshift_initrc_exec_t, openshift_initrc_t) ++ oddjob_dbus_chat(httpd_openshift_script_t) ++ dbus_system_bus_client(httpd_openshift_script_t) ++ ') ++ ++ ++################################# ++# Potentially dangerous configs # ++################################# ++ ++# Allow users to execute files in their home dir ++allow openshift_user_domain openshift_var_lib_t:file { execute execute_no_trans }; ++ ++################################# ++# Allow Log Rotation # ++################################# ++ ++corecmd_shell_entry_type(openshift_user_domain) ++corecmd_bin_entry_type(openshift_user_domain) ++userdom_use_inherited_user_ptys(openshift_user_domain) ++ ++optional_policy(` ++ oddjob_dontaudit_rw_fifo_file(openshift_user_domain) ++') ++type openshift_cgroup_read_t; ++type openshift_cgroup_read_exec_t; ++application_domain(openshift_cgroup_read_t, openshift_cgroup_read_exec_t) ++ ++optional_policy(` ++ gpg_entry_type(openshift_user_domain) ++') ++ ++optional_policy(` ++ apache_exec_rotatelogs(openshift_user_domain) ++') ++ ++######################################## ++# ++# openshift_cgroup_read local policy ++# ++ ++allow openshift_cgroup_read_t self:process { getattr signal_perms }; ++allow openshift_cgroup_read_t self:fifo_file rw_fifo_file_perms; ++allow openshift_cgroup_read_t self:unix_stream_socket create_stream_socket_perms; ++allow openshift_cgroup_read_t openshift_initrc_t:fifo_file rw_inherited_fifo_file_perms; ++ ++corecmd_exec_bin(openshift_cgroup_read_t) ++ ++dev_read_urand(openshift_cgroup_read_t) ++ ++domain_use_interactive_fds(openshift_cgroup_read_t) ++ ++files_read_etc_files(openshift_cgroup_read_t) ++ ++fs_dontaudit_rw_anon_inodefs_files(openshift_cgroup_read_t) ++ ++userdom_use_inherited_user_ptys(openshift_cgroup_read_t) ++ ++miscfiles_read_generic_certs(openshift_cgroup_read_t) ++miscfiles_read_localization(openshift_cgroup_read_t) ++ ++domtrans_pattern(openshift_domain, openshift_cgroup_read_exec_t, openshift_cgroup_read_t) ++role system_r types openshift_cgroup_read_t; ++ ++allow openshift_domain openshift_cgroup_read_t:process { getattr signal signull sigkill }; ++ ++fs_read_cgroup_files(openshift_cgroup_read_t) ++ ++allow openshift_cgroup_read_t openshift_var_lib_t:dir list_dir_perms; ++read_files_pattern(openshift_cgroup_read_t, openshift_var_lib_t, openshift_var_lib_t) ++ ++optional_policy(` ++ ssh_dontaudit_use_ptys(openshift_cgroup_read_t) ++') ++ ++####################################################### ++# ++# Policy for all openshift user domain process ++# ++ ++allow openshift_domain self:process ptrace; ++ ++manage_dirs_pattern(openshift_domain, openshift_rw_file_t, openshift_rw_file_t) ++manage_files_pattern(openshift_domain, openshift_rw_file_t, openshift_rw_file_t) ++manage_fifo_files_pattern(openshift_domain, openshift_rw_file_t, openshift_rw_file_t) ++manage_sock_files_pattern(openshift_domain, openshift_rw_file_t, openshift_rw_file_t) ++manage_lnk_files_pattern(openshift_domain, openshift_rw_file_t, openshift_rw_file_t) ++list_dirs_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++read_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++rw_fifo_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++rw_sock_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++read_lnk_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++ ++term_use_ptmx(openshift_domain) ++ ++optional_policy(` ++ ssh_use_ptys(openshift_domain) ++') ++ ++####################################################### ++# ++# Policy for openshift user domain process ++# ++ ++manage_dirs_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++manage_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++manage_fifo_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++manage_sock_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++manage_lnk_files_pattern(openshift_user_domain, openshift_file_type, openshift_file_type) ++allow openshift_user_domain openshift_file_type:dir_file_class_set { relabelfrom relabelto }; ++allow openshift_user_domain openshift_domain:process transition; ++allow openshift_user_domain openshift_domain:process ptrace; ++ ++############################################################################ ++# ++# Rules specific to openshift and openshift_app_t ++# ++ ++kernel_read_vm_sysctls(openshift_t) ++kernel_read_vm_sysctls(openshift_app_t) ++kernel_search_vm_sysctl(openshift_t) ++kernel_search_vm_sysctl(openshift_app_t) ++netutils_domtrans_ping(openshift_t) ++netutils_kill_ping(openshift_t) ++netutils_signal_ping(openshift_t) ++ ++openshift_net_type(openshift_app_t) ++openshift_net_type(openshift_t) diff --git a/openvpn.if b/openvpn.if index d883214..d6afa87 100644 --- a/openvpn.if @@ -45361,7 +46511,7 @@ index 2855a44..6993089 100644 + allow $1 puppet_var_run_t:dir search_dir_perms; +') diff --git a/puppet.te b/puppet.te -index baa88f6..f683a84 100644 +index baa88f6..5b66b56 100644 --- a/puppet.te +++ b/puppet.te @@ -13,6 +13,13 @@ policy_module(puppet, 1.3.0) @@ -45484,7 +46634,7 @@ index baa88f6..f683a84 100644 portage_domtrans(puppet_t) portage_domtrans_fetch(puppet_t) portage_domtrans_gcc_config(puppet_t) -@@ -164,8 +191,131 @@ optional_policy(` +@@ -164,8 +191,135 @@ optional_policy(` ') optional_policy(` @@ -45548,6 +46698,10 @@ index baa88f6..f683a84 100644 +') + +optional_policy(` ++ openshift_initrc_domtrans(puppet_t) ++') ++ ++optional_policy(` + quota_filetrans_named_content(puppet_t) +') + @@ -45618,7 +46772,7 @@ index baa88f6..f683a84 100644 ') ######################################## -@@ -184,51 +334,84 @@ allow puppetmaster_t self:udp_socket create_socket_perms; +@@ -184,51 +338,84 @@ allow puppetmaster_t self:udp_socket create_socket_perms; list_dirs_pattern(puppetmaster_t, puppet_etc_t, puppet_etc_t) read_files_pattern(puppetmaster_t, puppet_etc_t, puppet_etc_t) @@ -45709,7 +46863,7 @@ index baa88f6..f683a84 100644 optional_policy(` hostname_exec(puppetmaster_t) ') -@@ -239,3 +422,9 @@ optional_policy(` +@@ -239,3 +426,9 @@ optional_policy(` rpm_exec(puppetmaster_t) rpm_read_db(puppetmaster_t) ') @@ -49862,7 +51016,7 @@ index 137605a..7624759 100644 + ') ') diff --git a/rhsmcertd.te b/rhsmcertd.te -index 783f678..a94c367 100644 +index 783f678..72af387 100644 --- a/rhsmcertd.te +++ b/rhsmcertd.te @@ -29,6 +29,9 @@ files_pid_file(rhsmcertd_var_run_t) @@ -49875,7 +51029,7 @@ index 783f678..a94c367 100644 allow rhsmcertd_t self:fifo_file rw_fifo_file_perms; allow rhsmcertd_t self:unix_stream_socket create_stream_socket_perms; -@@ -43,17 +46,26 @@ manage_files_pattern(rhsmcertd_t, rhsmcertd_var_lib_t, rhsmcertd_var_lib_t) +@@ -43,17 +46,30 @@ manage_files_pattern(rhsmcertd_t, rhsmcertd_var_lib_t, rhsmcertd_var_lib_t) manage_dirs_pattern(rhsmcertd_t, rhsmcertd_var_run_t, rhsmcertd_var_run_t) manage_files_pattern(rhsmcertd_t, rhsmcertd_var_run_t, rhsmcertd_var_run_t) @@ -49903,6 +51057,10 @@ index 783f678..a94c367 100644 sysnet_dns_name_resolve(rhsmcertd_t) + +rpm_read_db(rhsmcertd_t) ++ ++optional_policy(` ++ gnome_dontaudit_search_config(rhsmcertd_t) ++') diff --git a/ricci.fc b/ricci.fc index 5b08327..4d5819e 100644 --- a/ricci.fc @@ -51433,7 +52591,7 @@ index 951d8f6..8ba0f86 100644 + allow rpm_script_t $1:process sigchld; +') diff --git a/rpm.te b/rpm.te -index 60149a5..aa590f5 100644 +index 60149a5..31fc8f1 100644 --- a/rpm.te +++ b/rpm.te @@ -1,12 +1,11 @@ @@ -51703,7 +52861,7 @@ index 60149a5..aa590f5 100644 ') optional_policy(` -@@ -372,8 +401,13 @@ optional_policy(` +@@ -372,8 +401,17 @@ optional_policy(` ') optional_policy(` @@ -51714,12 +52872,16 @@ index 60149a5..aa590f5 100644 +') + +optional_policy(` ++ openshift_initrc_domtrans(rpm_script_t) ++') ++ ++optional_policy(` + tzdata_domtrans(rpm_t) + tzdata_domtrans(rpm_script_t) ') optional_policy(` -@@ -381,7 +415,7 @@ optional_policy(` +@@ -381,7 +419,7 @@ optional_policy(` ') optional_policy(` @@ -51728,7 +52890,7 @@ index 60149a5..aa590f5 100644 unconfined_domtrans(rpm_script_t) optional_policy(` -@@ -394,6 +428,6 @@ optional_policy(` +@@ -394,6 +432,6 @@ optional_policy(` ') optional_policy(` @@ -63040,7 +64202,7 @@ index 6f0736b..aaee499 100644 + allow svirt_lxc_domain $1:process sigchld; ') diff --git a/virt.te b/virt.te -index 947bbc6..d820f4c 100644 +index 947bbc6..35ef05b 100644 --- a/virt.te +++ b/virt.te @@ -5,56 +5,87 @@ policy_module(virt, 1.5.0) @@ -63695,7 +64857,7 @@ index 947bbc6..d820f4c 100644 term_getattr_pty_fs(virt_domain) term_use_generic_ptys(virt_domain) term_use_ptmx(virt_domain) -@@ -459,13 +688,469 @@ logging_send_syslog_msg(virt_domain) +@@ -459,13 +688,471 @@ logging_send_syslog_msg(virt_domain) miscfiles_read_localization(virt_domain) @@ -64160,6 +65322,8 @@ index 947bbc6..d820f4c 100644 +allow virt_bridgehelper_t self:tun_socket create_socket_perms; +allow virt_bridgehelper_t self:unix_dgram_socket create_socket_perms; + ++manage_files_pattern(virt_bridgehelper_t, svirt_home_t, svirt_home_t) ++ +kernel_read_network_state(virt_bridgehelper_t) + +corenet_rw_tun_tap_dev(virt_bridgehelper_t) @@ -65897,7 +67061,7 @@ index 21ae664..cb3a098 100644 + manage_dirs_pattern($1, zarafa_var_lib_t, zarafa_var_lib_t) +') diff --git a/zarafa.te b/zarafa.te -index 91267bc..5bce06b 100644 +index 91267bc..e52c851 100644 --- a/zarafa.te +++ b/zarafa.te @@ -18,6 +18,10 @@ files_config_file(zarafa_etc_t) @@ -65911,15 +67075,19 @@ index 91267bc..5bce06b 100644 zarafa_domain_template(monitor) zarafa_domain_template(server) -@@ -51,7 +55,6 @@ auth_use_nsswitch(zarafa_deliver_t) - allow zarafa_gateway_t self:capability { chown kill }; +@@ -48,10 +52,9 @@ auth_use_nsswitch(zarafa_deliver_t) + # zarafa_gateway local policy + # + +-allow zarafa_gateway_t self:capability { chown kill }; ++allow zarafa_gateway_t self:capability { kill }; allow zarafa_gateway_t self:process setrlimit; -corenet_all_recvfrom_unlabeled(zarafa_gateway_t) corenet_all_recvfrom_netlabel(zarafa_gateway_t) corenet_tcp_sendrecv_generic_if(zarafa_gateway_t) corenet_tcp_sendrecv_generic_node(zarafa_gateway_t) -@@ -59,7 +62,22 @@ corenet_tcp_sendrecv_all_ports(zarafa_gateway_t) +@@ -59,16 +62,28 @@ corenet_tcp_sendrecv_all_ports(zarafa_gateway_t) corenet_tcp_bind_generic_node(zarafa_gateway_t) corenet_tcp_bind_pop_port(zarafa_gateway_t) @@ -65929,7 +67097,6 @@ index 91267bc..5bce06b 100644 +# zarafa-indexer local policy +# + -+allow zarafa_indexer_t self:capability chown; + +manage_dirs_pattern(zarafa_indexer_t, zarafa_indexer_tmp_t, zarafa_indexer_tmp_t) +manage_files_pattern(zarafa_indexer_t, zarafa_indexer_tmp_t, zarafa_indexer_tmp_t) @@ -65943,15 +67110,33 @@ index 91267bc..5bce06b 100644 ####################################### # -@@ -68,7 +86,6 @@ auth_use_nsswitch(zarafa_gateway_t) + # zarafa-ical local policy + # - allow zarafa_ical_t self:capability chown; +-allow zarafa_ical_t self:capability chown; -corenet_all_recvfrom_unlabeled(zarafa_ical_t) corenet_all_recvfrom_netlabel(zarafa_ical_t) corenet_tcp_sendrecv_generic_if(zarafa_ical_t) corenet_tcp_sendrecv_generic_node(zarafa_ical_t) -@@ -101,11 +118,11 @@ files_tmp_filetrans(zarafa_server_t, zarafa_server_tmp_t, { file dir }) +@@ -83,7 +98,6 @@ auth_use_nsswitch(zarafa_ical_t) + # zarafa-monitor local policy + # + +-allow zarafa_monitor_t self:capability chown; + + auth_use_nsswitch(zarafa_monitor_t) + +@@ -92,7 +106,7 @@ auth_use_nsswitch(zarafa_monitor_t) + # zarafa_server local policy + # + +-allow zarafa_server_t self:capability { chown kill net_bind_service }; ++allow zarafa_server_t self:capability { kill net_bind_service }; + allow zarafa_server_t self:process setrlimit; + + manage_dirs_pattern(zarafa_server_t, zarafa_server_tmp_t, zarafa_server_tmp_t) +@@ -101,11 +115,11 @@ files_tmp_filetrans(zarafa_server_t, zarafa_server_tmp_t, { file dir }) manage_dirs_pattern(zarafa_server_t, zarafa_var_lib_t, zarafa_var_lib_t) manage_files_pattern(zarafa_server_t, zarafa_var_lib_t, zarafa_var_lib_t) @@ -65965,7 +67150,12 @@ index 91267bc..5bce06b 100644 corenet_all_recvfrom_netlabel(zarafa_server_t) corenet_tcp_sendrecv_generic_if(zarafa_server_t) corenet_tcp_sendrecv_generic_node(zarafa_server_t) -@@ -139,7 +156,6 @@ allow zarafa_spooler_t self:capability { chown kill }; +@@ -135,11 +149,10 @@ optional_policy(` + # zarafa_spooler local policy + # + +-allow zarafa_spooler_t self:capability { chown kill }; ++allow zarafa_spooler_t self:capability { kill }; can_exec(zarafa_spooler_t, zarafa_spooler_exec_t) @@ -65973,7 +67163,44 @@ index 91267bc..5bce06b 100644 corenet_all_recvfrom_netlabel(zarafa_spooler_t) corenet_tcp_sendrecv_generic_if(zarafa_spooler_t) corenet_tcp_sendrecv_generic_node(zarafa_spooler_t) -@@ -164,8 +180,13 @@ stream_connect_pattern(zarafa_domain, zarafa_server_var_run_t, zarafa_server_var +@@ -150,11 +163,35 @@ auth_use_nsswitch(zarafa_spooler_t) + + ######################################## + # ++# zarafa_gateway local policy ++# ++ ++allow zarafa_gateway_t self:capability { kill }; ++allow zarafa_gateway_t self:process setrlimit; ++ ++corenet_tcp_bind_pop_port(zarafa_gateway_t) ++ ++####################################### ++# ++# zarafa-ical local policy ++# ++ ++ ++corenet_tcp_bind_http_cache_port(zarafa_ical_t) ++ ++###################################### ++# ++# zarafa-monitor local policy ++# ++ ++ ++######################################## ++# + # zarafa domains local policy + # + + # bad permission on /etc/zarafa +-allow zarafa_domain self:capability { dac_override setgid setuid }; ++allow zarafa_domain self:capability { dac_override chown setgid setuid }; + allow zarafa_domain self:process signal; + allow zarafa_domain self:fifo_file rw_fifo_file_perms; + allow zarafa_domain self:tcp_socket create_stream_socket_perms; +@@ -164,8 +201,13 @@ stream_connect_pattern(zarafa_domain, zarafa_server_var_run_t, zarafa_server_var read_files_pattern(zarafa_domain, zarafa_etc_t, zarafa_etc_t) diff --git a/selinux-policy.spec b/selinux-policy.spec index 08e199c..5f1571b 100644 --- a/selinux-policy.spec +++ b/selinux-policy.spec @@ -19,7 +19,7 @@ Summary: SELinux policy configuration Name: selinux-policy Version: 3.11.1 -Release: 16%{?dist} +Release: 17%{?dist} License: GPLv2+ Group: System Environment/Base Source: serefpolicy-%{version}.tgz @@ -495,6 +495,17 @@ SELinux Reference policy mls base module. %endif %changelog +* Mon Sep 10 2012 Miroslav Grepl 3.11.1-17 +- Merge openshift policy +- Allow xauth to read /dev/urandom +- systemd needs to relabel content in /run/systemd directories +- Files unconfined should be able to perform all services on all files +- Puppet tmp file can be leaked to all domains +- Dontaudit rhsmcertd-worker to search /root/.local +- Allow chown capability for zarafa domains +- Allow system cronjobs to runcon into openshift domains +- Allow virt_bridgehelper_t to manage content in the svirt_home_t labeled directories + * Fri Sep 7 2012 Miroslav Grepl 3.11.1-16 - nmbd wants to create /var/nmbd - Stop transitioning out of anaconda and firstboot, just causes AVC messages