3636e45
3636e45
## <summary>policy for sandboxX </summary>
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Execute sandbox in the sandbox domain, and
3636e45
##	allow the specified role the sandbox domain.
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
## <param name="role">
3636e45
##	<summary>
3636e45
##	The role to be allowed the sandbox domain.
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_x_transition',`
3636e45
	gen_require(`
3636e45
		type sandbox_xserver_t;
3636e45
		type sandbox_file_t;
3636e45
		attribute sandbox_x_domain;
3636e45
		attribute sandbox_tmpfs_type;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_x_domain:process { signal_perms transition };
3636e45
	dontaudit $1 sandbox_x_domain:process { noatsecure siginh rlimitinh };
3636e45
	allow sandbox_x_domain $1:process { sigchld signull };
3636e45
	allow { sandbox_x_domain sandbox_xserver_t } $1:fd use;
3636e45
	role $2 types sandbox_x_domain;
3636e45
	role $2 types sandbox_xserver_t;
3636e45
	allow $1 sandbox_xserver_t:process signal_perms;
3636e45
	dontaudit sandbox_xserver_t $1:fifo_file rw_inherited_fifo_file_perms;
3636e45
	dontaudit sandbox_xserver_t $1:tcp_socket rw_socket_perms;
3636e45
	dontaudit sandbox_xserver_t $1:udp_socket rw_socket_perms;
3636e45
	allow sandbox_xserver_t $1:unix_stream_socket { connectto rw_socket_perms };
3636e45
	allow sandbox_x_domain sandbox_x_domain:process signal;
3636e45
	# Dontaudit leaked file descriptors
3636e45
	dontaudit sandbox_x_domain $1:fifo_file { read write };
3636e45
	dontaudit sandbox_x_domain $1:tcp_socket rw_socket_perms;
3636e45
	dontaudit sandbox_x_domain $1:udp_socket rw_socket_perms;
3636e45
	dontaudit sandbox_x_domain $1:unix_stream_socket { read write };
3636e45
	dontaudit sandbox_x_domain $1:process { signal sigkill };
3636e45
	
3636e45
	allow $1 sandbox_tmpfs_type:file manage_file_perms;
3636e45
	dontaudit $1 sandbox_tmpfs_type:file manage_file_perms;
3636e45
3636e45
	can_exec($1, sandbox_file_t)
3636e45
	allow $1 sandbox_file_t:filesystem getattr;
3636e45
	manage_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_dirs_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_sock_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_fifo_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_lnk_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	relabel_dirs_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
	relabel_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
	relabel_lnk_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
	relabel_fifo_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
	relabel_sock_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Creates types and rules for a basic
3636e45
##	sandbox process domain.
3636e45
## </summary>
3636e45
## <param name="prefix">
3636e45
##	<summary>
3636e45
##	Prefix for the domain.
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
template(`sandbox_x_domain_template',`
3636e45
	gen_require(`
3636e45
		type xserver_exec_t, sandbox_devpts_t;
3636e45
		type sandbox_xserver_t;
3636e45
		type sandbox_exec_t;
3636e45
		attribute sandbox_x_domain;
3636e45
		attribute sandbox_tmpfs_type;
3636e45
		attribute sandbox_type;
3636e45
	')
3636e45
3636e45
	type $1_t, sandbox_x_domain, sandbox_type;
3636e45
	application_type($1_t)
1f86dac
	mcs_constrained($1_t)
3636e45
1bafb67
	kernel_read_system_state($1_t)
9dfaa7b
	selinux_get_fs_mount($1_t)
1bafb67
3636e45
	auth_use_nsswitch($1_t)
3636e45
05b4f84
	logging_send_syslog_msg($1_t)
05b4f84
3636e45
	# window manager
3636e45
	miscfiles_setattr_fonts_cache_dirs($1_t)
3636e45
	allow $1_t self:capability setuid;
3636e45
3636e45
	type $1_client_t, sandbox_x_domain;
3636e45
	application_type($1_client_t)
f51212d
	kernel_read_system_state($1_client_t)
f51212d
1f86dac
	mcs_constrained($1_t)
3636e45
3636e45
	type $1_client_tmpfs_t, sandbox_tmpfs_type;
3636e45
	files_tmpfs_file($1_client_tmpfs_t)
3636e45
3636e45
	manage_files_pattern($1_client_t, $1_client_tmpfs_t, $1_client_tmpfs_t)
3636e45
	manage_files_pattern($1_t, $1_client_tmpfs_t, $1_client_tmpfs_t)
3636e45
	fs_tmpfs_filetrans($1_client_t, $1_client_tmpfs_t, file )
3636e45
	fs_tmpfs_filetrans($1_t, $1_client_tmpfs_t, file )
3636e45
	# Pulseaudio tmpfs files with different MCS labels
3636e45
	dontaudit $1_client_t $1_client_tmpfs_t:file { read write };
3636e45
	dontaudit $1_t $1_client_tmpfs_t:file { read write };
3636e45
	allow sandbox_xserver_t $1_client_tmpfs_t:file { read write };
3636e45
3636e45
	domtrans_pattern($1_t, xserver_exec_t, sandbox_xserver_t)
3636e45
	allow $1_t sandbox_xserver_t:process signal_perms;
3636e45
3636e45
	domtrans_pattern($1_t, sandbox_exec_t, $1_client_t)
3636e45
	domain_entry_file($1_client_t,  sandbox_exec_t)
3636e45
3636e45
	ps_process_pattern(sandbox_xserver_t, $1_client_t)
3636e45
	ps_process_pattern(sandbox_xserver_t, $1_t)
3636e45
	allow sandbox_xserver_t $1_client_t:shm rw_shm_perms;
3636e45
	allow sandbox_xserver_t $1_t:shm rw_shm_perms;
3636e45
	allow $1_client_t $1_t:unix_stream_socket connectto;
3636e45
	allow $1_t $1_client_t:unix_stream_socket connectto;
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	allow domain to read, 
3636e45
##	write sandbox_xserver tmp files
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_rw_xserver_tmpfs_files',`
3636e45
	gen_require(`
3636e45
		type sandbox_xserver_tmpfs_t;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_xserver_tmpfs_t:file rw_file_perms;
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	allow domain to read
3636e45
##	sandbox tmpfs files
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_read_tmpfs_files',`
3636e45
	gen_require(`
3636e45
		attribute sandbox_tmpfs_type;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_tmpfs_type:file read_file_perms;
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	allow domain to manage
3636e45
##	sandbox tmpfs files
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_manage_tmpfs_files',`
3636e45
	gen_require(`
3636e45
		attribute sandbox_tmpfs_type;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_tmpfs_type:file manage_file_perms;
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Delete sandbox files
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_delete_files',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	delete_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Manage sandbox content
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_manage_content',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_file_t:filesystem getattr;
3636e45
	manage_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_dirs_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_sock_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_fifo_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
	manage_lnk_files_pattern($1, sandbox_file_t, sandbox_file_t);
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Delete sandbox symbolic links
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_delete_lnk_files',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	delete_lnk_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Delete sandbox fifo files
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_delete_pipes',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	delete_fifo_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Delete sandbox sock files
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_delete_sock_files',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	delete_sock_files_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Allow domain to  set the attributes
3636e45
##	of the sandbox directory.
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_setattr_dirs',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_file_t:dir setattr;
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Delete sandbox directories
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_delete_dirs',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	delete_dirs_pattern($1, sandbox_file_t, sandbox_file_t)
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	allow domain to list sandbox dirs
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_list',`
3636e45
	gen_require(`
3636e45
		type sandbox_file_t;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_file_t:dir list_dir_perms;
3636e45
')
3636e45
3636e45
########################################
3636e45
## <summary>
3636e45
##	Read and write a sandbox domain pty.
3636e45
## </summary>
3636e45
## <param name="domain">
3636e45
##	<summary>
3636e45
##	Domain allowed access.
3636e45
##	</summary>
3636e45
## </param>
3636e45
#
3636e45
interface(`sandbox_use_ptys',`
3636e45
	gen_require(`
3636e45
		type sandbox_devpts_t;
3636e45
	')
3636e45
3636e45
	allow $1 sandbox_devpts_t:chr_file rw_inherited_term_perms;
3636e45
')
9e6ba0c
9e6ba0c
#######################################
9e6ba0c
## <summary>
9e6ba0c
##  Allow domain to execute sandbox_file_t in the caller domain.
9e6ba0c
## </summary>
9e6ba0c
## <param name="domain">
9e6ba0c
##  <summary>
9e6ba0c
##  Domain allowed access.
9e6ba0c
##  </summary>
9e6ba0c
## </param>
9e6ba0c
#
9e6ba0c
interface(`sandbox_exec_file',`
9e6ba0c
    gen_require(`
9e6ba0c
        type sandbox_file_t;
9e6ba0c
    ')
9e6ba0c
9e6ba0c
	can_exec($1, sandbox_file_t)
9e6ba0c
')
9e6ba0c
9e6ba0c
######################################
9e6ba0c
## <summary>
9e6ba0c
##  Allow domain to execute sandbox_file_t in the caller domain.
9e6ba0c
## </summary>
9e6ba0c
## <param name="domain">
9e6ba0c
##  <summary>
9e6ba0c
##  Domain allowed access.
9e6ba0c
##  </summary>
9e6ba0c
## </param>
9e6ba0c
#
9e6ba0c
interface(`sandbox_dontaudit_mounton',`
9e6ba0c
    gen_require(`
9e6ba0c
        type sandbox_file_t;
9e6ba0c
    ')
9e6ba0c
9e6ba0c
	dontaudit $1 sandbox_file_t:dir mounton;
9e6ba0c
')