selinux-refpolicy/refpolicy/policy/modules/services/samba.te

649 lines
17 KiB
Plaintext

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; #, usercanread;
files_type(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; #, customizable;
files_type(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)
miscfiles_read_localization(samba_net_t)
sysnet_read_config(samba_net_t)
userdom_dontaudit_search_sysadm_home_dir(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: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 r_file_perms;
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)
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)
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)
')
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)
')
anonymous_domain(smbd)
ifdef(`hide_broken_symptoms', `
dontaudit smbd_t { devpts_t boot_t default_t tmpfs_t }:dir getattr;
dontaudit smbd_t devpts_t:dir 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_raw_sendrecv_all_if(nmbd_t)
corenet_tcp_sendrecv_all_nodes(nmbd_t)
corenet_raw_sendrecv_all_nodes(nmbd_t)
corenet_tcp_sendrecv_all_ports(nmbd_t)
corenet_tcp_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)
')
ifdef(`TODO',`
allow winbind_helper_t squid_log_t:file ra_file_perms;
')