apparmor使用自定义qemu导致libvirt出现问题

neo*_*org 3 qemu libvirt apparmor

我想使用自定义版本的qemu运行libvirt.但是,在我安装了我的qemu版本并重新启动后,我在dmesg中收到以下消息

type = 1400 audit(1338385059.381:51):apparmor ="DENIED"operation ="exec"parent = 1700 profile ="/ usr/sbin/libvirtd"name ="/ usr/local/bin/qemu-system-x86_64"pid = 1746 comm ="libvirtd"requested_mask ="x"denied_mask ="x"fsuid = 0 ouid = 0

我尝试编辑/etc/apparmor.d/abstractions/libvirt-qemu并添加以下行并重新启动

/ usr/local/bin/qemu-system-x86_64 rmix,

但问题仍然存在.我真的很新apparmor,事实上我没有读太多,直到我发现这个错误.任何帮助将不胜感激.

sar*_*old 7

您的日志消息表明问题出在/usr/sbin/libvirtd配置文件中; 看到profile="/usr/sbin/libvirtd"消息的一部分.此配置文件存储在/etc/apparmor.d/usr.sbin.libvirtd; 此配置文件包含/etc/apparmor.d/abstractions/libvirt-qemu抽象 - 而是通过配置文件加载/etc/apparmor.d/libvirt/.查看libvirtd配置文件中的最后几行:

  # allow changing to our UUID-based named profiles
  change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*,
Run Code Online (Sandbox Code Playgroud)

可能最简单的答案是将以下行添加到您的local/usr.sbin.libvirtd文件中:

/usr/local/bin/qemu-system-x86_64 rmix,
Run Code Online (Sandbox Code Playgroud)

(虽然它可能需要PUx相反;主要/usr/sbin/libvirtd配置文件当前有/usr/bin/* PUx,,这可能是/usr/bin/qemu-system-x86_64当前执行的方式.)

另一种方法是运行aa-logprof,并允许工具提示您.您可能无法使用这些工具构建最漂亮的配置文件,但它应该相当简单,并且具有与手动创建配置文件相同的安全属性.

我希望这有帮助.