diff -up serefpolicy-3.10.0/policy/modules/apps/qemu.te.qemu serefpolicy-3.10.0/policy/modules/apps/qemu.te --- serefpolicy-3.10.0/policy/modules/apps/qemu.te.qemu 2011-11-04 13:28:26.200380523 -0400 +++ serefpolicy-3.10.0/policy/modules/apps/qemu.te 2011-11-04 13:28:27.042380389 -0400 @@ -40,9 +40,7 @@ gen_tunable(qemu_use_nfs, true) ## gen_tunable(qemu_use_usb, true) -type qemu_exec_t; virt_domain_template(qemu) -application_domain(qemu_t, qemu_exec_t) role system_r types qemu_t; ######################################## diff -up serefpolicy-3.10.0/policy/modules/services/virt.if.qemu serefpolicy-3.10.0/policy/modules/services/virt.if --- serefpolicy-3.10.0/policy/modules/services/virt.if.qemu 2011-11-04 13:28:27.013380393 -0400 +++ serefpolicy-3.10.0/policy/modules/services/virt.if 2011-11-04 13:28:27.044380389 -0400 @@ -16,10 +16,11 @@ template(`virt_domain_template',` attribute virt_image_type, virt_domain; attribute virt_tmpfs_type; attribute virt_ptynode; + type qemu_exec_t; ') type $1_t, virt_domain; - domain_type($1_t) + application_domain($1_t, qemu_exec_t) domain_user_exemption_target($1_t) mls_rangetrans_target($1_t) mcs_untrusted_proc($1_t) @@ -848,3 +849,21 @@ template(`virt_lxc_domain_template',` role system_r types $1_t; ') +######################################## +## +## Execute a qemu_exec_t in the callers domain +## +## +## +## Domain allowed access. +## +## +# +interface(`virt_exec_qemu',` + gen_require(` + type qemu_exec_t; + ') + + can_exec($1, qemu_exec_t) +') + diff -up serefpolicy-3.10.0/policy/modules/services/virt.te.qemu serefpolicy-3.10.0/policy/modules/services/virt.te --- serefpolicy-3.10.0/policy/modules/services/virt.te.qemu 2011-11-04 13:28:27.015380393 -0400 +++ serefpolicy-3.10.0/policy/modules/services/virt.te 2011-11-04 13:30:30.832359916 -0400 @@ -73,11 +73,14 @@ gen_tunable(virt_use_usb, true) virt_domain_template(svirt) role system_r types svirt_t; +typealias svirt_t alias qemu_t; attribute virt_domain; attribute virt_image_type; attribute virt_tmpfs_type; +type qemu_exec_t; + type virt_cache_t alias svirt_cache_t; files_type(virt_cache_t) @@ -275,6 +278,9 @@ allow virtd_t virt_domain:process { geta allow virt_domain virtd_t:fd use; dontaudit virt_domain virtd_t:unix_stream_socket { read write }; +can_exec(virtd_t, qemu_exec_t) +can_exec(virt_domain, qemu_exec_t) + allow virtd_t qemu_var_run_t:file relabel_file_perms; manage_dirs_pattern(virtd_t, qemu_var_run_t, qemu_var_run_t) manage_files_pattern(virtd_t, qemu_var_run_t, qemu_var_run_t) @@ -643,11 +649,6 @@ optional_policy(` ') optional_policy(` - qemu_entry_type(virt_domain) - qemu_exec(virt_domain) -') - -optional_policy(` virt_read_config(virt_domain) virt_read_lib_files(virt_domain) virt_read_content(virt_domain)