[libvirt] [PATCH 2/4] configure: Make ACL mandatory when building the QEMU driver

Michal Privoznik mprivozn at redhat.com
Tue Feb 14 15:55:05 UTC 2017


On 02/14/2017 04:40 PM, Daniel P. Berrange wrote:
> On Tue, Feb 14, 2017 at 04:33:09PM +0100, Andrea Bolognani wrote:
>> When we're building a private /dev for the isolated QEMU
>> process, we want to be able to replicate the contents of
>> the original /dev as closely as possible, including ACLs.
>>
>> To ensure that's always possible, make ACL support mandatory
>> when the QEMU driver is enabled.
>>
>> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1421036
>> ---
>>  m4/virt-acl.m4 | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/m4/virt-acl.m4 b/m4/virt-acl.m4
>> index f7d1c6d..7a8b8e5 100644
>> --- a/m4/virt-acl.m4
>> +++ b/m4/virt-acl.m4
>> @@ -21,6 +21,10 @@ AC_DEFUN([LIBVIRT_CHECK_ACL], [
>>  
>>    AC_CHECK_HEADERS([sys/acl.h])
>>  
>> +  if test "x$ac_cv_header_sys_acl_h:x$with_qemu" = "xno:xyes"; then
>> +    AC_MSG_ERROR([Unable to find <sys/acl.h>, required by qemu driver])
>> +  fi
> 
> I understand the desire to simplify the code by assuming the libacl
> APIs always exist, but we shouldn't do it this way. Instead we should
> follow our normal practice of creating a src/util/viracl.{c,h} file
> which wrap the APIs and providing no-op stubs which just raise an
> error when the library is missing at build time.
> 

Unfortunately, it's more complicated than that. What if your distro has
getfacl/setfacl but missing the header files (libacl-devel)? In that
case libvirt is built without ACL support. Now imagine you have a
device, say /dev/kvm with 0777 and ACL entry that denies specific
group/user. If we build without ACL support, and use namespaces we will
in fact allow that group/user to start a domain because we just create a
device with 0777 perms and do not copy ACL entries.

Or vice versa - I explicitly allow user under which I'm running in ACLs
to /dev/kvm while it's perms are 0660. Lacking libacl headers would
render me unable to use namespaces.

Michal




More information about the libvir-list mailing list