## Remote Procedure Call Daemon for managment of network based process communication ######################################## ## ## RPC stub interface. No access allowed. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_stub',` gen_require(` type exports_t; ') ') ####################################### ## ## The template to define a rpc domain. ## ## ##

## This template creates a domain to be used for ## a new rpc daemon. ##

##
## ## ## The type of daemon to be used. ## ## # template(`rpc_domain_template',` gen_require(` attribute rpc_domain; ') ######################################## # # Declarations # type $1_t, rpc_domain; type $1_exec_t; init_daemon_domain($1_t, $1_exec_t) domain_use_interactive_fds($1_t) #################################### # # Local Policy # kernel_read_system_state($1_t) corenet_all_recvfrom_unlabeled($1_t) corenet_all_recvfrom_netlabel($1_t) auth_use_nsswitch($1_t) logging_send_syslog_msg($1_t) ') ######################################## ## ## Send UDP network traffic to rpc and recieve UDP traffic from rpc. (Deprecated) ## ## ## ## Domain allowed access. ## ## # interface(`rpc_udp_send',` refpolicywarn(`$0($*) has been deprecated.') ') ######################################## ## ## Do not audit attempts to get the attributes ## of the NFS export file. ## ## ## ## Domain to not audit. ## ## # interface(`rpc_dontaudit_getattr_exports',` gen_require(` type exports_t; ') dontaudit $1 exports_t:file getattr_file_perms; ') ######################################## ## ## Allow read access to exports. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_read_exports',` gen_require(` type exports_t; ') allow $1 exports_t:file read_file_perms; ') ######################################## ## ## Allow write access to exports. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_write_exports',` gen_require(` type exports_t; ') allow $1 exports_t:file write_file_perms; ') ######################################## ## ## Manage nfs file exports ## ## ## ## Domain allowed access. ## ## # interface(`rpc_manage_exports',` gen_require(` type exports_t; ') manage_files_pattern($1, exports_t, exports_t) ') ######################################## ## ## Watch nfs file exports ## ## ## ## Domain allowed access. ## ## # interface(`rpc_watch_exports',` gen_require(` type exports_t; ') files_search_etc($1) allow $1 exports_t:file watch_file_perms; ') ######################################## ## ## Execute domain in nfsd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`rpc_domtrans_nfsd',` gen_require(` type nfsd_t, nfsd_exec_t; ') domtrans_pattern($1, nfsd_exec_t, nfsd_t) ') ####################################### ## ## Execute domain in nfsd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`rpc_initrc_domtrans_nfsd',` gen_require(` type nfsd_initrc_exec_t; ') init_labeled_script_domtrans($1, nfsd_initrc_exec_t) ') ######################################## ## ## Execute nfsd server in the nfsd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`rpc_systemctl_nfsd',` gen_require(` type nfsd_unit_file_t; type nfsd_t; ') systemd_exec_systemctl($1) init_reload_services($1) allow $1 nfsd_unit_file_t:file read_file_perms; allow $1 nfsd_unit_file_t:service manage_service_perms; ps_process_pattern($1, nfsd_t) ') ######################################## ## ## Send kill signals to rpcd. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_kill_rpcd',` gen_require(` type rpcd_t; ') allow $1 rpcd_t:process sigkill; ') ######################################## ## ## Execute domain in rpcd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`rpc_domtrans_rpcd',` gen_require(` type rpcd_t, rpcd_exec_t; ') domtrans_pattern($1, rpcd_exec_t, rpcd_t) allow rpcd_t $1:process signal; ') ######################################## ## ## Execute rpcd in the rcpd domain, and ## allow the specified role the rpcd domain. ## ## ## ## Domain allowed to transition. ## ## ## ## ## Role allowed access. ## ## ## # interface(`rpc_run_rpcd',` gen_require(` type rpcd_t; ') rpc_domtrans_rpcd($1) role $2 types rpcd_t; ') ####################################### ## ## Execute domain in rpcd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`rpc_initrc_domtrans_rpcd',` gen_require(` type rpcd_initrc_exec_t; ') init_labeled_script_domtrans($1, rpcd_initrc_exec_t) ') ######################################## ## ## Execute rpcd server in the rpcd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`rpc_systemctl_rpcd',` gen_require(` type rpcd_unit_file_t; type rpcd_t; ') systemd_exec_systemctl($1) init_reload_services($1) allow $1 rpcd_unit_file_t:file read_file_perms; allow $1 rpcd_unit_file_t:service manage_service_perms; ps_process_pattern($1, rpcd_t) ') ######################################## ## ## Allow domain to read and write to an NFS UDP socket. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_udp_rw_nfs_sockets',` gen_require(` type nfsd_t; ') allow $1 nfsd_t:udp_socket rw_socket_perms; ') ######################################## ## ## Send UDP traffic to NFSd. (Deprecated) ## ## ## ## Domain allowed access. ## ## # interface(`rpc_udp_send_nfs',` refpolicywarn(`$0($*) has been deprecated.') ') ######################################## ## ## Search NFS state data in /var/lib/nfs. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_search_nfs_state_data',` gen_require(` type var_lib_nfs_t; ') files_search_var_lib($1) allow $1 var_lib_nfs_t:dir search_dir_perms; ') ######################################## ## ## List NFS state data in /var/lib/nfs. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_list_nfs_state_data',` gen_require(` type var_lib_nfs_t; ') files_search_var_lib($1) allow $1 var_lib_nfs_t:dir list_dir_perms; ') ######################################## ## ## Manage NFS state data in /var/lib/nfs. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_manage_nfs_state_data_dir',` gen_require(` type var_lib_nfs_t; ') files_search_var_lib($1) allow $1 var_lib_nfs_t:dir manage_dir_perms; ') ######################################## ## ## Read NFS state data in /var/lib/nfs. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_read_nfs_state_data',` gen_require(` type var_lib_nfs_t; ') files_search_var_lib($1) read_files_pattern($1, var_lib_nfs_t, var_lib_nfs_t) read_lnk_files_pattern($1, var_lib_nfs_t, var_lib_nfs_t) ') ######################################## ## ## Manage NFS state data in /var/lib/nfs. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_manage_nfs_state_data',` gen_require(` type var_lib_nfs_t; ') files_search_var_lib($1) manage_files_pattern($1, var_lib_nfs_t, var_lib_nfs_t) allow $1 var_lib_nfs_t:file relabel_file_perms; ') ######################################## ## ## Execute domain in gssd domain. ## ## ## ## Domain allowed to transition. ## ## # interface(`rpc_domtrans_gssd',` gen_require(` type gssd_t, gssd_exec_t; ') domtrans_pattern($1, gssd_exec_t, gssd_t) ') ######################################## ## ## Write keys for all user domains. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_rw_gssd_keys',` gen_require(` type gssd_t; ') allow $1 gssd_t:key { read search setattr view write }; ') ######################################## ## ## Transition to alsa named content ## ## ## ## Domain allowed access. ## ## # interface(`rpc_filetrans_var_lib_nfs_content',` gen_require(` type var_lib_nfs_t; ') files_var_lib_filetrans($1, var_lib_nfs_t, lnk_file, "nfs") ') ####################################### ## ## All of the rules required to ## administrate an rpc environment. ## ## ## ## Domain allowed access. ## ## ## ## ## Role allowed access. ## ## ## # interface(`rpc_admin',` gen_require(` attribute rpc_domain; type nfsd_initrc_exec_t, rpcd_initrc_exec_t, exports_t; type var_lib_nfs_t, rpcd_var_run_t, gssd_tmp_t; type nfsd_rw_t, gssd_keytab_t; ') allow $1 rpc_domain:process { ptrace signal_perms }; ps_process_pattern($1, rpc_domain) init_labeled_script_domtrans($1, { nfsd_initrc_exec_t rpcd_initrc_exec_t }) domain_system_change_exemption($1) role_transition $2 { nfsd_initrc_exec_t rpcd_initrc_exec_t } system_r; allow $2 system_r; files_list_etc($1) admin_pattern($1, { gssd_keytab_t exports_t }) files_list_var_lib($1) admin_pattern($1, var_lib_nfs_t) files_list_pids($1) admin_pattern($1, rpcd_var_run_t) files_list_all($1) admin_pattern($1, nfsd_rw_t ) files_list_tmp($1) admin_pattern($1, gssd_tmp_t) fs_search_nfsd_fs($1) ') ######################################## ## ## Read gssd process state files. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_read_gssd_state',` gen_require(` type gssd_t; ') ps_process_pattern($1, gssd_t) ') ######################################## ## ## Read and write to svirt_image devices. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_gssd_noatsecure',` gen_require(` type gssd_t; ') allow $1 gssd_t:process { noatsecure rlimitinh }; ') ######################################## ## ## Send and receive messages from ## ganesha over dbus. ## ## ## ## Domain allowed access. ## ## # interface(`rpc_dbus_chat_nfsd',` gen_require(` type nfsd_t; class dbus send_msg; ') allow $1 nfsd_t:dbus send_msg; allow nfsd_t $1:dbus send_msg; ')