------- Comment From sthou...@in.ibm.com 2018-04-09 09:03 EDT-------
(In reply to comment #64)
> (In reply to comment #61)
> > Thanks for the full dmesg.
> > It seems to me that:
> > "unable to set AppArmor profile
> > 'libvirt-81b387d9-1dfc-4f55-8b98-0318f1f94442'"
> > means there is an issue in loading the profile after your change.
> >
> > That matches:
> > audit: type=1400 audit(1519028363.683:12417): apparmor="DENIED"
> > operation="change_profile" info="label not found" error=-2
> > profile="/usr/sbin/libvirtd"
> > name="libvirt-81b387d9-1dfc-4f55-8b98-0318f1f94442" pid=12949 
> > comm="libvirtd"
> >
> > It is not getting to the actual restore, it is failing when spawning the
> > guest to to the changes in the apparmor profile.
> >
> > I tried to check what you hit:
> > $ virsh save bionic-test --file /var/tmp/bionic-test.save --verbose
> > Guest is shut-off and I have
> > -rw------- 1 root root 527808329 Feb 19 12:34 /var/tmp/bionic-test.save
> > The restore hits the (silent) denial we discussed.
> > #deny /tmp/{,**} r,
> > #deny /var/tmp/{,**} r,
> > Changed the two lines above to a comment.
> > Then restored again, just worked:
> > $ virsh restore /var/tmp/bionic-test.save
> > Domain restored from /var/tmp/bionic-test.save
> >
> > To quote jdstrand from bug 1403648:
> > "We should not allow access to /tmp and /var/tmp as that breaks application
> > isolation."
> >
> > That said we are in the following situation:
> > 1. /tmp and /var/tmp are not allowed to be read (apparmor default for app
> > isolation)
> > 2. read denies there are silenced via explicit denies in
> > /etc/apparmor.d/abstractions/libvirt-qemu
> > 3. I see your point:
> > 3.1 on save libvirt writes to that place (libvirt is allowed to do so, while
> > qemu is not)
> > 3.2 on restore qemu wants to read it and is denied.
> >
> > And you wonder about the asymetric behavior of 3.1 and 3.2.
> > I agree that it is somewhat unexpected, but wonder what would be better
> > 1. We could also deny /var /tmp for the lbivirt daemon (which intentionally
> > has a rather lenient apparmor profile). Then already on the save people
> > would be denied, maybe for a new release - but not as an SRU to not break
> > people relying on that access working.
>
> Okay, Agreed.
>
> > 2. And on the new release we already have the --bypass-cache fixes you
> > referred to to get the restore working there as a workaround - so the
> > benefit of preventing libvirt to access there isn't too big either. So
> > forbidding the access on "save" for libvirt there would make that useless.
>
> Anyway, when restore is denied in turn it would make save as useless is my
> point here.
> let's document it in man page about --bypass-cache would help
>
> >
> > I'm unsure how to continue. To better brain-storm with you on how to proceed
> > do you have a clear preferred solution (other than the already included
> > bypass-cache fixes) or is it just "not nice in general" that the denial
> > should be consistent for save/restore?
>
> if it is possible to error out or warn in Libvirt when performing save in
> denial paths that this
> would fail on restore by apparmor, then it would be a proper way.
> >
> > Separate to the discussion above:
> > To find how your modified apparmor profile breaks your guest start you could
> > share it - as I mentioned it worked for me right away (no need to restart
> > libvirt after changing btw, the one we change it loaded on guest load).
>
> Thank you for detailed explanation :+1:

Distro team,

Is there any update based on the previous update we posted. ?

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to apparmor in Ubuntu.
https://bugs.launchpad.net/bugs/1719579

Title:
  [Ubuntu 18.04] [libvirt] virsh restore fails from state file saved in
  /var/tmp folder using virsh save

Status in The Ubuntu-power-systems project:
  Fix Released
Status in apparmor package in Ubuntu:
  Invalid
Status in libvirt package in Ubuntu:
  Fix Released

Bug description:
  == Comment: #1 - SEETEENA THOUFEEK <sthou...@in.ibm.com> - 2017-01-17 
00:09:16 ==
  Bala, Please mail me the machine information.

  == Comment: #3 - SEETEENA THOUFEEK <sthou...@in.ibm.com> - 2017-01-17 
02:14:06 ==
  2017-01-16 12:09:37.707+0000: 7024: info : 
virSecurityDACRestoreFileLabelInternal:388 : Restoring DAC user and group on 
'/var/tmp/bala'
  2017-01-16 12:09:37.707+0000: 7024: info : 
virSecurityDACSetOwnershipInternal:290 : Setting DAC user and group on 
'/var/tmp/bala' to '0:0'
  2017-01-16 12:09:37.707+0000: 7024: warning : qemuDomainSaveImageStartVM:6750 
: failed to restore save state label on /var/tmp/bala
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x3fff4ca62b00
  2017-01-16 12:09:37.707+0000: 7024: debug : qemuDomainObjEndAsyncJob:1848 : 
Stopping async job: start (vm=0x3fff4ca535c0 name=virt-tests-vm1-bala)
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectRef:296 : OBJECT_REF: 
obj=0x3fff4ca62b00
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x3fff4ca62b00
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x3fff4ca535c0
  2017-01-16 12:09:37.707+0000: 7024: debug : virThreadJobClear:121 : Thread 
7024 (virNetServerHandleJob) finished job remoteDispatchDomainRestore with 
ret=-1
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x3fff7c002c10
  2017-01-16 12:09:37.707+0000: 7024: debug : virNetServerProgramSendError:153 
: prog=536903814 ver=1 proc=54 type=1 serial=4 msg=0x100133d2590 
rerr=0x3fffa59be3c0
  2017-01-16 12:09:37.707+0000: 7024: debug : virNetMessageEncodePayload:376 : 
Encode length as 172
  2017-01-16 12:09:37.707+0000: 7024: debug : 
virNetServerClientSendMessageLocked:1399 : msg=0x100133d2590 proc=54 len=172 
offset=0
  2017-01-16 12:09:37.707+0000: 7024: info : 
virNetServerClientSendMessageLocked:1407 : RPC_SERVER_CLIENT_MSG_TX_QUEUE: 
client=0x100133d23c0 len=172 prog=536903814 vers=1 proc=54 type=1 status=1 
serial=4
  2017-01-16 12:09:37.707+0000: 7024: debug : 
virNetServerClientCalculateHandleMode:157 : tls=(nil) hs=-1, rx=0x100133d0670 
tx=0x100133d2590
  2017-01-16 12:09:37.707+0000: 7024: debug : 
virNetServerClientCalculateHandleMode:192 : mode=3
  2017-01-16 12:09:37.707+0000: 7024: info : virEventPollUpdateHandle:152 : 
EVENT_POLL_UPDATE_HANDLE: watch=417 events=3
  2017-01-16 12:09:37.707+0000: 7024: debug : virEventPollInterruptLocked:727 : 
Interrupting
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x3fff7c002c10
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x100133caea0
  2017-01-16 12:09:37.707+0000: 7024: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x100133d23c0
  .
  2017-01-16 12:14:28.445+0000: 7019: info : qemuMonitorJSONIOProcessLine:201 : 
QEMU_MONITOR_RECV_EVENT: mon=0x3fff94004d90 event={"timestamp": {"seconds": 
1484568868, "microseconds": 444620}, "event": "MIGRATION", "data": {"status": 
"failed"}}
  2017-01-16 12:14:28.445+0000: 7019: debug : qemuMonitorJSONIOProcessEvent:147 
: mon=0x3fff94004d90 obj=0x100133b5670
  2017-01-16 12:14:28.445+0000: 7019: debug : virJSONValueToString:1762 : 
object=0x100133a8000
  2017-01-16 12:14:28.445+0000: 7019: debug : virJSONValueToStringOne:1691 : 
object=0x100133a8000 type=0 gen=0x100133d1160
  2017-01-16 12:14:28.445+0000: 7019: debug : virJSONValueToStringOne:1691 : 
object=0x100133d2a80 type=2 gen=0x100133d1160
  2017-01-16 12:14:28.445+0000: 7019: debug : virJSONValueToString:1795 : 
result={"status":"failed"}
  2017-01-16 12:14:28.445+0000: 7019: debug : qemuMonitorEmitEvent:1218 : 
mon=0x3fff94004d90 event=MIGRATION
  2017-01-16 12:14:28.445+0000: 7019: info : virObjectRef:296 : OBJECT_REF: 
obj=0x3fff94004d90
  2017-01-16 12:14:28.445+0000: 7019: debug : qemuProcessHandleEvent:629 : 
vm=0x3fff4ca535c0
  2017-01-16 12:14:28.445+0000: 7019: info : virObjectNew:202 : OBJECT_NEW: 
obj=0x100133d2870 classname=virDomainQemuMonitorEvent
  2017-01-16 12:14:28.445+0000: 7019: debug : virObjectEventNew:645 : 
obj=0x100133d2870
  2017-01-16 12:14:28.445+0000: 7019: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x100133d2870
  2017-01-16 12:14:28.445+0000: 7019: info : virObjectUnref:261 : 
OBJECT_DISPOSE: obj=0x100133d2870
  2017-01-16 12:14:28.445+0000: 7019: debug : 
virDomainQemuMonitorEventDispose:477 : obj=0x100133d2870
  2017-01-16 12:14:28.445+0000: 7019: debug : virObjectEventDispose:121 : 
obj=0x100133d2870
  2017-01-16 12:14:28.445+0000: 7019: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x3fff94004d90
  2017-01-16 12:14:28.445+0000: 7019: debug : qemuMonitorJSONIOProcessEvent:172 
: handle MIGRATION handler=0x3fff9d7247e0 data=0x100133a8000
  2017-01-16 12:14:28.445+0000: 7019: debug : 
qemuMonitorEmitMigrationStatus:1488 : mon=0x3fff94004d90, status=failed
  2017-01-16 12:14:28.445+0000: 7019: info : virObjectRef:296 : OBJECT_REF: 
obj=0x3fff94004d90
  2017-01-16 12:14:28.445+0000: 7019: debug : 
qemuProcessHandleMigrationStatus:1502 : Migration of domain 0x3fff4ca535c0 
virt-tests-vm1-bala changed state to failed
  2017-01-16 12:14:28.445+0000: 7019: info : virObjectUnref:259 : OBJECT_UNREF: 
obj=0x3fff94004d90
  2017-01-16 12:14:28.445+0000: 7019: debug : qemuMonitorJSONIOProcess:255 : 
Total used 232 bytes out of 232 available in buffer
  2017-01-16 12:14:28.445+0000: 7019: info : virEventPollUpdateHandle:152 : 
EVENT_POLL_UPDATE_HANDLE: watch=430 events=13
  2017-01-16 12:14:28.445+0000: 7023: error : qemuMigrationCheckJobStatus:2641 
: operation failed: job: unexpectedly failed


  this is an apparmor issue and there is no libvirt bug here.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/1719579/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to