## The unconfined domain. ######################################## ## ## A template to make the specified domain unconfined. ## ## ## Domain to make unconfined. ## # template(`unconfined_domain_template',` # Use any Linux capability. allow $1 self:capability *; # Transition to myself, to make get_ordered_context_list happy. allow $1 self:process transition; # Write access is for setting attributes under /proc/self/attr. allow $1 self:file rw_file_perms; # Userland object managers allow $1 self:nscd *; allow $1 self:dbus *; allow $1 self:passwd *; kernel_unconfined($1) dev_unconfined($1) fs_unconfined($1) selinux_unconfined($1) domain_unconfined($1) files_unconfined($1) tunable_policy(`allow_execmem',` # Allow loading DSOs that require executable stack. allow $1 self:process execmem; ') # to satisfy assertions: optional_policy(`authlogin.te',` auth_manage_shadow($1) auth_relabelto_shadow($1) ') optional_policy(`bootloader.te',` bootloader_manage_kernel_modules($1) ') optional_policy(`selinuxutil.te',` seutil_create_binary_pol($1) seutil_relabelto_binary_pol($1) ') optional_policy(`storage.te',` storage_unconfined($1) ') ifdef(`TODO',` if (allow_execmod) { # Allow text relocations on system shared libraries, e.g. libGL. allow $1 texrel_shlib_t:file execmod; } ifdef(`dbusd.te', ` # Communicate via dbusd. allow $1 system_dbusd_t:dbus *; ') ifdef(`nscd.te', ` # Get info via nscd. allow $1 nscd_t:nscd *; ') ') dnl end TODO ') ######################################## ## ## Transition to the unconfined domain by executing a shell. ## ## ## Domain allowed access. ## # interface(`unconfined_domtrans_shell',` gen_require(` unconfined_t; ') corecmd_domtrans_shell($1,unconfined_t) ') ######################################## ## ## Inherit file descriptors from the unconfined domain. ## ## ## Domain allowed access. ## # interface(`unconfined_use_fd',` gen_require(` type unconfined_t; class fd use; ') allow $1 unconfined_t:fd use; ') ######################################## ## ## Send a SIGCHLD signal to the unconfined domain. ## ## ## Domain allowed access. ## # interface(`unconfined_sigchld',` gen_require(` type unconfined_t; class process sigchld; ') allow $1 unconfined_t:process sigchld; ') ######################################## ## ## Read and write unconfined domain unnamed pipes. ## ## ## Domain allowed access. ## # interface(`unconfined_rw_pipe',` gen_require(` type unconfined_t; class fifo_file rw_file_perms; ') allow $1 unconfined_t:fifo_file rw_file_perms; ') ######################################## ## ## Add the unconfined domain to the specified role. ## ## ## Domain allowed access. ## # interface(`unconfined_role',` gen_require(` type unconfined_t; ') role $1 types unconfined_t; ')