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