## ## ##

## This module creates the device node concept and provides ## the policy for many of the device files. Notable exceptions are ## the mass storage and terminal devices that are covered by other ## modules. ##

##

## This module creates the concept of a device node. That is a ## char or block device file, usually in /dev. All types that ## are used to label device nodes should use the dev_node macro. ##

##

## Additionally, this module controls access to three things: ##

##

##
######################################## ## ## ## Make the passed in type a type appropriate for ## use on device nodes (usually files in /dev). ## ## ## The object type that will be used on device nodes. ## ## # define(`dev_node',` requires_block_template(`$0'_depend) typeattribute $1 device_node; fs_associate($1) optional_policy(`distro_redhat',` fs_tmpfs_associate($1) ') ') define(`dev_node_depend',` attribute device_node; ') ######################################## ## ## ## Allow full relabeling (to and from) of all device nodes. ## ## ## Domain allowed to relabel. ## ## # define(`dev_relabel_all_dev_nodes',` requires_block_template(`$0'_depend) allow $1 device_node:dir { getattr relabelfrom }; allow $1 device_node:file { getattr relabelfrom }; allow $1 device_node:lnk_file { getattr relabelfrom }; allow $1 device_node:fifo_file { getattr relabelfrom }; allow $1 device_node:sock_file { getattr relabelfrom }; allow $1 { device_t device_node }:blk_file { getattr relabelfrom relabelto }; allow $1 { device_t device_node }:chr_file { getattr relabelfrom relabelto }; ') define(`dev_relabel_all_dev_nodes_depend',` attribute device_node; type device_t; class dir { getattr relabelfrom }; class file { getattr relabelfrom }; class lnk_file { getattr relabelfrom }; class fifo_file { getattr relabelfrom }; class sock_file { getattr relabelfrom }; class blk_file { getattr relabelfrom relabelto }; class chr_file { getattr relabelfrom relabelto }; ') ######################################## ## ## ## List all of the device nodes in a device directory. ## ## ## Domain allowed to list device nodes. ## ## # define(`dev_list_all_dev_nodes',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 device_t:lnk_file { getattr read }; ') define(`dev_list_all_dev_nodes_depend',` type device_t; class dir r_dir_perms; class lnk_file { getattr read }; ') ######################################## ## ## ## Dontaudit attempts to list all device nodes. ## ## ## Domain to dontaudit listing of device nodes. ## ## # define(`dev_dontaudit_list_all_dev_nodes',` requires_block_template(`$0'_depend) dontaudit $1 device_t:dir r_dir_perms; ') define(`dev_dontaudit_list_all_dev_nodes_depend',` type device_t; class dir r_dir_perms; ') ######################################## ## ## ## Create a directory in the device directory. ## ## ## Domain allowed to create the directory. ## ## # define(`dev_create_dir',` requires_block_template(`$0'_depend) allow $1 device_t:dir { ra_dir_perms create }; ') define(`dev_create_dir_depend',` type device_t; class dir { ra_dir_perms create }; ') ######################################## ## ## ## Dontaudit getattr on generic pipes. ## ## ## Domain to dontaudit. ## ## # define(`dev_dontaudit_getattr_generic_pipe',` requires_block_template(`$0'_depend) dontaudit $1 device_t:fifo_file getattr; ') define(`dev_dontaudit_getattr_generic_pipe_depend',` type device_t; class fifo_file getattr; ') ######################################## ## ## ## Allow getattr on generic block devices. ## ## ## Domain allowed access. ## ## # define(`dev_getattr_generic_blk_file',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 device_t:blk_file getattr; ') define(`ddev_getattr_generic_blk_file_depend',` type device_t; class dir r_dir_perms; class blk_file getattr; ') ######################################## ## ## ## Dontaudit getattr on generic block devices. ## ## ## Domain to dontaudit access. ## ## # define(`ddev_dontaudit_getattr_generic_blk_files',` requires_block_template(`$0'_depend) dontaudit $1 device_t:blk_file getattr; ') define(`dev_dontaudit_getattr_generic_blk_files_depend',` type device_t; class blk_file getattr; ') ######################################## ## ## ## Allow read, write, create, and delete for generic ## block files. ## ## ## Domain allowed access. ## ## # define(`dev_manage_generic_blk_file',` requires_block_template(`$0'_depend) allow $1 device_t:dir rw_dir_perms; allow $1 device_t:blk_file create_file_perms; ') define(`dev_manage_generic_blk_file_depend',` type device_t; class blk_file create_file_perms; ') ######################################## ## ## ## Allow read, write, and create for generic character device files. ## ## ## Domain allowed access. ## ## # define(`dev_create_generic_chr_file',` requires_block_template(`$0'_depend) allow $1 device_t:dir { getattr search read write add_name }; allow $1 device_t:chr_file create; allow $1 self:capability mknod; ') define(`dev_create_generic_chr_file_depend',` type device_t; class dir { getattr search read write add_name }; class chr_file create; class capability mknod; ') ######################################## ## ## ## Allow getattr for generic character device files. ## ## ## Domain allowed access. ## ## # define(`dev_getattr_generic_chr_file',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 device_t:chr_file getattr; ') define(`dev_getattr_generic_chr_file_depend',` type device_t; class dir r_dir_perms; class chr_file getattr; ') ######################################## ## ## ## Dontaudit getattr for generic character device files. ## ## ## Domain to dontaudit access. ## ## # define(`dev_dontaudit_getattr_generic_chr_file',` requires_block_template(`$0'_depend) dontaudit $1 device_t:chr_file getattr; ') define(`dev_dontaudit_getattr_generic_chr_file',` type device_t; class chr_file getattr; ') ######################################## ## ## ## Delete symbolic links in device directories. ## ## ## Domain allowed access. ## ## # define(`dev_del_generic_symlinks',` requires_block_template(`$0'_depend) allow $1 device_t:dir { getattr read write remove_name }; allow $1 device_t:lnk_file unlink; ') define(`dev_del_generic_symlinks_depend',` attribute device_node, memory_raw_read, memory_raw_write; type device_t; class dir { getattr read write remove_name }; class lnk_file unlink; ') ######################################## ## ## ## Create, delete, read, and write symbolic links in device directories. ## ## ## Domain allowed access. ## ## # define(`dev_manage_generic_symlinks',` requires_block_template(`$0'_depend) allow $1 device_t:dir { create read getattr lock setattr ioctl link unlink rename search add_name remove_name reparent write rmdir relabelfrom relabelto }; allow $1 device_t:lnk_file { create read getattr setattr link unlink rename }; ') define(`dev_manage_generic_symlinks_depend',` type device_t; class dir { create read getattr lock setattr ioctl link unlink rename search add_name remove_name reparent write rmdir relabelfrom relabelto }; class lnk_file { create read getattr setattr link unlink rename }; ') ######################################## ## ## ## Create, delete, read, and write device nodes in device directories. ## ## ## Domain allowed access. ## ## # define(`dev_manage_all_dev_nodes',` requires_block_template(`$0'_depend) allow $1 device_t:dir { create read getattr lock setattr ioctl link unlink rename search add_name remove_name reparent write rmdir relabelfrom relabelto }; allow $1 device_t:sock_file { create ioctl read getattr lock write setattr append link unlink rename }; allow $1 device_t:lnk_file { create read getattr setattr link unlink rename }; allow $1 device_t:{ chr_file blk_file } { create ioctl read getattr lock write setattr append link unlink rename relabelfrom relabelto }; allow $1 device_node:{ chr_file blk_file } { create ioctl read getattr lock write setattr append link unlink rename relabelfrom relabelto }; # these next rules are to satisfy assertions broken by the above lines. # the permissions hopefully can be cut back a lot storage_raw_read_fixed_disk($1) storage_raw_write_fixed_disk($1) storage_read_scsi_generic($1) storage_write_scsi_generic($1) typeattribute $1 memory_raw_read; typeattribute $1 memory_raw_write; ') define(`dev_manage_all_dev_nodes_depend',` attribute device_node, memory_raw_read, memory_raw_write; type device_t; class dir { create read getattr lock setattr ioctl link unlink rename search add_name remove_name reparent write rmdir relabelfrom relabelto }; class sock_file { create ioctl read getattr lock write setattr append link unlink rename }; class lnk_file { create read getattr setattr link unlink rename }; class chr_file { create ioctl read getattr lock write setattr append link unlink rename relabelfrom relabelto }; class blk_file { create ioctl read getattr lock write setattr append link unlink rename relabelfrom relabelto }; ') ######################################## ## ## ## Dontaudit getattr for generic device files. ## ## ## Domain to dontaudit access. ## ## # define(`dev_dontaudit_rw_generic_dev_nodes',` requires_block_template(`$0'_depend) dontaudit $1 device_t:{ chr_file blk_file } { getattr read write ioctl }; ') define(`dev_dontaudit_rw_generic_dev_nodes_depend',` type device_t; class chr_file { getattr read write ioctl }; class blk_file { getattr read write ioctl }; ') ######################################## ## ## ## Create, delete, read, and write block device files. ## ## ## Domain allowed access. ## ## # define(`dev_manage_generic_blk_file',` requires_block_template(`$0'_depend) allow $1 device_t:dir rw_dir_perms; allow $1 device_t:blk_file create_file_perms; ') define(`dev_manage_generic_blk_file_depend',` type device_t; class dir rw_dir_perms; class blk_file create_file_perms; ') ######################################## ## ## ## Create, delete, read, and write character device files. ## ## ## Domain allowed access. ## ## # define(`dev_manage_generic_chr_file',` requires_block_template(`$0'_depend) allow $1 device_t:dir rw_dir_perms; allow $1 device_t:chr_file create_file_perms; ') define(`dev_manage_generic_chr_file_depend',` type device_t; class dir rw_dir_perms; class chr_file create_file_perms; ') ######################################## ## ## ## Create, read, and write device nodes. The node ## will be transitioned to the type provided. ## ## ## Domain allowed access. ## ## ## Type to which the created node will be transitioned. ## ## ## Object class(es) (single or set including {}) for which this ## the transition will occur. ## ## # define(`dev_create_dev_node',` requires_block_template(`$0'_depend) allow $1 device_t:dir rw_dir_perms; type_transition $1 device_t:$3 $2; optional_policy(`distro_redhat',` fs_tmpfs_associate($2) ') ') define(`dev_create_dev_node_depend',` type device_t; class dir rw_dir_perms; ') ######################################## ## ## ## Getattr on all block file device nodes. ## ## ## Domain allowed access. ## ## # define(`dev_getattr_all_blk_files',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 device_node:blk_file getattr; ') define(`dev_getattr_all_blk_files_depend',` attribute device_node; class blk_file getattr; class dir r_dir_perms; ') ######################################## ## ## ## Dontaudit getattr on all block file device nodes. ## ## ## Domain to dontaudit access. ## ## # define(`dev_dontaudit_getattr_all_blk_files',` requires_block_template(`$0'_depend) allow $1 device_node:blk_file getattr; ') define(`dev_dontaudit_getattr_all_blk_files_depend',` attribute device_node; class blk_file getattr; ') ######################################## ## ## ## Getattr on all character file device nodes. ## ## ## Domain allowed access. ## ## # define(`dev_getattr_all_chr_files',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 device_node:chr_file getattr; ') define(`dev_getattr_all_chr_files_depend',` attribute device_node; class chr_file getattr; class dir r_dir_perms; ') ######################################## ## ## ## Dontaudit getattr on all character file device nodes. ## ## ## Domain to dontaudit access. ## ## # define(`dev_dontaudit_getattr_all_chr_files',` requires_block_template(`$0'_depend) dontaudit $1 device_node:chr_file getattr; ') define(`dev_dontaudit_getattr_all_chr_files_depend',` attribute device_node; class chr_file getattr; ') ######################################## ## ## ## Setattr on all block file device nodes. ## ## ## Domain allowed access. ## ## # define(`dev_setattr_all_blk_files',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 device_node:blk_file setattr; ') define(`dev_setattr_all_blk_files_depend',` attribute device_node; class dir r_dir_perms; class blk_file setattr; ') ######################################## ## ## ## Setattr on all character file device nodes. ## ## ## Domain allowed access. ## ## # define(`dev_setattr_all_chr_files',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 device_node:chr_file setattr; ') define(`dev_setattr_all_chr_files_depend',` attribute device_node; class dir r_dir_perms; class chr_file setattr; ') ######################################## ## ## ## Read, write, create, and delete all block device files. ## ## ## Domain allowed access. ## ## # define(`dev_manage_all_blk_files',` requires_block_template(`$0'_depend) allow $1 device_t:dir rw_dir_perms; allow $1 device_node:blk_file create_file_perms; # these next rules are to satisfy assertions broken by the above lines. storage_raw_read_fixed_disk($1) storage_raw_write_fixed_disk($1) storage_read_scsi_generic($1) storage_write_scsi_generic($1) ') define(`dev_manage_all_blk_files_depend',` attribute device_node; class dir rw_dir_perms; class blk_file create_file_perms; ') ######################################## ## ## ## Read, write, create, and delete all character device files. ## ## ## Domain allowed access. ## ## # define(`dev_manage_all_chr_files',` requires_block_template(`$0'_depend) allow $1 device_t:dir rw_dir_perms; allow $1 device_node:chr_file create_file_perms; typeattribute $1 memory_raw_read, memory_raw_write; ') define(`dev_manage_all_chr_files_depend',` attribute device_node, memory_raw_read, memory_raw_write; class dir rw_dir_perms; class chr_file create_file_perms; ') ######################################## ## ## ## Read raw memory devices (e.g. /dev/mem). ## ## ## Domain allowed access. ## ## # define(`dev_read_raw_memory',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 memory_device_t:chr_file r_file_perms; allow $1 self:capability sys_rawio; typeattribute $1 memory_raw_read; ') define(`dev_read_raw_memory_depend',` type device_t, memory_device_t; attribute memory_raw_read; class dir r_dir_perms; class chr_file r_file_perms; class capability sys_rawio; ') ######################################## ## ## ## Write raw memory devices (e.g. /dev/mem). ## ## ## Domain allowed access. ## ## # define(`dev_write_raw_memory',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 memory_device_t:chr_file write; allow $1 self:capability sys_rawio; typeattribute $1 memory_raw_write; ') define(`dev_write_raw_memory_depend',` type device_t, memory_device_t; attribute memory_raw_write; class dir r_dir_perms; class chr_file write; class capability sys_rawio; ') ######################################## ## ## ## Read and execute raw memory devices (e.g. /dev/mem). ## ## ## Domain allowed access. ## ## # define(`dev_rx_raw_memory',` requires_block_template(`$0'_depend) dev_read_raw_memory($1) allow $1 memory_device_t:chr_file execute; ') define(`dev_rx_raw_memory_depend',` type device_t, memory_device_t; class chr_file execute; ') ######################################## ## ## ## Write and execute raw memory devices (e.g. /dev/mem). ## ## ## Domain allowed access. ## ## # define(`dev_wx_raw_memory',` requires_block_template(`$0'_depend) dev_write_raw_memory($1) allow $1 memory_device_t:chr_file execute; ') define(`dev_wx_raw_memory_depend',` type device_t, memory_device_t; class chr_file execute; ') ######################################## ## ## ## Read from random devices (e.g., /dev/random) ## ## ## Domain allowed access. ## ## # define(`dev_read_rand',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 random_device_t:chr_file r_file_perms; ') define(`dev_read_rand_depend',` type device_t, random_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Read from pseudo random devices (e.g., /dev/urandom) ## ## ## Domain allowed access. ## ## # define(`dev_read_urand',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 urandom_device_t:chr_file r_file_perms; ') define(`dev_read_urand_depend',` type device_t, urandom_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Write to the random device (e.g., /dev/random). This adds ## entropy used to generate the random data read from the ## random device. ## ## ## Domain allowed access. ## ## # define(`dev_write_rand',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 random_device_t:chr_file { getattr write ioctl }; ') define(`dev_write_rand_depend',` type device_t, random_device_t; class dir r_dir_perms; class chr_file { getattr write ioctl }; ') ######################################## ## ## ## Write to the pseudo random device (e.g., /dev/urandom). This ## sets the random number generator seed. ## ## ## Domain allowed access. ## ## # define(`dev_write_urand',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 urandom_device_t:chr_file { getattr write ioctl }; ') define(`dev_write_urand_depend',` type device_t, urandom_device_t; class dir r_dir_perms; class chr_file { getattr write ioctl }; ') ######################################## ## ## ## Read and write to the null device (/dev/null). ## ## ## Domain allowed access. ## ## # define(`dev_rw_null_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 null_device_t:chr_file rw_file_perms; ') define(`dev_rw_null_dev_depend',` type device_t, null_device_t; class device_t:dir r_dir_perms; class chr_file rw_file_perms; ') ######################################## ## ## ## Read and write to the zero device (/dev/zero). ## ## ## Domain allowed access. ## ## # define(`dev_rw_zero_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 zero_device_t:chr_file rw_file_perms; ') define(`dev_rw_zero_dev_depend',` type device_t, zero_device_t; class device_t:dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Read, write, and execute the zero device (/dev/zero). ## ## ## Domain allowed access. ## ## # define(`dev_rwx_zero_dev',` requires_block_template(`$0'_depend) dev_rw_zero_dev($1) allow $1 zero_device_t:chr_file execute; ') define(`dev_rwx_zero_dev_depend',` type zero_device_t; class chr_file execute; ') ######################################## ## ## ## Read the realtime clock (/dev/rtc). ## ## ## Domain allowed access. ## ## # define(`dev_read_realtime_clock',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 clock_device_t:chr_file r_file_perms; ') define(`dev_read_realtime_clock_depend',` type device_t, clock_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Read the realtime clock (/dev/rtc). ## ## ## Domain allowed access. ## ## # define(`dev_write_realtime_clock',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 clock_device_t:chr_file { setattr lock write append ioctl }; ') define(`dev_write_realtime_clock_depend',` type device_t, clock_device_t; class dir r_dir_perms; class chr_file { setattr lock write append ioctl }; ') ######################################## ## ## ## Read the realtime clock (/dev/rtc). ## ## ## Domain allowed access. ## ## # define(`dev_rw_realtime_clock',` dev_read_realtime_clock($1) dev_write_realtime_clock($1) ') ######################################## ## ## ## Read the sound devices. ## ## ## Domain allowed access. ## ## # define(`dev_read_snd_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 sound_device_t:chr_file r_file_perms; ') define(`dev_read_snd_dev_depend',` type device_t, sound_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Write the sound devices. ## ## ## Domain allowed access. ## ## # define(`dev_write_snd_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 sound_device_t:chr_file { getattr write ioctl }; ') define(`dev_write_snd_dev_depend',` type device_t, sound_device_t; class dir r_dir_perms; class chr_file { getattr write ioctl }; ') ######################################## ## ## ## Read the sound mixer devices. ## ## ## Domain allowed access. ## ## # define(`dev_read_snd_mixer_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 sound_device_t:chr_file { getattr read ioctl }; ') define(`dev_read_snd_mixer_dev_depend',` type device_t, sound_device_t; class dir r_dir_perms; class chr_file { getattr read ioctl }; ') ######################################## ## ## ## Write the sound mixer devices. ## ## ## Domain allowed access. ## ## # define(`dev_write_snd_mixer_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 sound_device_t:chr_file { getattr write ioctl }; ') define(`dev_write_snd_mixer_dev_depend',` type device_t, sound_device_t; class dir r_dir_perms; class chr_file { getattr write ioctl }; ') ######################################## ## ## ## Read and write the agp devices. ## ## ## Domain allowed access. ## ## # define(`dev_rw_agp_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 agp_device_t:chr_file rw_file_perms; ') define(`dev_rw_agp_dev_depend',` type device_t, agp_device_t; class dir r_dir_perms; class chr_file rw_file_perms; ') ######################################## ## ## ## Getattr the agp devices. ## ## ## Domain allowed access. ## ## # define(`dev_getattr_agp_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 dri_device_t:chr_file getattr; ') define(`dev_getattr_agp_dev_depend',` type device_t, dri_device_t; class dir r_dir_perms; class chr_file getattr; ') ######################################## ## ## ## Read and write the dri devices. ## ## ## Domain allowed access. ## ## # define(`dev_rw_dri_dev',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 dri_device_t:chr_file rw_file_perms; ') define(`dev_rw_dri_dev_depend',` type device_t, dri_device_t; class dir r_dir_perms; class chr_file rw_file_perms; ') ######################################## ## ## ## Dontaudit read and write on the dri devices. ## ## ## Domain to dontaudit access. ## ## # define(`dev_dontaudit_rw_dri_dev',` requires_block_template(`$0'_depend) dontaudit $1 dri_device_t:chr_file { getattr read write ioctl }; ') define(`dev_dontaudit_rw_dri_dev_depend',` type dri_device_t; class chr_file { getattr read write ioctl }; ') ######################################## ## ## ## Read the mtrr device. ## ## ## Domain allowed access. ## ## # define(`dev_read_mtrr',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 mtrr_device_t:chr_file r_file_perms; ') define(`dev_read_mtrr_depend',` type device_t, mtrr_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Write the mtrr device. ## ## ## Domain allowed access. ## ## # define(`dev_write_mtrr',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 mtrr_device_t:chr_file { getattr write ioctl }; ') define(`dev_write_mtrr_depend',` type device_t, mtrr_device_t; class dir r_dir_perms; class chr_file { getattr write ioctl }; ') ######################################## ## ## ## Read the framebuffer device. ## ## ## Domain allowed access. ## ## # define(`dev_read_framebuffer',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 framebuf_device_t:chr_file r_file_perms; ') define(`dev_read_framebuffer_depend',` type framebuf_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Write the framebuffer device. ## ## ## Domain allowed access. ## ## # define(`dev_write_framebuffer',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 framebuf_device_t:chr_file { getattr write ioctl }; ') define(`dev_write_framebuffer_depend',` type device_t, framebuf_device_t; class dir r_dir_perms; class chr_file { getattr write ioctl }; ') ######################################## ## ## ## Read the lvm comtrol device. ## ## ## Domain allowed access. ## ## # define(`dev_read_lvm_control',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 lvm_control_t:chr_file r_file_perms; ') define(`dev_read_lvm_control_depend',` type device_t, lvm_control_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Read and write the lvm control device. ## ## ## Domain allowed access. ## ## # define(`dev_rw_lvm_control',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 lvm_control_t:chr_file rw_file_perms; ') define(`dev_rw_lvm_control_depend',` type device_t, lvm_control_t; class dir r_dir_perms; class chr_file rw_file_perms; ') ######################################## ## ## ## Delete the lvm control device. ## ## ## Domain allowed access. ## ## # define(`dev_delete_lvm_control',` requires_block_template(`$0'_depend) allow $1 device_t:dir { getattr search read write remove_name }; allow $1 lvm_control_t:chr_file unlink; ') define(`dev_delete_lvm_control_depend',` type device_t, lvm_control_t; class dir { getattr search read write remove_name }; class chr_file unlink; ') ######################################## ## ## ## Read miscellaneous devices. ## ## ## Domain allowed access. ## ## # define(`dev_read_misc',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 misc_device_t:chr_file r_file_perms; ') define(`dev_read_misc_depend',` type device_t, misc_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Write miscellaneous devices. ## ## ## Domain allowed access. ## ## # define(`dev_write_misc',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 misc_device_t:chr_file { getattr write ioctl }; ') define(`dev_write_misc_depend',` type device_t, misc_device_t; class dir r_dir_perms; class chr_file { getattr write ioctl }; ') ######################################## ## ## ## Read the mouse devices. ## ## ## Domain allowed access. ## ## # define(`dev_read_mouse',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 mouse_device_t:chr_file r_file_perms; ') define(`dev_read_mouse_depend',` type device_t, mouse_device_t; allow $1 device_t:dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Read the multiplexed input device (/dev/input). ## ## ## Domain allowed access. ## ## # define(`dev_read_input',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 event_device_t:chr_file r_file_perms; ') define(`dev_read_input_depend',` type device_t, event_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Read the multiplexed input device (/dev/input). ## ## ## Domain allowed access. ## ## # define(`dev_read_cpuid',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 cpu_device_t:chr_file r_file_perms; ') define(`dev_read_cpuid_depend',` type device_t, cpu_device_t; class dir r_dir_perms; class chr_file r_file_perms; ') ######################################## ## ## ## Read and write the the cpu microcode device. This ## is required to load cpu microcode. ## ## ## Domain allowed access. ## ## # define(`dev_rw_cpu_microcode',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 cpu_device_t:chr_file rw_file_perms; ') define(`dev_rw_cpu_microcode_depend',` type device_t, cpu_device_t; class dir r_dir_perms; class chr_file rw_file_perms; ') ######################################## ## ## ## Read and write the the scanner device. ## ## ## Domain allowed access. ## ## # define(`dev_rw_scanner',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 scanner_device_t:chr_file rw_file_perms; ') define(`dev_rw_scanner_depend',` type device_t, scanner_device_t; class dir r_dir_perms; class chr_file rw_file_perms; ') ######################################## ## ## ## Read and write the the power management device. ## ## ## Domain allowed access. ## ## # define(`dev_rw_power_management',` requires_block_template(`$0'_depend) allow $1 device_t:dir r_dir_perms; allow $1 power_device_t:chr_file rw_file_perms; ') define(`dev_rw_power_management_depend',` type device_t, power_device_t; class dir r_dir_perms; class chr_file rw_file_perms; ') ##