Dan Walsh 3eaa99
Dan Walsh 3eaa99
## <summary>policy for nsplugin</summary>
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Create, read, write, and delete
Dan Walsh 3eaa99
##	nsplugin rw files.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_manage_rw_files',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_rw_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	allow $1 nsplugin_rw_t:file manage_file_perms;
Dan Walsh 3eaa99
	allow $1 nsplugin_rw_t:dir rw_dir_perms;
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Manage nsplugin rw files.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_manage_rw',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_rw_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
         manage_dirs_pattern($1, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
         manage_files_pattern($1, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
         manage_lnk_files_pattern($1, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
#######################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	The per role template for the nsplugin module.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 5dd0c2
## <param name="user_role">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 5dd0c2
##	The role associated with the user domain.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh dfe675
## </param>
Dan Walsh 3eaa99
## <param name="user_domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	The type of the user domain.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_role_notrans',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_rw_t;
Dan Walsh 3eaa99
		type nsplugin_home_t;
Dan Walsh 3eaa99
		type nsplugin_exec_t;
Dan Walsh 3eaa99
		type nsplugin_config_exec_t;
Dan Walsh 3eaa99
		type nsplugin_t;
Dan Walsh 3eaa99
		type nsplugin_config_t;
Dan Walsh 3eaa99
		class x_drawable all_x_drawable_perms;
Dan Walsh 3eaa99
		class x_resource all_x_resource_perms;
Dan Walsh 3eaa99
		class dbus send_msg;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	role $1 types nsplugin_t;
Dan Walsh 3eaa99
	role $1 types nsplugin_config_t;
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	allow nsplugin_t $2:process signull;
Dan Walsh 3eaa99
	allow nsplugin_t $2:dbus send_msg;
Dan Walsh 3eaa99
	allow $2 nsplugin_t:dbus send_msg;
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	list_dirs_pattern($2, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
	read_files_pattern($2, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
	read_lnk_files_pattern($2, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
	can_exec($2, nsplugin_rw_t)
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	#Leaked File Descriptors
Dan Walsh 3eaa99
ifdef(`hide_broken_symptoms', `
Dan Walsh 3eaa99
	dontaudit nsplugin_t $2:socket_class_set { read write };
Dan Walsh 3eaa99
	dontaudit nsplugin_t $2:fifo_file rw_inherited_fifo_file_perms;
Dan Walsh 3eaa99
	dontaudit nsplugin_config_t $2:socket_class_set { read write };
Dan Walsh 3eaa99
	dontaudit nsplugin_config_t $2:fifo_file rw_inherited_fifo_file_perms;
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
	allow nsplugin_t $2:unix_stream_socket connectto;
Dan Walsh 3eaa99
	dontaudit nsplugin_t $2:process ptrace;
Dan Walsh 3eaa99
	allow nsplugin_t $2:sem rw_sem_perms;
Dan Walsh 3eaa99
	allow nsplugin_t $2:shm rw_shm_perms;
Dan Walsh 3eaa99
	dontaudit nsplugin_t $2:shm destroy;
Dan Walsh 3eaa99
	allow $2 nsplugin_t:sem rw_sem_perms;
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	allow $2 nsplugin_t:process { getattr ptrace signal_perms };
Dan Walsh 3eaa99
	allow $2 nsplugin_t:unix_stream_socket connectto;
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	# Connect to pulseaudit server
Dan Walsh 3eaa99
	stream_connect_pattern(nsplugin_t, user_home_t, user_home_t, $2)
Dan Walsh 3eaa99
	gnome_stream_connect(nsplugin_t, $2)
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	userdom_use_user_terminals(nsplugin_t)
Dan Walsh 3eaa99
	userdom_use_user_terminals(nsplugin_config_t)
Dan Walsh 3eaa99
	userdom_dontaudit_setattr_user_home_content_files(nsplugin_t)
Dan Walsh 3eaa99
	userdom_manage_tmpfs_role($1, nsplugin_t)
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	optional_policy(`
Dan Walsh 3eaa99
		pulseaudio_role($1, nsplugin_t)
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
#######################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Role access for nsplugin
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="userdomain_prefix">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	The prefix of the user domain (e.g., user
Dan Walsh 3eaa99
##	is the prefix for user_t).
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
## <param name="user_role">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	The role associated with the user domain.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
## <param name="user_domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	The type of the user domain.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_role',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_exec_t;
Dan Walsh 3eaa99
		type nsplugin_config_exec_t;
Dan Walsh 3eaa99
		type nsplugin_t;
Dan Walsh 3eaa99
		type nsplugin_config_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	nsplugin_role_notrans($1, $2)
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	domtrans_pattern($2, nsplugin_exec_t, nsplugin_t)
Dan Walsh 3eaa99
	domtrans_pattern($2, nsplugin_config_exec_t, nsplugin_config_t)
Dan Walsh 3eaa99
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
#######################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	The per role template for the nsplugin module.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="user_domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	The type of the user domain.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_domtrans',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_exec_t;
Dan Walsh 3eaa99
		type nsplugin_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	domtrans_pattern($1, nsplugin_exec_t, nsplugin_t)
Dan Walsh 3eaa99
	allow $1 nsplugin_t:unix_stream_socket connectto;
Dan Walsh 3eaa99
	allow nsplugin_t $1:process signal;
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
#######################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	The per role template for the nsplugin module.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="user_domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	The type of the user domain.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_domtrans_config',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_config_exec_t;
Dan Walsh 3eaa99
		type nsplugin_config_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	domtrans_pattern($1, nsplugin_config_exec_t, nsplugin_config_t)
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Search nsplugin rw directories.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_search_rw_dir',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_rw_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	allow $1 nsplugin_rw_t:dir search_dir_perms;
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Read nsplugin rw files.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_read_rw_files',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_rw_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	list_dirs_pattern($1, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
	read_files_pattern($1, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
	read_lnk_files_pattern($1, nsplugin_rw_t, nsplugin_rw_t)
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Read nsplugin home files.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_read_home',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_home_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	list_dirs_pattern($1, nsplugin_home_t, nsplugin_home_t)
Dan Walsh 3eaa99
	read_files_pattern($1, nsplugin_home_t, nsplugin_home_t)
Dan Walsh 3eaa99
	read_lnk_files_pattern($1, nsplugin_home_t, nsplugin_home_t)
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Exec nsplugin rw files.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_rw_exec',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_rw_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	can_exec($1, nsplugin_rw_t)
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Create, read, write, and delete
Dan Walsh 3eaa99
##	nsplugin home files.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_manage_home_files',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_home_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	manage_files_pattern($1, nsplugin_home_t, nsplugin_home_t)
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh da0733
##	manage nnsplugin home dirs.
Dan Walsh da0733
## </summary>
Dan Walsh da0733
## <param name="domain">
Dan Walsh da0733
##	<summary>
Dan Walsh da0733
##	Domain allowed access.
Dan Walsh da0733
##	</summary>
Dan Walsh da0733
## </param>
Dan Walsh da0733
#
Dan Walsh da0733
interface(`nsplugin_manage_home_dirs',`
Dan Walsh da0733
	gen_require(`
Dan Walsh da0733
		type nsplugin_home_t;
Dan Walsh da0733
	')
Dan Walsh da0733
Dan Walsh da0733
	manage_dirs_pattern($1, nsplugin_home_t, nsplugin_home_t)
Dan Walsh da0733
')
Dan Walsh da0733
Dan Walsh da0733
########################################
Dan Walsh da0733
## <summary>
Dan Walsh 3eaa99
##	Allow attempts to read and write to
Dan Walsh 3eaa99
##	nsplugin named pipes.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain to not audit.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_rw_pipes',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_home_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	allow $1 nsplugin_home_t:fifo_file rw_fifo_file_perms; 
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Read and write to nsplugin shared memory.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_rw_shm',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	allow $1 nsplugin_t:shm rw_shm_perms;
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
#####################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##      Allow read and write access to nsplugin semaphores.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##      <summary>
Dan Walsh 3eaa99
##      Domain allowed access.
Dan Walsh 3eaa99
##      </summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_rw_semaphores',`
Dan Walsh 3eaa99
        gen_require(`
Dan Walsh 3eaa99
                type nsplugin_t;
Dan Walsh 3eaa99
        ')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
        allow $1 nsplugin_t:sem rw_sem_perms;
Dan Walsh 3eaa99
')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
########################################
Dan Walsh 3eaa99
## <summary>
Dan Walsh 3eaa99
##	Execute nsplugin_exec_t 
Dan Walsh 3eaa99
##	in the specified domain.
Dan Walsh 3eaa99
## </summary>
Dan Walsh 3eaa99
## <desc>
Dan Walsh 3eaa99
##	

Dan Walsh 3eaa99
##	Execute a nsplugin_exec_t
Dan Walsh 3eaa99
##	in the specified domain.  
Dan Walsh 3eaa99
##	

Dan Walsh 3eaa99
##	

Dan Walsh 3eaa99
##	No interprocess communication (signals, pipes,
Dan Walsh 3eaa99
##	etc.) is provided by this interface since
Dan Walsh 3eaa99
##	the domains are not owned by this module.
Dan Walsh 3eaa99
##	

Dan Walsh 3eaa99
## </desc>
Dan Walsh 3eaa99
## <param name="domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	Domain allowed access.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
## <param name="target_domain">
Dan Walsh 3eaa99
##	<summary>
Dan Walsh 3eaa99
##	The type of the new process.
Dan Walsh 3eaa99
##	</summary>
Dan Walsh 3eaa99
## </param>
Dan Walsh 3eaa99
#
Dan Walsh 3eaa99
interface(`nsplugin_exec_domtrans',`
Dan Walsh 3eaa99
	gen_require(`
Dan Walsh 3eaa99
		type nsplugin_exec_t;
Dan Walsh 3eaa99
	')
Dan Walsh 3eaa99
Dan Walsh 3eaa99
	allow $2 nsplugin_exec_t:file entrypoint;
Dan Walsh 3eaa99
	domtrans_pattern($1, nsplugin_exec_t, $2)
Dan Walsh 3eaa99
')