I came up with this patch:

--- /etc/apparmor.d/abstractions/libvirt-qemu.orig      2022-01-22 
18:22:57.000000000 +0000
+++ /etc/apparmor.d/abstractions/libvirt-qemu   2022-02-25 13:54:22.075405809 
+0000
@@ -85,7 +85,7 @@
   /usr/share/misc/sgabios.bin r,
   /usr/share/openbios/** r,
   /usr/share/openhackware/** r,
-  /usr/share/OVMF/** r,
+  /usr/share/OVMF/** rk,
   /usr/share/ovmf/** r,
   /usr/share/proll/** r,
   /usr/share/qemu-efi/** r,
@@ -249,5 +249,8 @@
   / r, # harmless on any lsb compliant system
   /sys/bus/nd/devices/{,**/} r,
 
+  # required for QEMU accessing UEFI nvram variables
+  /**/nvram/*_VARS.fd rwk,
+
   # Site-specific additions and overrides. See local/README for details.
   #include <local/abstractions/libvirt-qemu>

After

   systemctl reload apparmor.service; systemctl restart libvirtd

the reproducer works fine.

I'll send it to libvirt upstream now.


** Description changed:

  # lsb_release -rd
  Description:  Ubuntu 21.10
  Release:      21.10
  
  Package: apparmor
  Version: 3.0.3-0ubuntu1
  
  Package: virtinst
  Version: 1:3.2.0-3
  
  When trying to re-install an existing VM with uefi boot set up using the
  recently introduced `--reinstall` option apparmor makes the installation
  fail with the following error:
  
  Could not open '/var/lib/libvirt/qemu/nvram/test_VARS.fd': Permission
  denied
  
  Steps to reproduce:
  
  Create a VM:
  
  root@ubuntu:~# virt-install --connect qemu:///system --quiet --os-variant
  fedora28 --memory 1024 --name test --wait -1 --disk size=1,format=qcow2
  --print-xml 1 > /tmp/test1.xml
  
  Edit the VM configuration to enable automatic UEFI boot by changing the
  <os> like follows:
  
  - <os>
  
  + <os firmware='efi'>
  
- 
  Define the VM:
  
  root@ubuntu:~# virsh define /tmp/test1.xml
  
  Start VM installation:
  
  root@ubuntu:~# virt-install --connect qemu:///system --reinstall test --wait 
-1 --noautoconsole --cdrom /var/lib/libvirt/novell.iso --autostart
  WARNING  No operating system detected, VM performance may suffer. Specify an 
OS with --os-variant for optimal results.
  
  Starting install...
  ERROR    internal error: process exited while connecting to monitor: 
2022-02-23T18:56:54.738510Z qemu-system-x86_64: -blockdev 
{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/test_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}:
 Could not open '/var/lib/libvirt/qemu/nvram/test_VARS.fd': Permission denied
  Domain installation does not appear to have been successful.
  If it was, you can restart your domain by running:
-   virsh --connect qemu:///system start test
+   virsh --connect qemu:///system start test
  otherwise, please restart your installation.
- 
  
  Expected behavior:
  
  VM installation will start without apparmor error.
  
  Actual behavior:
  
- The above denial happens:
+ The above denials happen:
  
- Feb 23 18:56:54 ubuntu audit[4420]: AVC apparmor="DENIED"
- operation="open" profile="libvirt-bdd92fa6-6030-4980-951c-2a52ec7e406c"
- name="/var/lib/libvirt/qemu/nvram/test_VARS.fd" pid=4420 comm="qemu-
- system-x86" requested_mask="r" denied_m>
+ audit: type=1400 audit(1645796875.169:132): apparmor="DENIED"
+ operation="open" profile="libvirt-68567d5b-c2c1-4256-9931-ce675df2f9b0"
+ name="/var/lib/libvirt/qemu/nvram/test_VARS.fd" pid=4909 comm="qemu-
+ system-x86" requested_mask="r" denied_mask="r" fsuid=64055 ouid=64055
+ 
+ same thing later on for "k" (locking)
+ 
+ audit: type=1400 audit(1645796969.776:151): apparmor="DENIED"
+ operation="file_lock"
+ profile="libvirt-68567d5b-c2c1-4256-9931-ce675df2f9b0"
+ name="/usr/share/OVMF/OVMF_CODE_4M.secboot.fd" pid=5125 comm="qemu-
+ system-x86" requested_mask="k" denied_mask="k" fsuid=64055 ouid=0
+ 
  
  and stop the installation.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1962035

Title:
  apparmor blocks VM installation when automatic UEFI firmware is set

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1962035/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to