selinux-policy/policy/modules/services/samba.if

815 lines
16 KiB
Plaintext
Raw Normal View History

2005-09-28 18:22:58 +00:00
## <summary>
## SMB and CIFS client/server programs for UNIX and
## name Service Switch daemon for resolving names
## from Windows NT servers.
## </summary>
2005-09-14 18:33:53 +00:00
2009-07-29 18:40:34 +00:00
########################################
## <summary>
## Execute nmbd net in the nmbd_t domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
2009-07-29 18:40:34 +00:00
## </summary>
## </param>
#
interface(`samba_domtrans_nmbd',`
gen_require(`
type nmbd_t, nmbd_exec_t;
')
corecmd_search_bin($1)
domtrans_pattern($1, nmbd_exec_t, nmbd_t)
')
#######################################
## <summary>
## Allow domain to signal samba
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`samba_signal_nmbd',`
gen_require(`
type nmbd_t;
')
allow $1 nmbd_t:process signal;
')
2009-07-29 18:40:34 +00:00
########################################
## <summary>
## Execute samba server in the samba domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
2009-07-29 18:40:34 +00:00
## </summary>
## </param>
#
interface(`samba_initrc_domtrans',`
gen_require(`
type samba_initrc_exec_t;
')
init_labeled_script_domtrans($1, samba_initrc_exec_t)
')
2005-09-14 18:33:53 +00:00
########################################
## <summary>
## Execute samba net in the samba_net domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
#
interface(`samba_domtrans_net',`
gen_require(`
type samba_net_t, samba_net_exec_t;
')
corecmd_search_bin($1)
domtrans_pattern($1, samba_net_exec_t, samba_net_t)
2005-09-14 18:33:53 +00:00
')
2010-08-26 13:41:21 +00:00
########################################
## <summary>
## Execute samba net in the samba_unconfined_net domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`samba_domtrans_unconfined_net',`
gen_require(`
type samba_unconfined_net_t, samba_net_exec_t;
')
corecmd_search_bin($1)
domtrans_pattern($1, samba_net_exec_t, samba_unconfined_net_t)
')
2005-09-14 18:33:53 +00:00
########################################
## <summary>
## Execute samba net in the samba_net domain, and
## allow the specified role the samba_net domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
## <param name="role">
## <summary>
## Role allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
2006-09-06 22:07:25 +00:00
## <rolecap/>
2005-09-14 18:33:53 +00:00
#
interface(`samba_run_net',`
gen_require(`
type samba_net_t;
')
samba_domtrans_net($1)
role $2 types samba_net_t;
')
2010-08-26 13:41:21 +00:00
#######################################
## <summary>
## The role for the samba module.
## </summary>
## <param name="role">
## <summary>
## The role to be allowed the samba_net domain.
## </summary>
## </param>
## <rolecap/>
2010-08-26 13:41:21 +00:00
#
template(`samba_role_notrans',`
gen_require(`
type smbd_t;
')
role $1 types smbd_t;
')
########################################
## <summary>
## Execute samba net in the samba_unconfined_net domain, and
## allow the specified role the samba_unconfined_net domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <param name="role">
## <summary>
## The role to be allowed the samba_unconfined_net domain.
## </summary>
## </param>
## <rolecap/>
#
interface(`samba_run_unconfined_net',`
gen_require(`
type samba_unconfined_net_t;
')
samba_domtrans_unconfined_net($1)
role $2 types samba_unconfined_net_t;
')
2005-09-14 18:33:53 +00:00
########################################
## <summary>
## Execute smbmount in the smbmount domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
#
interface(`samba_domtrans_smbmount',`
gen_require(`
type smbmount_t, smbmount_exec_t;
')
corecmd_search_bin($1)
domtrans_pattern($1, smbmount_exec_t, smbmount_t)
2005-09-14 18:33:53 +00:00
')
########################################
## <summary>
## Execute smbmount interactively and do
## a domain transition to the smbmount domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
## </param>
## <param name="role">
## <summary>
## Role allowed access.
## </summary>
## </param>
## <rolecap/>
#
interface(`samba_run_smbmount',`
gen_require(`
type smbmount_t;
')
samba_domtrans_smbmount($1)
role $2 types smbmount_t;
')
2005-09-14 18:33:53 +00:00
########################################
## <summary>
## Allow the specified domain to read
## samba configuration files.
## </summary>
## <param name="domain">
## <summary>
2005-09-14 18:33:53 +00:00
## Domain allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
2006-09-06 22:07:25 +00:00
## <rolecap/>
2005-09-14 18:33:53 +00:00
#
interface(`samba_read_config',`
gen_require(`
type samba_etc_t;
')
files_search_etc($1)
read_files_pattern($1, samba_etc_t, samba_etc_t)
2005-09-14 18:33:53 +00:00
')
########################################
## <summary>
## Allow the specified domain to read
## and write samba configuration files.
## </summary>
## <param name="domain">
## <summary>
2005-09-14 18:33:53 +00:00
## Domain allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
2006-09-06 22:07:25 +00:00
## <rolecap/>
2005-09-14 18:33:53 +00:00
#
interface(`samba_rw_config',`
gen_require(`
type samba_etc_t;
')
files_search_etc($1)
rw_files_pattern($1, samba_etc_t, samba_etc_t)
2005-09-14 18:33:53 +00:00
')
2009-07-29 18:40:34 +00:00
########################################
## <summary>
## Allow the specified domain to read
## and write samba configuration files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <rolecap/>
#
interface(`samba_manage_config',`
gen_require(`
type samba_etc_t;
')
files_search_etc($1)
manage_dirs_pattern($1, samba_etc_t, samba_etc_t)
manage_files_pattern($1, samba_etc_t, samba_etc_t)
')
2005-09-14 18:33:53 +00:00
########################################
## <summary>
## Allow the specified domain to read samba's log files.
## </summary>
## <param name="domain">
## <summary>
2005-09-14 18:33:53 +00:00
## Domain allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
2006-09-06 22:07:25 +00:00
## <rolecap/>
2005-09-14 18:33:53 +00:00
#
interface(`samba_read_log',`
gen_require(`
type samba_log_t;
')
logging_search_logs($1)
2006-12-12 20:08:08 +00:00
allow $1 samba_log_t:dir list_dir_perms;
read_files_pattern($1, samba_log_t, samba_log_t)
2005-09-14 18:33:53 +00:00
')
2007-06-19 19:11:35 +00:00
########################################
## <summary>
## Allow the specified domain to append to samba's log files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <rolecap/>
#
interface(`samba_append_log',`
gen_require(`
type samba_log_t;
')
logging_search_logs($1)
allow $1 samba_log_t:dir list_dir_perms;
allow $1 samba_log_t:file append_file_perms;
')
2005-09-14 18:33:53 +00:00
########################################
## <summary>
## Execute samba log in the caller domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
#
interface(`samba_exec_log',`
gen_require(`
type samba_log_t;
')
logging_search_logs($1)
can_exec($1, samba_log_t)
2005-09-14 18:33:53 +00:00
')
########################################
## <summary>
## Allow the specified domain to read samba's secrets.
## </summary>
## <param name="domain">
## <summary>
2005-09-14 18:33:53 +00:00
## Domain allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
#
interface(`samba_read_secrets',`
gen_require(`
type samba_secrets_t;
')
files_search_etc($1)
2008-10-20 16:10:42 +00:00
allow $1 samba_secrets_t:file read_file_perms;
2005-09-14 18:33:53 +00:00
')
2009-07-29 18:40:34 +00:00
########################################
## <summary>
## Allow the specified domain to read samba's shares
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`samba_read_share_files',`
gen_require(`
type samba_share_t;
')
allow $1 samba_share_t:filesystem getattr;
read_files_pattern($1, samba_share_t, samba_share_t)
')
2005-11-08 22:00:30 +00:00
########################################
## <summary>
## Allow the specified domain to search
## samba /var directories.
## </summary>
## <param name="domain">
## <summary>
2005-11-08 22:00:30 +00:00
## Domain allowed access.
## </summary>
2005-11-08 22:00:30 +00:00
## </param>
#
interface(`samba_search_var',`
gen_require(`
type samba_var_t;
')
2007-06-19 19:11:35 +00:00
files_search_var_lib($1)
2005-11-08 22:00:30 +00:00
allow $1 samba_var_t:dir search_dir_perms;
')
2007-06-19 19:11:35 +00:00
########################################
## <summary>
## Allow the specified domain to
## read samba /var files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`samba_read_var_files',`
gen_require(`
type samba_var_t;
')
files_search_var_lib($1)
read_files_pattern($1, samba_var_t, samba_var_t)
2007-06-19 19:11:35 +00:00
')
2009-07-29 18:40:34 +00:00
########################################
## <summary>
## Do not audit attempts to write samba
## /var files.
## </summary>
## <param name="domain">
## <summary>
## Domain to not audit.
2009-07-29 18:40:34 +00:00
## </summary>
## </param>
#
interface(`samba_dontaudit_write_var_files',`
gen_require(`
type samba_var_t;
')
dontaudit $1 samba_var_t:file write;
')
2005-11-29 21:27:15 +00:00
########################################
## <summary>
## Allow the specified domain to
## read and write samba /var files.
## </summary>
## <param name="domain">
## <summary>
2005-11-29 21:27:15 +00:00
## Domain allowed access.
## </summary>
2005-11-29 21:27:15 +00:00
## </param>
#
interface(`samba_rw_var_files',`
gen_require(`
type samba_var_t;
')
2007-06-19 19:11:35 +00:00
files_search_var_lib($1)
rw_files_pattern($1, samba_var_t, samba_var_t)
2005-11-29 21:27:15 +00:00
')
2007-06-19 19:11:35 +00:00
########################################
## <summary>
## Allow the specified domain to
## read and write samba /var files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`samba_manage_var_files',`
gen_require(`
type samba_var_t;
')
files_search_var_lib($1)
manage_files_pattern($1, samba_var_t, samba_var_t)
2010-08-26 13:41:21 +00:00
manage_lnk_files_pattern($1, samba_var_t, samba_var_t)
2007-06-19 19:11:35 +00:00
')
2009-07-29 18:40:34 +00:00
########################################
## <summary>
## Execute a domain transition to run smbcontrol.
## </summary>
## <param name="domain">
2010-09-16 09:44:20 +00:00
## <summary>
2009-07-29 18:40:34 +00:00
## Domain allowed to transition.
2010-09-16 09:44:20 +00:00
## </summary>
2009-07-29 18:40:34 +00:00
## </param>
#
interface(`samba_domtrans_smbcontrol',`
gen_require(`
type smbcontrol_t, smbcontrol_exec_t;
2009-07-29 18:40:34 +00:00
')
domtrans_pattern($1, smbcontrol_exec_t, smbcontrol_t)
')
########################################
## <summary>
## Execute smbcontrol in the smbcontrol domain, and
## allow the specified role the smbcontrol domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
2009-07-29 18:40:34 +00:00
## </summary>
## </param>
## <param name="role">
## <summary>
## Role allowed access.
2009-07-29 18:40:34 +00:00
## </summary>
## </param>
#
interface(`samba_run_smbcontrol',`
gen_require(`
type smbcontrol_t;
')
samba_domtrans_smbcontrol($1)
role $2 types smbcontrol_t;
')
########################################
## <summary>
## Execute smbd in the smbd_t domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
2009-07-29 18:40:34 +00:00
## </summary>
## </param>
#
interface(`samba_domtrans_smbd',`
gen_require(`
type smbd_t, smbd_exec_t;
')
corecmd_search_bin($1)
domtrans_pattern($1, smbd_exec_t, smbd_t)
')
######################################
## <summary>
## Allow domain to signal samba
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`samba_signal_smbd',`
gen_require(`
type smbd_t;
')
allow $1 smbd_t:process signal;
')
2007-06-19 19:11:35 +00:00
########################################
## <summary>
## Do not audit attempts to use file descriptors from samba.
## </summary>
## <param name="domain">
## <summary>
## Domain to not audit.
## </summary>
## </param>
#
interface(`samba_dontaudit_use_fds',`
gen_require(`
type smbd_t;
')
dontaudit $1 smbd_t:fd use;
')
2005-09-14 18:33:53 +00:00
########################################
## <summary>
## Allow the specified domain to write to smbmount tcp sockets.
## </summary>
## <param name="domain">
## <summary>
2005-09-14 18:33:53 +00:00
## Domain allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
#
2006-02-02 21:08:12 +00:00
interface(`samba_write_smbmount_tcp_sockets',`
2005-09-14 18:33:53 +00:00
gen_require(`
type smbmount_t;
')
allow $1 smbmount_t:tcp_socket write;
')
########################################
## <summary>
## Allow the specified domain to read and write to smbmount tcp sockets.
## </summary>
## <param name="domain">
## <summary>
2005-09-14 18:33:53 +00:00
## Domain allowed access.
## </summary>
2005-09-14 18:33:53 +00:00
## </param>
#
2006-02-02 21:08:12 +00:00
interface(`samba_rw_smbmount_tcp_sockets',`
2005-09-14 18:33:53 +00:00
gen_require(`
type smbmount_t;
')
allow $1 smbmount_t:tcp_socket { read write };
')
2005-09-28 18:22:58 +00:00
########################################
## <summary>
## Execute winbind_helper in the winbind_helper domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
2005-09-28 18:22:58 +00:00
## </param>
#
interface(`samba_domtrans_winbind_helper',`
gen_require(`
type winbind_helper_t, winbind_helper_exec_t;
')
domtrans_pattern($1, winbind_helper_exec_t, winbind_helper_t)
2010-08-26 13:41:21 +00:00
allow $1 winbind_helper_t:process signal;
2005-09-28 18:22:58 +00:00
')
########################################
## <summary>
## Execute winbind_helper in the winbind_helper domain, and
## allow the specified role the winbind_helper domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
2005-09-28 18:22:58 +00:00
## </param>
## <param name="role">
## <summary>
## Role allowed access.
## </summary>
2005-09-28 18:22:58 +00:00
## </param>
2006-09-06 22:07:25 +00:00
## <rolecap/>
2005-09-28 18:22:58 +00:00
#
interface(`samba_run_winbind_helper',`
gen_require(`
type winbind_helper_t;
')
samba_domtrans_winbind_helper($1)
role $2 types winbind_helper_t;
')
########################################
## <summary>
## Allow the specified domain to read the winbind pid files.
## </summary>
## <param name="domain">
## <summary>
2005-09-28 18:22:58 +00:00
## Domain allowed access.
## </summary>
2005-09-28 18:22:58 +00:00
## </param>
#
interface(`samba_read_winbind_pid',`
gen_require(`
type winbind_var_run_t;
')
files_search_pids($1)
2006-12-12 20:08:08 +00:00
allow $1 winbind_var_run_t:file read_file_perms;
2005-09-28 18:22:58 +00:00
')
2005-10-24 19:50:21 +00:00
########################################
## <summary>
## Connect to winbind.
## </summary>
## <param name="domain">
## <summary>
2005-10-24 19:50:21 +00:00
## Domain allowed access.
## </summary>
2005-10-24 19:50:21 +00:00
## </param>
#
2006-02-02 21:08:12 +00:00
interface(`samba_stream_connect_winbind',`
gen_require(`
type samba_var_t, winbind_t, winbind_var_run_t;
')
files_search_pids($1)
allow $1 samba_var_t:dir search_dir_perms;
stream_connect_pattern($1, winbind_var_run_t, winbind_var_run_t, winbind_t)
2008-10-17 15:52:39 +00:00
ifndef(`distro_redhat',`
gen_require(`
type winbind_tmp_t;
')
# the default for the socket is (poorly named):
# /tmp/.winbindd/pipe
files_search_tmp($1)
stream_connect_pattern($1, winbind_tmp_t, winbind_tmp_t, winbind_t)
2005-10-24 19:50:21 +00:00
')
')
2009-07-29 18:40:34 +00:00
2010-08-26 13:41:21 +00:00
########################################
## <summary>
## Create a set of derived types for apache
## web content.
## </summary>
## <param name="prefix">
## <summary>
## The prefix to be used for deriving type names.
## </summary>
## </param>
#
template(`samba_helper_template',`
gen_require(`
type smbd_t;
2010-09-16 09:41:09 +00:00
role system_r;
2010-08-26 13:41:21 +00:00
')
2010-08-26 13:41:21 +00:00
#This type is for samba helper scripts
type samba_$1_script_t;
domain_type(samba_$1_script_t)
role system_r types samba_$1_script_t;
# This type is used for executable scripts files
type samba_$1_script_exec_t;
corecmd_shell_entry_type(samba_$1_script_t)
domain_entry_file(samba_$1_script_t, samba_$1_script_exec_t)
domtrans_pattern(smbd_t, samba_$1_script_exec_t, samba_$1_script_t)
allow smbd_t samba_$1_script_exec_t:file ioctl;
')
2009-07-29 18:40:34 +00:00
########################################
## <summary>
## All of the rules required to administrate
## an samba environment
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <param name="role">
## <summary>
## The role to be allowed to manage the samba domain.
## </summary>
## </param>
## <rolecap/>
#
interface(`samba_admin',`
gen_require(`
type nmbd_t, nmbd_var_run_t, smbd_var_run_t;
type smbd_t, smbd_tmp_t, samba_secrets_t;
type samba_initrc_exec_t, samba_log_t, samba_var_t;
type samba_etc_t, samba_share_t, winbind_log_t;
type swat_var_run_t, swat_tmp_t, samba_unconfined_script_exec_t;
type winbind_var_run_t, winbind_tmp_t, samba_unconfined_script_t;
2009-07-29 18:40:34 +00:00
')
allow $1 smbd_t:process { ptrace signal_perms };
ps_process_pattern($1, smbd_t)
allow $1 nmbd_t:process { ptrace signal_perms };
ps_process_pattern($1, nmbd_t)
allow $1 samba_unconfined_script_t:process { ptrace signal_perms };
ps_process_pattern($1, samba_unconfined_script_t)
2009-07-29 18:40:34 +00:00
samba_run_smbcontrol($1, $2, $3)
samba_run_winbind_helper($1, $2, $3)
samba_run_smbmount($1, $2, $3)
samba_run_net($1, $2, $3)
init_labeled_script_domtrans($1, samba_initrc_exec_t)
domain_system_change_exemption($1)
role_transition $2 samba_initrc_exec_t system_r;
allow $2 system_r;
admin_pattern($1, nmbd_var_run_t)
admin_pattern($1, samba_etc_t)
files_list_etc($1)
admin_pattern($1, samba_log_t)
logging_list_logs($1)
admin_pattern($1, samba_secrets_t)
admin_pattern($1, samba_share_t)
admin_pattern($1, samba_var_t)
files_list_var($1)
admin_pattern($1, smbd_var_run_t)
files_list_pids($1)
admin_pattern($1, smbd_tmp_t)
files_list_tmp($1)
admin_pattern($1, swat_var_run_t)
admin_pattern($1, swat_tmp_t)
admin_pattern($1, winbind_log_t)
admin_pattern($1, winbind_tmp_t)
admin_pattern($1, winbind_var_run_t)
2010-08-26 13:41:21 +00:00
admin_pattern($1, samba_unconfined_script_exec_t)
2009-07-29 18:40:34 +00:00
')