1ec3d1a
## <summary>Devicekit modular hardware abstraction layer</summary>
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Execute a domain transition to run devicekit.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
Chris PeBenito 9401ae1
## <summary>
Chris PeBenito 9401ae1
##	Domain allowed to transition.
Chris PeBenito 9401ae1
## </summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_domtrans',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_t, devicekit_exec_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	domtrans_pattern($1, devicekit_exec_t, devicekit_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Execute a domain transition to run devicekit_disk.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed to transition.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_domtrans_disk',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_disk_t, devicekit_disk_exec_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	domtrans_pattern($1, devicekit_disk_exec_t, devicekit_disk_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Send to devicekit over a unix domain
1ec3d1a
##	datagram socket.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_dgram_send',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_t:unix_dgram_socket sendto;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Send and receive messages from
1ec3d1a
##	devicekit over dbus.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_dbus_chat',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_t;
1ec3d1a
		class dbus send_msg;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_t:dbus send_msg;
1ec3d1a
	allow devicekit_t $1:dbus send_msg;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Send and receive messages from
1ec3d1a
##	devicekit disk over dbus.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_dbus_chat_disk',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_disk_t;
1ec3d1a
		class dbus send_msg;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_disk_t:dbus send_msg;
1ec3d1a
	allow devicekit_disk_t $1:dbus send_msg;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Use file descriptors for devicekit_disk.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_use_fds_disk',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_disk_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_disk_t:fd use; 
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Dontaudit Send and receive messages from
1ec3d1a
##	devicekit disk over dbus.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain to not audit.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_dontaudit_dbus_chat_disk',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_disk_t;
1ec3d1a
		class dbus send_msg;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	dontaudit $1 devicekit_disk_t:dbus send_msg;
1ec3d1a
	dontaudit devicekit_disk_t $1:dbus send_msg;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Send signal devicekit power
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_signal_power',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_power_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_power_t:process signal;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Send and receive messages from
1ec3d1a
##	devicekit power over dbus.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_dbus_chat_power',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_power_t;
1ec3d1a
		class dbus send_msg;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_power_t:dbus send_msg;
1ec3d1a
	allow devicekit_power_t $1:dbus send_msg;
1ec3d1a
')
1ec3d1a
1ec3d1a
#######################################
1ec3d1a
## <summary>
1ec3d1a
##  Append inherited devicekit log files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##  <summary>
1ec3d1a
##  Domain allowed access.
1ec3d1a
##  </summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_append_inherited_log_files',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_var_log_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_var_log_t:file append_inherited_file_perms;
1ec3d1a
')
1ec3d1a
1ec3d1a
#######################################
1ec3d1a
## <summary>
1ec3d1a
##  Do not audit attempts to write the devicekit
1ec3d1a
##  log files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##  <summary>
1ec3d1a
##  Domain to not audit.
1ec3d1a
##  </summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_dontaudit_rw_log',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_var_log_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	dontaudit $1 devicekit_var_log_t:file rw_file_perms;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Allow the domain to read devicekit_power state files in /proc.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_read_state_power',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_power_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	kernel_search_proc($1)
1ec3d1a
	ps_process_pattern($1, devicekit_power_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Read devicekit PID files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_read_pid_files',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_var_run_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_search_pids($1)
1ec3d1a
	read_files_pattern($1, devicekit_var_run_t, devicekit_var_run_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Do not audit attempts to read
1ec3d1a
##	devicekit PID files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain to not audit.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_dontaudit_read_pid_files',`
1ec3d1a
	gen_require(` 
1ec3d1a
		type devicekit_var_run_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	dontaudit $1 devicekit_var_run_t:file read_inherited_file_perms;
1ec3d1a
')
1ec3d1a
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Manage devicekit PID files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_manage_pid_files',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_var_run_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_search_pids($1)
1ec3d1a
	manage_dirs_pattern($1, devicekit_var_run_t, devicekit_var_run_t)
1ec3d1a
	manage_files_pattern($1, devicekit_var_run_t, devicekit_var_run_t)
1ec3d1a
	files_pid_filetrans($1, devicekit_var_run_t, dir, "pm-utils")
1ec3d1a
')
1ec3d1a
1ec3d1a
#######################################
1ec3d1a
## <summary>
1ec3d1a
##  Relabel devicekit LOG files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##  <summary>
1ec3d1a
##  Domain allowed access.
1ec3d1a
##  </summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_relabel_log_files',`
1ec3d1a
    gen_require(`
1ec3d1a
        type devicekit_var_log_t;
1ec3d1a
    ')
1ec3d1a
1ec3d1a
    logging_search_logs($1)
1ec3d1a
    relabel_files_pattern($1, devicekit_var_log_t, devicekit_var_log_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Manage devicekit LOG files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_manage_log_files',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_var_log_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	logging_search_logs($1)
1ec3d1a
	manage_files_pattern($1, devicekit_var_log_t, devicekit_var_log_t)
1ec3d1a
	#logging_log_filetrans($1, devicekit_var_log_t, file, "pm-powersave.log")
1ec3d1a
	#logging_log_filetrans($1, devicekit_var_log_t, file, "pm-suspend.log")
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	All of the rules required to administrate
1ec3d1a
##	an devicekit environment
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
## <rolecap/>
1ec3d1a
#
1ec3d1a
interface(`devicekit_admin',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_t, devicekit_disk_t, devicekit_power_t;
1ec3d1a
		type devicekit_var_lib_t, devicekit_var_run_t, devicekit_tmp_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_t:process signal_perms;
1ec3d1a
	ps_process_pattern($1, devicekit_t)
1ec3d1a
	tunable_policy(`deny_ptrace',`',`
1ec3d1a
		allow $1 devicekit_t:process ptrace;
1ec3d1a
		allow $1 devicekit_disk_t:process ptrace;
1ec3d1a
		allow $1 devicekit_power_t:process ptrace;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 devicekit_disk_t:process signal_perms;
1ec3d1a
	ps_process_pattern($1, devicekit_disk_t)
1ec3d1a
1ec3d1a
	allow $1 devicekit_power_t:process signal_perms;
1ec3d1a
	ps_process_pattern($1, devicekit_power_t)
1ec3d1a
1ec3d1a
	admin_pattern($1, devicekit_tmp_t)
1ec3d1a
	files_list_tmp($1)
1ec3d1a
1ec3d1a
	admin_pattern($1, devicekit_var_lib_t)
1ec3d1a
	files_list_var_lib($1)
1ec3d1a
1ec3d1a
	admin_pattern($1, devicekit_var_run_t)
1ec3d1a
	files_list_pids($1)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Transition to devicekit named content
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##      Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`devicekit_filetrans_named_content',`
1ec3d1a
	gen_require(`
1ec3d1a
		type devicekit_var_run_t, devicekit_var_log_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_pid_filetrans($1, devicekit_var_run_t, dir, "pm-utils")
1ec3d1a
	#logging_log_filetrans($1, devicekit_var_log_t, file, "pm-powersave.log")
1ec3d1a
	#logging_log_filetrans($1, devicekit_var_log_t, file, "pm-suspend.log")
1ec3d1a
')