policy_module(samba,1.0) ################################# # # Declarations # type nmbd_t; type nmbd_exec_t; init_daemon_domain(nmbd_t,nmbd_exec_t) type nmbd_var_run_t; files_pid_file(nmbd_var_run_t) type samba_etc_t; files_config_file(samba_etc_t) type samba_log_t; logging_log_file(samba_log_t) type samba_net_t; domain_type(samba_net_t) role system_r types samba_net_t; type samba_net_exec_t; domain_entry_file(samba_net_t,samba_net_exec_t) type samba_net_tmp_t; files_tmp_file(samba_net_tmp_t) type samba_secrets_t; files_type(samba_secrets_t) type samba_share_t; files_config_file(samba_share_t) type samba_var_t; files_type(samba_var_t) type smbd_t; type smbd_exec_t; init_daemon_domain(smbd_t,smbd_exec_t) type smbd_tmp_t; files_tmp_file(smbd_tmp_t) type smbd_var_run_t; files_pid_file(smbd_var_run_t) type smbmount_t; domain_type(smbmount_t) type smbmount_exec_t; domain_entry_file(smbmount_t,smbmount_exec_t) type winbind_t; # privhome type winbind_exec_t; init_daemon_domain(winbind_t,winbind_exec_t) type winbind_helper_t; domain_type(winbind_helper_t) role system_r types winbind_helper_t; type winbind_helper_exec_t; domain_entry_file(winbind_helper_t,winbind_helper_exec_t) type winbind_log_t; logging_log_file(winbind_log_t) type winbind_tmp_t; files_tmp_file(winbind_tmp_t) type winbind_var_run_t; files_pid_file(winbind_var_run_t) ######################################## # # Samba net local policy # allow samba_net_t self:unix_dgram_socket create_socket_perms; allow samba_net_t self:unix_stream_socket create_stream_socket_perms; allow samba_net_t self:udp_socket create_socket_perms; allow samba_net_t self:tcp_socket create_socket_perms; allow samba_net_t samba_etc_t:file r_file_perms; allow samba_net_t samba_secrets_t:file create_file_perms; allow samba_net_t samba_etc_t:dir rw_dir_perms; type_transition samba_net_t samba_etc_t:file samba_secrets_t; allow samba_net_t samba_net_tmp_t:dir create_dir_perms; allow samba_net_t samba_net_tmp_t:file create_file_perms; files_create_tmp_files(samba_net_t, samba_net_tmp_t, { file dir }) allow samba_net_t samba_var_t:dir rw_dir_perms; allow samba_net_t samba_var_t:lnk_file create_lnk_perms; allow samba_net_t samba_var_t:file create_lnk_perms; kernel_read_proc_symlinks(samba_net_t) corenet_tcp_sendrecv_all_if(samba_net_t) corenet_udp_sendrecv_all_if(samba_net_t) corenet_raw_sendrecv_all_if(samba_net_t) corenet_tcp_sendrecv_all_nodes(samba_net_t) corenet_udp_sendrecv_all_nodes(samba_net_t) corenet_raw_sendrecv_all_nodes(samba_net_t) corenet_tcp_sendrecv_all_ports(samba_net_t) corenet_udp_sendrecv_all_ports(samba_net_t) corenet_tcp_bind_all_nodes(samba_net_t) corenet_udp_bind_all_nodes(samba_net_t) corenet_tcp_connect_smbd_port(samba_net_t) dev_read_urand(samba_net_t) domain_use_wide_inherit_fd(samba_net_t) files_read_etc_files(samba_net_t) libs_use_ld_so(samba_net_t) libs_use_shared_libs(samba_net_t) logging_send_syslog_msg(samba_net_t) miscfiles_read_localization(samba_net_t) sysnet_read_config(samba_net_t) userdom_dontaudit_search_sysadm_home_dir(samba_net_t) ifdef(`targeted_policy',` term_use_generic_pty(samba_net_t) term_use_unallocated_tty(samba_net_t) ') optional_policy(`kerberos.te',` kerberos_use(samba_net_t) ') optional_policy(`ldap.te',` allow samba_net_t self:tcp_socket create_socket_perms; corenet_tcp_sendrecv_all_if(samba_net_t) corenet_raw_sendrecv_all_if(samba_net_t) corenet_tcp_sendrecv_all_nodes(samba_net_t) corenet_raw_sendrecv_all_nodes(samba_net_t) corenet_tcp_sendrecv_ldap_port(samba_net_t) corenet_tcp_bind_all_nodes(samba_net_t) sysnet_read_config(samba_net_t) ') optional_policy(`nscd.te',` nscd_use_socket(samba_net_t) ') ifdef(`TODO',` in_user_role(samba_net_t) ') ######################################## # # smbd Local policy # allow smbd_t self:capability { setgid setuid sys_resource lease dac_override dac_read_search }; dontaudit smbd_t self:capability sys_tty_config; allow smbd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; allow smbd_t self:process setrlimit; allow smbd_t self:fd use; allow smbd_t self:fifo_file rw_file_perms; allow smbd_t self:msg { send receive }; allow smbd_t self:msgq create_msgq_perms; allow smbd_t self:sem create_sem_perms; allow smbd_t self:shm create_shm_perms; allow smbd_t self:sock_file r_file_perms; allow smbd_t self:tcp_socket create_stream_socket_perms; allow smbd_t self:udp_socket create_socket_perms; allow smbd_t self:unix_dgram_socket { create_socket_perms sendto }; allow smbd_t self:unix_stream_socket { create_stream_socket_perms connectto }; allow smbd_t samba_etc_t:dir rw_dir_perms; allow smbd_t samba_etc_t:file { rw_file_perms setattr }; allow smbd_t samba_log_t:dir ra_dir_perms; dontaudit smbd_t samba_log_t:dir remove_name; allow smbd_t samba_log_t:file { create ra_file_perms }; allow smbd_t samba_secrets_t:dir rw_dir_perms; allow smbd_t samba_secrets_t:file create_file_perms; type_transition smbd_t samba_etc_t:file samba_secrets_t; allow smbd_t samba_share_t:dir create_dir_perms; allow smbd_t samba_share_t:file create_file_perms; allow smbd_t samba_share_t:lnk_file create_lnk_perms; allow smbd_t samba_var_t:dir create_dir_perms; allow smbd_t samba_var_t:file create_file_perms; allow smbd_t samba_var_t:lnk_file create_lnk_perms; allow smbd_t samba_var_t:sock_file create_file_perms; allow smbd_t smbd_tmp_t:dir create_dir_perms; allow smbd_t smbd_tmp_t:file create_file_perms; files_create_tmp_files(smbd_t, smbd_tmp_t, { file dir }) allow smbd_t nmbd_var_run_t:file rw_file_perms; allow smbd_t smbd_var_run_t:dir create_dir_perms; allow smbd_t smbd_var_run_t:file create_file_perms; allow smbd_t smbd_var_run_t:sock_file create_file_perms; files_create_pid(smbd_t,smbd_var_run_t) allow smbd_t winbind_var_run_t:sock_file { read write getattr }; kernel_getattr_core(smbd_t) kernel_getattr_message_if(smbd_t) kernel_read_network_state(smbd_t) kernel_read_kernel_sysctl(smbd_t) kernel_read_software_raid_state(smbd_t) kernel_read_system_state(smbd_t) corenet_tcp_sendrecv_all_if(smbd_t) corenet_udp_sendrecv_all_if(smbd_t) corenet_raw_sendrecv_all_if(smbd_t) corenet_tcp_sendrecv_all_nodes(smbd_t) corenet_udp_sendrecv_all_nodes(smbd_t) corenet_raw_sendrecv_all_nodes(smbd_t) corenet_tcp_sendrecv_all_ports(smbd_t) corenet_udp_sendrecv_all_ports(smbd_t) corenet_tcp_bind_all_nodes(smbd_t) corenet_udp_bind_all_nodes(smbd_t) corenet_tcp_bind_smbd_port(smbd_t) corenet_tcp_connect_ipp_port(smbd_t) corenet_tcp_connect_smbd_port(smbd_t) dev_read_sysfs(smbd_t) dev_read_urand(smbd_t) fs_getattr_all_fs(smbd_t) fs_get_xattr_fs_quotas(smbd_t) fs_search_auto_mountpoints(smbd_t) term_dontaudit_use_console(smbd_t) auth_use_nsswitch(smbd_t) auth_domtrans_chk_passwd(smbd_t) domain_use_wide_inherit_fd(smbd_t) files_list_var_lib(smbd_t) files_read_etc_files(smbd_t) files_read_etc_runtime_files(smbd_t) files_read_usr_files(smbd_t) files_search_spool(smbd_t) # Allow samba to list mnt_t for potential mounted dirs files_list_mnt(smbd_t) init_use_fd(smbd_t) init_use_script_pty(smbd_t) libs_use_ld_so(smbd_t) libs_use_shared_libs(smbd_t) logging_search_logs(smbd_t) logging_send_syslog_msg(smbd_t) miscfiles_read_localization(smbd_t) miscfiles_read_public_files(smbd_t) mount_send_nfs_client_request(smbd_t) sysnet_read_config(smbd_t) userdom_dontaudit_search_sysadm_home_dir(smbd_t) userdom_dontaudit_use_unpriv_user_fd(smbd_t) userdom_use_unpriv_users_fd(smbd_t) ifdef(`targeted_policy', ` files_dontaudit_read_root_file(smbd_t) term_dontaudit_use_generic_pty(smbd_t) term_dontaudit_use_unallocated_tty(smbd_t) ') tunable_policy(`allow_smbd_anon_write',` miscfiles_manage_public_files(smbd_t) ') optional_policy(`cups.te',` cups_read_rw_config(smbd_t) ') optional_policy(`kerberos.te',` kerberos_use(smbd_t) ') optional_policy(`nis.te',` nis_use_ypbind(smbd_t) ') optional_policy(`nscd.te',` nscd_use_socket(smbd_t) ') optional_policy(`selinuxutil.te',` seutil_sigchld_newrole(smbd_t) ') optional_policy(`udev.te', ` udev_read_db(smbd_t) ') ifdef(`TODO',` optional_policy(`rhgb.te',` rhgb_domain(smbd_t) ') ') dnl end TODO ifdef(`hide_broken_symptoms', ` gen_require(` type boot_t, default_t, tmpfs_t; ') dontaudit smbd_t { devpts_t boot_t default_t tmpfs_t }:dir getattr; dontaudit smbd_t devpts_t:dir getattr; ') gen_require(` type mtrr_device_t; ') allow smbd_t mtrr_device_t:file getattr; ######################################## # # nmbd Local policy # dontaudit nmbd_t self:capability sys_tty_config; allow nmbd_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; allow nmbd_t self:fd use; allow nmbd_t self:fifo_file rw_file_perms; allow nmbd_t self:msg { send receive }; allow nmbd_t self:msgq create_msgq_perms; allow nmbd_t self:sem create_sem_perms; allow nmbd_t self:shm create_shm_perms; allow nmbd_t self:sock_file r_file_perms; allow nmbd_t self:tcp_socket create_stream_socket_perms; allow nmbd_t self:udp_socket create_socket_perms; allow nmbd_t self:unix_dgram_socket { create_socket_perms sendto }; allow nmbd_t self:unix_stream_socket { create_stream_socket_perms connectto }; allow nmbd_t nmbd_var_run_t:file create_file_perms; files_create_pid(nmbd_t,nmbd_var_run_t) allow nmbd_t samba_etc_t:dir { search getattr }; allow nmbd_t samba_etc_t:file { getattr read }; allow nmbd_t samba_log_t:dir ra_dir_perms; allow nmbd_t samba_log_t:file { create ra_file_perms }; allow nmbd_t samba_var_t:dir rw_dir_perms; allow nmbd_t samba_var_t:file { lock unlink create write setattr read getattr rename }; allow nmbd_t smbd_var_run_t:dir rw_dir_perms; kernel_getattr_core(nmbd_t) kernel_getattr_message_if(nmbd_t) kernel_read_kernel_sysctl(nmbd_t) kernel_read_network_state(nmbd_t) kernel_read_software_raid_state(nmbd_t) kernel_read_system_state(nmbd_t) corenet_tcp_sendrecv_all_if(nmbd_t) corenet_udp_sendrecv_all_if(nmbd_t) corenet_raw_sendrecv_all_if(nmbd_t) corenet_tcp_sendrecv_all_nodes(nmbd_t) corenet_udp_sendrecv_all_nodes(nmbd_t) corenet_raw_sendrecv_all_nodes(nmbd_t) corenet_tcp_sendrecv_all_ports(nmbd_t) corenet_udp_sendrecv_all_ports(nmbd_t) corenet_tcp_bind_all_nodes(nmbd_t) corenet_udp_bind_all_nodes(nmbd_t) corenet_udp_bind_nmbd_port(nmbd_t) dev_read_sysfs(nmbd_t) fs_getattr_all_fs(nmbd_t) fs_search_auto_mountpoints(nmbd_t) term_dontaudit_use_console(nmbd_t) domain_use_wide_inherit_fd(nmbd_t) files_read_usr_files(nmbd_t) files_read_etc_files(nmbd_t) init_use_fd(nmbd_t) init_use_script_pty(nmbd_t) libs_use_ld_so(nmbd_t) libs_use_shared_libs(nmbd_t) logging_search_logs(nmbd_t) logging_send_syslog_msg(nmbd_t) miscfiles_read_localization(nmbd_t) sysnet_read_config(nmbd_t) userdom_dontaudit_search_sysadm_home_dir(nmbd_t) userdom_dontaudit_use_unpriv_user_fd(nmbd_t) userdom_use_unpriv_users_fd(nmbd_t) ifdef(`targeted_policy', ` files_dontaudit_read_root_file(nmbd_t) term_dontaudit_use_generic_pty(nmbd_t) term_dontaudit_use_unallocated_tty(nmbd_t) ') optional_policy(`nis.te',` nis_use_ypbind(nmbd_t) ') optional_policy(`selinuxutil.te',` seutil_sigchld_newrole(nmbd_t) ') optional_policy(`udev.te', ` udev_read_db(nmbd_t) ') ifdef(`TODO',` optional_policy(`rhgb.te',` rhgb_domain(nmbd_t) ') ') ######################################## # # smbmount Local policy # allow smbmount_t self:capability { sys_rawio sys_admin dac_override chown }; # FIXME: is all of this really necessary? allow smbmount_t self:process { fork signal_perms }; allow smbmount_t self:tcp_socket create_stream_socket_perms; allow smbmount_t self:udp_socket connect; allow smbmount_t self:unix_dgram_socket create_socket_perms; allow smbmount_t self:unix_stream_socket create_socket_perms; allow smbmount_t samba_etc_t:dir r_dir_perms; allow smbmount_t samba_etc_t:file r_file_perms; can_exec(smbmount_t, smbmount_exec_t) allow smbmount_t samba_log_t:dir r_dir_perms; allow smbmount_t samba_log_t:file create_file_perms; allow smbmount_t samba_secrets_t:file create_file_perms; allow smbmount_t samba_var_t:dir rw_dir_perms; allow smbmount_t samba_var_t:file create_file_perms; allow smbmount_t samba_var_t:lnk_file create_lnk_perms; kernel_read_system_state(smbmount_t) corenet_tcp_sendrecv_all_if(smbmount_t) corenet_raw_sendrecv_all_if(smbmount_t) corenet_udp_sendrecv_all_if(smbmount_t) corenet_tcp_sendrecv_all_nodes(smbmount_t) corenet_raw_sendrecv_all_nodes(smbmount_t) corenet_udp_sendrecv_all_nodes(smbmount_t) corenet_tcp_sendrecv_all_ports(smbmount_t) corenet_udp_sendrecv_all_ports(smbmount_t) corenet_tcp_bind_all_nodes(smbmount_t) corenet_udp_bind_all_nodes(smbmount_t) corenet_tcp_connect_all_ports(smbmount_t) fs_getattr_cifs(smbmount_t) fs_mount_cifs(smbmount_t) fs_remount_cifs(smbmount_t) fs_unmount_cifs(smbmount_t) fs_list_cifs(smbmount_t) fs_read_cifs_files(smbmount_t) storage_raw_read_fixed_disk(smbmount_t) storage_raw_write_fixed_disk(smbmount_t) term_list_ptys(smbmount_t) term_use_controlling_term(smbmount_t) corecmd_list_bin(smbmount_t) files_list_mnt(smbmount_t) files_mounton_mnt(smbmount_t) files_manage_etc_runtime_files(smbmount_t) files_read_etc_files(smbmount_t) miscfiles_read_localization(smbmount_t) mount_use_fd(smbmount_t) mount_send_nfs_client_request(smbmount_t) libs_use_ld_so(smbmount_t) libs_use_shared_libs(smbmount_t) locallogin_use_fd(smbmount_t) logging_search_logs(smbmount_t) sysnet_read_config(smbmount_t) userdom_use_all_user_fd(smbmount_t) userdom_use_sysadm_tty(smbmount_t) optional_policy(`nis.te',` nis_use_ypbind(smbmount_t) ') optional_policy(`nscd.te',` nscd_use_socket(smbmount_t) ') ifdef(`TODO',` ifdef(`cups.te', ` allow smbd_t cupsd_rw_etc_t:file { getattr read }; ') ') ######################################## # # Winbind local policy # dontaudit winbind_t self:capability sys_tty_config; allow winbind_t self:process signal_perms; allow winbind_t self:fifo_file { read write }; allow winbind_t self:unix_dgram_socket create_socket_perms; allow winbind_t self:unix_stream_socket create_stream_socket_perms; allow winbind_t self:netlink_route_socket r_netlink_socket_perms; allow winbind_t self:tcp_socket create_stream_socket_perms; allow winbind_t self:udp_socket create_socket_perms; allow winbind_t samba_etc_t:dir r_dir_perms; allow winbind_t samba_etc_t:lnk_file { getattr read }; allow winbind_t samba_etc_t:file r_file_perms; allow winbind_t samba_secrets_t:file create_file_perms; allow winbind_t samba_etc_t:dir rw_dir_perms; type_transition winbind_t samba_etc_t:file samba_secrets_t; allow winbind_t samba_log_t:dir rw_dir_perms; allow winbind_t samba_log_t:file create_file_perms; allow winbind_t samba_log_t:lnk_file create_lnk_perms; allow winbind_t samba_var_t:dir rw_dir_perms; allow winbind_t samba_var_t:file create_file_perms; allow winbind_t samba_var_t:lnk_file create_lnk_perms; allow winbind_t winbind_log_t:file create_file_perms; logging_create_log(winbind_t,winbind_log_t) allow winbind_t winbind_tmp_t:dir create_dir_perms; allow winbind_t winbind_tmp_t:file create_file_perms; files_create_tmp_files(winbind_t, winbind_tmp_t, { file dir }) allow winbind_t winbind_var_run_t:file create_file_perms; allow winbind_t winbind_var_run_t:sock_file create_file_perms; allow winbind_t winbind_var_run_t:dir rw_dir_perms; files_create_pid(winbind_t,winbind_var_run_t) kernel_read_kernel_sysctl(winbind_t) kernel_list_proc(winbind_t) kernel_read_proc_symlinks(winbind_t) corenet_tcp_sendrecv_all_if(winbind_t) corenet_udp_sendrecv_all_if(winbind_t) corenet_raw_sendrecv_all_if(winbind_t) corenet_tcp_sendrecv_all_nodes(winbind_t) corenet_udp_sendrecv_all_nodes(winbind_t) corenet_raw_sendrecv_all_nodes(winbind_t) corenet_tcp_sendrecv_all_ports(winbind_t) corenet_udp_sendrecv_all_ports(winbind_t) corenet_tcp_bind_all_nodes(winbind_t) corenet_udp_bind_all_nodes(winbind_t) corenet_tcp_connect_smbd_port(winbind_t) dev_read_sysfs(winbind_t) dev_read_urand(winbind_t) fs_getattr_all_fs(winbind_t) fs_search_auto_mountpoints(winbind_t) term_dontaudit_use_console(winbind_t) auth_domtrans_chk_passwd(winbind_t) domain_use_wide_inherit_fd(winbind_t) files_read_etc_files(winbind_t) init_use_fd(winbind_t) init_use_script_pty(winbind_t) libs_use_ld_so(winbind_t) libs_use_shared_libs(winbind_t) logging_send_syslog_msg(winbind_t) miscfiles_read_localization(winbind_t) sysnet_read_config(winbind_t) sysnet_dns_name_resolve(winbind_t) userdom_dontaudit_use_unpriv_user_fd(winbind_t) userdom_dontaudit_search_sysadm_home_dir(winbind_t) ifdef(`targeted_policy', ` term_dontaudit_use_unallocated_tty(winbind_t) term_dontaudit_use_generic_pty(winbind_t) files_dontaudit_read_root_file(winbind_t) ') optional_policy(`kerberos.te',` kerberos_use(winbind_t) ') optional_policy(`mount.te',` mount_send_nfs_client_request(winbind_t) ') optional_policy(`nscd.te',` nscd_use_socket(winbind_t) ') optional_policy(`selinuxutil.te',` seutil_sigchld_newrole(winbind_t) ') optional_policy(`udev.te', ` udev_read_db(winbind_t) ') ifdef(`TODO',` optional_policy(`rhgb.te',` rhgb_domain(winbind_t) ') ') dnl end TODO ######################################## # # Winbind helper local policy # allow winbind_helper_t self:unix_dgram_socket create_socket_perms; allow winbind_helper_t self:unix_stream_socket create_stream_socket_perms; allow winbind_helper_t samba_etc_t:dir r_dir_perms; allow winbind_helper_t samba_etc_t:lnk_file { getattr read }; allow winbind_helper_t samba_etc_t:file r_file_perms; allow winbind_helper_t samba_var_t:dir search; allow winbind_helper_t winbind_var_run_t:dir r_dir_perms; allow winbind_helper_t winbind_var_run_t:sock_file { getattr read write }; allow winbind_helper_t winbind_t:unix_stream_socket connectto; term_list_ptys(winbind_helper_t) domain_use_wide_inherit_fd(winbind_helper_t) libs_use_ld_so(winbind_helper_t) libs_use_shared_libs(winbind_helper_t) logging_send_syslog_msg(winbind_helper_t) miscfiles_read_localization(winbind_helper_t) optional_policy(`nscd.te',` nscd_use_socket(winbind_helper_t) ') optional_policy(`squid.te',` squid_read_log(winbind_helper_t) squid_append_log(winbind_helper_t) ')