diff --git a/refpolicy/policy/modules/services/rpc.te b/refpolicy/policy/modules/services/rpc.te
index 710646a..c67e85b 100644
--- a/refpolicy/policy/modules/services/rpc.te
+++ b/refpolicy/policy/modules/services/rpc.te
@@ -40,26 +40,32 @@ files_config_file(var_lib_nfs_t)
allow rpcd_t self:fifo_file rw_file_perms;
allow rpcd_t self:file { getattr read };
-dontaudit userdomain exports_t:file getattr;
-allow rpcd_t rpcd_var_run_t:file create_file_perms;
-allow rpcd_t rpcd_var_run_t:dir create_dir_perms;
-allow rpcd_t rpcd_var_run_t:dir setattr;
+allow rpcd_t rpcd_var_run_t:file manage_file_perms;
+allow rpcd_t rpcd_var_run_t:dir { rw_dir_perms setattr };
files_create_pid(rpcd_t,rpcd_var_run_t)
kernel_search_network_state(rpcd_t)
# for rpc.rquotad
kernel_read_sysctl(rpcd_t)
-fs_read_rpc_dirs(rpcd_t)
-fs_read_rpc_files(rpcd_t)
-fs_read_rpc_symlinks(rpcd_t)
+corenet_udp_bind_generic_port(rpcd_t)
+corenet_udp_bind_reserved_port(rpcd_t)
+
+fs_read_rpc_dirs(rpcd_t)
+fs_read_rpc_files(rpcd_t)
+fs_read_rpc_symlinks(rpcd_t)
fs_read_rpc_sockets(rpcd_t)
-term_use_controlling_term(rpcd_t)
+term_use_controlling_term(rpcd_t)
+
+# cjp: this should really have its own type
+files_manage_mounttab(rpcd_t)
seutil_dontaudit_search_config(rpcd_t)
+# FIXME
+dontaudit userdomain exports_t:file getattr;
-ifdef(`distro_redhat', `
+ifdef(`distro_redhat',`
allow rpcd_t self:capability { chown dac_override setgid setuid };
')
@@ -78,7 +84,9 @@ kernel_read_system_state(nfsd_t)
kernel_read_network_state(nfsd_t)
kernel_udp_sendfrom(nfsd_t)
kernel_tcp_recvfrom(nfsd_t)
-
+
+corenet_udp_bind_generic_port(nfsd_t)
+
fs_mount_nfsd_fs(nfsd_t)
fs_search_nfsd_fs(nfsd_t)
fs_getattr_all_fs(nfsd_t)
@@ -90,6 +98,8 @@ term_use_controlling_term(nfsd_t)
files_search_pids(nfsd_t)
# for exportfs and rpc.mountd
files_getattr_tmp_dir(nfsd_t)
+# cjp: this should really have its own type
+files_manage_mounttab(rpcd_t)
tunable_policy(`nfs_export_all_rw',`
auth_read_all_dirs_except_shadow(nfsd_t)
diff --git a/refpolicy/policy/modules/system/files.if b/refpolicy/policy/modules/system/files.if
index 471fd28..6bfabae 100644
--- a/refpolicy/policy/modules/system/files.if
+++ b/refpolicy/policy/modules/system/files.if
@@ -2655,6 +2655,9 @@ interface(`files_read_var_lib_symlinks',`
allow $1 var_lib_t:lnk_file { getattr read };
')
+# cjp: the next two interfaces really need to be fixed
+# in some way. They really neeed their own types.
+
########################################
#
# files_manage_urandom_seed(domain)
@@ -2666,7 +2669,26 @@ interface(`files_manage_urandom_seed',`
allow $1 var_t:dir search_dir_perms;
allow $1 var_lib_t:dir rw_dir_perms;
- allow $1 var_lib_t:file { getattr create read write setattr unlink };
+ allow $1 var_lib_t:file manage_file_perms;
+')
+
+########################################
+##
+## Allow domain to manage mount tables
+## necessary for rpcd, nfsd, etc.
+##
+##
+## Domain allowed access.
+##
+#
+interface(`files_manage_mounttab',`
+ gen_require(`
+ type var_t, var_lib_t;
+ ')
+
+ allow $1 var_t:dir search_dir_perms;
+ allow $1 var_lib_t:dir rw_dir_perms;
+ allow $1 var_lib_t:file manage_file_perms;
')
########################################