From: jason@perfinion.com (Jason Zaman) Date: Wed, 25 Mar 2015 10:24:46 +0800 Subject: [refpolicy] [PATCH 6/6] introduce virt_leaseshelper_t In-Reply-To: <1427250286-27053-1-git-send-email-jason@perfinion.com> References: <1427250286-27053-1-git-send-email-jason@perfinion.com> Message-ID: <1427250286-27053-6-git-send-email-jason@perfinion.com> To: refpolicy@oss.tresys.com List-Id: refpolicy.oss.tresys.com --- dnsmasq.te | 1 + virt.fc | 1 + virt.if | 20 ++++++++++++++++++++ virt.te | 23 +++++++++++++++++++++++ 4 files changed, 45 insertions(+) diff --git a/dnsmasq.te b/dnsmasq.te index fbfe09f..eb3c7f8 100644 --- a/dnsmasq.te +++ b/dnsmasq.te @@ -127,4 +127,5 @@ optional_policy(` virt_manage_lib_files(dnsmasq_t) virt_read_pid_files(dnsmasq_t) virt_pid_filetrans(dnsmasq_t, dnsmasq_var_run_t, { dir file }) + virt_domtrans_leaseshelper(dnsmasq_t) ') diff --git a/virt.fc b/virt.fc index a4f20bc..b38007b 100644 --- a/virt.fc +++ b/virt.fc @@ -18,6 +18,7 @@ HOME_DIR/VirtualMachines/isos(/.*)? gen_context(system_u:object_r:virt_content_t /usr/libexec/libvirt_lxc -- gen_context(system_u:object_r:virtd_lxc_exec_t,s0) /usr/libexec/qemu-bridge-helper gen_context(system_u:object_r:virt_bridgehelper_exec_t,s0) +/usr/libexec/libvirt_leaseshelper -- gen_context(system_u:object_r:virt_leaseshelper_exec_t,s0) /usr/bin/virsh -- gen_context(system_u:object_r:virsh_exec_t,s0) /usr/bin/virt-sandbox-service.* -- gen_context(system_u:object_r:virsh_exec_t,s0) diff --git a/virt.if b/virt.if index facdee8..fd087b9 100644 --- a/virt.if +++ b/virt.if @@ -188,6 +188,26 @@ interface(`virt_domtrans_bridgehelper',` ######################################## ## +## Execute a domain transition to +## run virt bridgehelper. +## +## +## +## Domain allowed to transition. +## +## +# +interface(`virt_domtrans_leaseshelper',` + gen_require(` + type virt_leaseshelper_t, virt_leaseshelper_exec_t; + ') + + corecmd_search_bin($1) + domtrans_pattern($1, virt_leaseshelper_exec_t, virt_leaseshelper_t) +') + +######################################## +## ## Execute bridgehelper in the bridgehelper ## domain, and allow the specified role ## the bridgehelper domain. diff --git a/virt.te b/virt.te index b20eb1c..c1662f5 100644 --- a/virt.te +++ b/virt.te @@ -166,6 +166,12 @@ domain_type(virt_bridgehelper_t) domain_entry_file(virt_bridgehelper_t, virt_bridgehelper_exec_t) role virt_bridgehelper_roles types virt_bridgehelper_t; +type virt_leaseshelper_t; +type virt_leaseshelper_exec_t; +domain_type(virt_leaseshelper_t) +domain_entry_file(virt_leaseshelper_t, virt_leaseshelper_exec_t) +role system_r types virt_leaseshelper_t; + type virtd_lxc_t; type virtd_lxc_exec_t; init_system_domain(virtd_lxc_t, virtd_lxc_exec_t) @@ -1216,3 +1222,20 @@ corenet_rw_tun_tap_dev(virt_bridgehelper_t) userdom_search_user_home_dirs(virt_bridgehelper_t) userdom_use_user_ptys(virt_bridgehelper_t) + +######################################## +# +# Leaseshelper local policy +# + +allow virt_leaseshelper_t virtd_t:fd use; +allow virt_leaseshelper_t virtd_t:fifo_file write_fifo_file_perms; + +manage_dirs_pattern(virt_leaseshelper_t, virt_var_lib_t, virt_var_lib_t) +manage_files_pattern(virt_leaseshelper_t, virt_var_lib_t, virt_var_lib_t) +files_var_lib_filetrans(virt_leaseshelper_t, virt_var_lib_t, { file dir }) + +manage_files_pattern(virt_leaseshelper_t, virt_var_run_t, virt_var_run_t) +files_pid_filetrans(virt_leaseshelper_t, virt_var_run_t, file) + +kernel_dontaudit_read_system_state(virt_leaseshelper_t) -- 2.0.5