** Description changed:

  Reproducible: Yes, every time.
  
  Background:
  
  When you create a virtual machine (VM) under KVM/Qemu in Ubuntu,
  apparmor files are created as:
  
  /etc/apparmor.d/libvirt/libvirt-<UUID>
-   and
+   and
  /etc/apparmor.d/libvirt/libvirt-<UUID>.files
  
  And in the file /etc/apparmor.d/libvirt/libvirt-<UUID>.files there is
  the line
  
-   "PATH_to_BLOCK_DEVICE" rw,
+   "PATH_to_BLOCK_DEVICE" rw,
  
- where PATH_to_BLOCK_DEVICE is the full path name of the image. ( E.g. 
something like  /var/lib/libvirtd/images/asdf.qcow2) 
- and <UUID> is the UUID of the  VM container. 
+ where PATH_to_BLOCK_DEVICE is the full path name of the image. ( E.g. 
something like  /var/lib/libvirtd/images/asdf.qcow2)
+ and <UUID> is the UUID of the  VM container.
  
  The problem:
  
  When creating a shapshot of a running VM under KVM/Qemu you run the
  command
  
  $ sudo virsh snapshot-create-as DOMAIN_NAME   DESCRIPTION   --no-
  metadata --disk-only --atomic
  
  which creates a new file and stops writing to the old VM block device.
  
  However:  the old PATH_to_BLOCK_DEVICE in  /etc/apparmor.d/libvirt
  /libvirt-UUID.files is deleted and replaced with the new block device
  info BEFORE virsh is done creating the snapshot. So you get the error
  
  error: internal error: unable to execute QEMU command 'transaction':
  Could not open 'PATH_to_BLOCK_DEVICE': Could not open
  'PATH_to_BLOCK_DEVICE': Permission denied: Permission denied
  
  and in /var/log/syslog you get the error:
  
  type=1400 audit(1449752104.054:539): apparmor="DENIED" operation="open"
  profile="libvirt-<UUID>" name="PATH_to_BLOCK_DEVICE" pid=8710 comm
  ="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=106 ouid=106
  
+ When you look now at /etc/apparmor.d/libvirt/libvirt-<UUID>.files you
+ find that the line that was there
  
- When you look now at /etc/apparmor.d/libvirt/libvirt-<UUID>.files you find 
that the line that was there
+   "PATH_to_BLOCK_DEVICE" rw,
  
-   "PATH_to_BLOCK_DEVICE" rw,
+ has been replaced with
  
+   "PATH_to_BLOCK_DEVICE.DESCRIPTION" rw,
  
- has been replaced with 
- 
-   "PATH_to_BLOCK_DEVICE.DESCRIPTION" rw,
- 
- 
- but you need BOTH LINES. in order for the command "virsh  snapshot-create-as" 
to work. (or at least have the old file have  read permissions)
+ but you need BOTH LINES. in order for the command "virsh  snapshot-
+ create-as" to work. (or at least have the old file have  read
+ permissions)
  
  -----
  
  Workarounds:
  
  1. Disable apparmor for libvirtd
  
- or 
+ or
  2. Change  /etc/apparmor.d/libvirt/libvirt-<UUID> to look like this
+ 
  ----------
  #
  # This profile is for the domain whose UUID matches this file.
- # 
-   
+ #
+ 
  #include <tunables/global>
-   
+ 
  profile libvirt-UUID {
-   #include <abstractions/libvirt-qemu>
-   #include <libvirt/libvirt-UUID.files>
-   
-   "PATH_to_BLOCK_DEVICE*" rw,
- } 
+   #include <abstractions/libvirt-qemu>
+   #include <libvirt/libvirt-UUID.files>
+ 
+   "PATH_to_BLOCK_DEVICE*" rw,
+ }
  -----------
  
+ (
+   So if the old line was 
+      "/var/lib/libvirtd/images/asdf.qcow2" rw, 
+   , the line you can add would read something like this
+ 
+   "/var/lib/libvirtd/images/asdf*" rw,
+ 
+ )
+ --------
  
  Details on server:
  
  # lsb_release -rd
  Description:    Ubuntu 14.04.3 LTS
  Release:        14.04
  
- 
  # apt-cache policy apparmor
  apparmor:
-   Installed: 2.8.95~2430-0ubuntu5.3
-   Candidate: 2.8.95~2430-0ubuntu5.3
-   Version table:
-  *** 2.8.95~2430-0ubuntu5.3 0
-         500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 
Packages
-         100 /var/lib/dpkg/status
-      2.8.95~2430-0ubuntu5.1 0
-         500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 
Packages
-      2.8.95~2430-0ubuntu5 0
-         500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
+   Installed: 2.8.95~2430-0ubuntu5.3
+   Candidate: 2.8.95~2430-0ubuntu5.3
+   Version table:
+  *** 2.8.95~2430-0ubuntu5.3 0
+         500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 
Packages
+         100 /var/lib/dpkg/status
+      2.8.95~2430-0ubuntu5.1 0
+         500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 
Packages
+      2.8.95~2430-0ubuntu5 0
+         500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
  
  # apt-cache policy libvirt-bin
  libvirt-bin:
-   Installed: 1.2.2-0ubuntu13.1.14
-   Candidate: 1.2.2-0ubuntu13.1.14
-   Version table:
-  *** 1.2.2-0ubuntu13.1.14 0
-         500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 
Packages
-         100 /var/lib/dpkg/status
-      1.2.2-0ubuntu13.1.7 0
-         500 http://security.u buntu.com/ubuntu/ trusty-security/main amd64 
Packages
-      1.2.2-0ubuntu13 0
-         500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
- 
+   Installed: 1.2.2-0ubuntu13.1.14
+   Candidate: 1.2.2-0ubuntu13.1.14
+   Version table:
+  *** 1.2.2-0ubuntu13.1.14 0
+         500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 
Packages
+         100 /var/lib/dpkg/status
+      1.2.2-0ubuntu13.1.7 0
+         500 http://security.u buntu.com/ubuntu/ trusty-security/main amd64 
Packages
+      1.2.2-0ubuntu13 0
+         500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
  
  -----
  
  Apologies if this is the wrong place to submit this bug.

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

Title:
  virsh with apparmor misconfigures libvirt-UUID files during snapshot

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

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

Reply via email to