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-10-27 14:01:31.490807653 -0400 +++ serefpolicy-3.10.0/policy/modules/apps/qemu.te 2011-10-27 14:01:33.082806413 -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-10-27 14:01:33.036806448 -0400 +++ serefpolicy-3.10.0/policy/modules/services/virt.if 2011-10-27 14:01:33.084806412 -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-10-27 14:01:33.038806446 -0400 +++ serefpolicy-3.10.0/policy/modules/services/virt.te 2011-10-27 14:02:18.478770938 -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) @@ -279,6 +282,8 @@ 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(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) @@ -514,11 +519,6 @@ optional_policy(` ') optional_policy(` - qemu_entry_type(virt_domain) - qemu_exec(virt_domain) -') - -optional_policy(` sanlock_stream_connect(virtd_t) ')