非 root 用户的 Xen libvirt 访问

非 root 用户的 Xen libvirt 访问

我已经在 CentOS 6.6 机器上安装了 Xen 和 libvirt。所有工具(virt-manager、virsh 等)都能以 root 身份完美运行(直接或通过 sudo),但我无法允许其他用户连接(连接失败/DBus 错误)。

我的配置

我遵循了通过创建组并通过 polkit 允许用户访问的过程,因此我:

groupadd virtadmin
usermod -a -G virtadmin davec

我还将自己添加到了 KVM 组(在某处找到的建议)。该组已创建,我作为 id 输出加入其中:

uid=500(davec) gid=500(davec) groups=500(davec),36(kvm),501(virtadmin)

为了在 polkit 中允许这样做,我添加了文件 /etc/polkit-1/localauthority/50-local.d/50-libvert-remote-access.pkla 内容:

Remote libvirt SSH access]
Identity:unix-group:virtadmin
Action:org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

在这不起作用之后,一些谷歌搜索告诉我,较新的 polkit 版本(yum 告诉我我有 0.96)使用基于规则的方法,所以我还创建了一个文件夹 /etc/polkit-1/rules.d 并添加了文件80-libvirt-manage.rules 包含:

polkit.addRule(function(action, subject) {
  if (action.id == "org.libvirt.unix.manage" && 
  subject.local && 
  subject.active && 
  subject.isInGroup("virtadmin")) {
      return polkit.Result.YES;
  }
});

现在这些可能存在一些问题,但我找不到日志或任何似乎测试/验证/观察它们的方式。

因此,根据我发现的文档,通过该设置,用户 davec 应该能够访问 libvirt 并运行 virsh 或 virt-manager。

错误

[davec@polar rules.d]$ virsh -c xen:///
error: failed to connect to the hypervisor
error: internal error: DBus support not compiled into this binary

这与我尝试连接时 virt-manager 给出的错误完全相同。

大多数有关 DBus 错误的在线信息都涉及虚拟机管理程序运行/任何人连接但 root 连接完美的问题。

[davec@polar rules.d]$ sudo virsh -c xen:///
Welcome to virsh, the virtualization interactive terminal.

完全相同的情况也适用于 SSH 连接(这并不奇怪,因为我相信当您使用 xen+ssh URI 时 SSH 只是隧道),root 可以非 root 工作,但组添加的用户则不然。

毫无疑问,这很简单,我是个白痴,但是……几天后,谷歌不再是我的朋友;任何帮助真的很感激。

答案

请参阅下面的 c4f4t0r 的正确(并接受的)答案,该答案赢得了赏金,但仅供阅读此内容的任何人的信息证明是与 polkit 无关它似乎没有与我的 libvirtd 一起配置/编译/工作。

是内置权限(套接字权限)问题。

答案1

我认为你可以这样做:

/etc/libvirt/libvirtd.conf

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
auth_unix_rw = "none"

之后重新启动 libvirtd 守护进程

答案2

这对我有用:

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"
auth_unix_rw = "none"

相关内容