selinux-refpolicy/policy/modules/services/rpc.if

485 lines
8.9 KiB
Plaintext

## <summary>Remote Procedure Call Daemon.</summary>
########################################
## <summary>
## RPC stub interface. No access allowed.
## </summary>
## <param name="domain" unused="true">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_stub',`
gen_require(`
type exports_t;
')
')
#######################################
## <summary>
## The template to define a rpc domain.
## </summary>
## <param name="domain_prefix">
## <summary>
## Domain prefix to be used.
## </summary>
## </param>
#
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)
########################################
#
# Policy
#
auth_use_nsswitch($1_t)
')
########################################
## <summary>
## List export files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_list_exports',`
gen_require(`
type exports_t;
')
allow $1 exports_t:dir list_dir_perms;
')
########################################
## <summary>
## Do not audit attempts to get
## attributes of export files.
## </summary>
## <param name="domain">
## <summary>
## Domain to not audit.
## </summary>
## </param>
#
interface(`rpc_dontaudit_getattr_exports',`
gen_require(`
type exports_t;
')
dontaudit $1 exports_t:file getattr;
')
########################################
## <summary>
## Read export files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_read_exports',`
gen_require(`
type exports_t;
')
allow $1 exports_t:file read_file_perms;
')
########################################
## <summary>
## Create export files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_create_exports',`
gen_require(`
type exports_t;
')
create_files_pattern($1, exports_t, exports_t)
')
########################################
## <summary>
## Write export files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_write_exports',`
gen_require(`
type exports_t;
')
allow $1 exports_t:file write;
')
########################################
## <summary>
## Execute nfsd in the nfsd domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
## </param>
#
interface(`rpc_domtrans_nfsd',`
gen_require(`
type nfsd_t, nfsd_exec_t;
')
corecmd_search_bin($1)
domtrans_pattern($1, nfsd_exec_t, nfsd_t)
')
#######################################
## <summary>
## Execute nfsd init scripts in
## the initrc domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
## </param>
#
interface(`rpc_initrc_domtrans_nfsd',`
gen_require(`
type nfsd_initrc_exec_t;
')
init_labeled_script_domtrans($1, nfsd_initrc_exec_t)
')
########################################
## <summary>
## Execute rpcd in the rpcd domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
## </param>
#
interface(`rpc_domtrans_rpcd',`
gen_require(`
type rpcd_t, rpcd_exec_t;
')
corecmd_search_bin($1)
domtrans_pattern($1, rpcd_exec_t, rpcd_t)
')
#######################################
## <summary>
## Execute rpcd init scripts in
## the initrc domain.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed to transition.
## </summary>
## </param>
#
interface(`rpc_initrc_domtrans_rpcd',`
gen_require(`
type rpcd_initrc_exec_t;
')
init_labeled_script_domtrans($1, rpcd_initrc_exec_t)
')
########################################
## <summary>
## Read the process state (/proc/pid) of
## rpcd.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_read_rpcd_state',`
gen_require(`
type rpcd_t;
')
ps_process_pattern($1, rpcd_t)
')
#######################################
## <summary>
## Inherit and use file descriptors from
## nfsd.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_use_nfsd_fds',`
gen_require(`
type nfsd_t;
')
allow $1 nfsd_t:fd use;
')
########################################
## <summary>
## Read nfs exported content.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <rolecap/>
#
interface(`rpc_read_nfs_content',`
gen_require(`
type nfsd_ro_t, nfsd_rw_t;
')
allow $1 { nfsd_ro_t nfsd_rw_t }:dir list_dir_perms;
allow $1 { nfsd_ro_t nfsd_rw_t }:file read_file_perms;
allow $1 { nfsd_ro_t nfsd_rw_t }:lnk_file read_lnk_file_perms;
')
########################################
## <summary>
## Create, read, write, and delete
## nfs exported read write content.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <rolecap/>
#
interface(`rpc_manage_nfs_rw_content',`
gen_require(`
type nfsd_rw_t;
')
manage_dirs_pattern($1, nfsd_rw_t, nfsd_rw_t)
manage_files_pattern($1, nfsd_rw_t, nfsd_rw_t)
manage_lnk_files_pattern($1, nfsd_rw_t, nfsd_rw_t)
')
########################################
## <summary>
## Create, read, write, and delete
## nfs exported read only content.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <rolecap/>
#
interface(`rpc_manage_nfs_ro_content',`
gen_require(`
type nfsd_ro_t;
')
manage_dirs_pattern($1, nfsd_ro_t, nfsd_ro_t)
manage_files_pattern($1, nfsd_ro_t, nfsd_ro_t)
manage_lnk_files_pattern($1, nfsd_ro_t, nfsd_ro_t)
')
########################################
## <summary>
## Read and write to nfsd tcp sockets.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_tcp_rw_nfs_sockets',`
gen_require(`
type nfsd_t;
')
allow $1 nfsd_t:tcp_socket rw_socket_perms;
')
########################################
## <summary>
## Read and write to nfsd udp sockets.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_udp_rw_nfs_sockets',`
gen_require(`
type nfsd_t;
')
allow $1 nfsd_t:udp_socket rw_socket_perms;
')
########################################
## <summary>
## Search nfs lib directories.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
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;
')
########################################
## <summary>
## Create nfs lib directories.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`rpc_create_nfs_state_data_dirs',`
gen_require(`
type var_lib_nfs_t;
')
files_search_var_lib($1)
create_dirs_pattern($1, var_lib_nfs_t, var_lib_nfs_t)
')
########################################
## <summary>
## Read nfs lib files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
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)
')
########################################
## <summary>
## Create, read, write, and delete
## nfs lib files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
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)
')
########################################
## <summary>
## All of the rules required to
## administrate an rpc environment.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
## <param name="role">
## <summary>
## Role allowed access.
## </summary>
## </param>
## <rolecap/>
#
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_runtime_t, gssd_tmp_t;
type nfsd_ro_t, nfsd_rw_t, gssd_keytab_t;
type nfsd_t, rpcd_t;
')
allow $1 rpc_domain:process { ptrace signal_perms };
ps_process_pattern($1, rpc_domain)
init_startstop_service($1, $2, nfsd_t, nfsd_initrc_exec_t)
init_startstop_service($1, $2, rpcd_t, rpcd_initrc_exec_t)
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_runtime($1)
admin_pattern($1, rpcd_runtime_t)
files_list_all($1)
admin_pattern($1, { nfsd_ro_t nfsd_rw_t })
files_list_tmp($1)
admin_pattern($1, gssd_tmp_t)
fs_rw_nfsd_fs($1)
')