Virt-manager 问题

Virt-manager 问题

我已安装virt-manager但无法使其运行。

我尝试了一些之前发布的答案,但没有成功。我已经验证了:

  • 软件包libvirt-bin已安装
  • 守护libvirtd进程已启动
  • libvirtd我是该团体的成员
  • libvirtURI 为:qemu:///system

这是我尝试运行时遇到的错误virt-manager

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/connection.py", line 1027, in _open_thread
    self.vmm = self._try_open()
  File "/usr/share/virt-manager/virtManager/connection.py", line 1009, in _try_open
    flags)
  File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth
    if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission     denied

答案1

您可能必须注销并重新登录。

假设/etc/libvirt/libvirtd.conf有:

# Set the UNIX domain socket group ownership. This can be used to
# allow a 'trusted' set of users access to management capabilities
# without becoming root.
#
# This is restricted to 'root' by default.
unix_sock_group = "libvirtd"

# Set the UNIX socket permissions for the R/O socket. This is used
# for monitoring VM status only
#
# Default allows any user. If setting group ownership, you may want to
# restrict this too.
unix_sock_ro_perms = "0777"

# Set the UNIX socket permissions for the R/W socket. This is used
# for full management of VMs
#
# Default allows only root. If PolicyKit is enabled on the socket,
# the default will change to allow everyone (eg, 0777)
#
# If not using PolicyKit and setting group ownership for access
# control, then you may want to relax this too.
unix_sock_rw_perms = "0770"

libvirtd如果您的用户是该组的成员,它应该可以工作。

检查您的用户是否应该在该组中,例如用户vagrant

$ cat /etc/group|grep $USER
vagrant:x:1000:
libvirtd:x:116:ubuntu,vagrant

如果您的用户不在该组中,您需要添加它:

$ sudo usermod -a -G libvirtd $USER

如果您的用户已经在组中/etc/group,请检查输出groups

$ groups
vagrant libvirtd

如果您没有看到libvirtd,则需要注销并重新登录。

答案2

我也遇到了同样的问题。尝试本指南对我来说很管用。将用户添加到组“libvirtd”后,不要忘记重新登录

答案3

在 Ubuntu 22.04 上,你可以轻松地将用户添加到特定组,例如虚拟机虚拟器使用以下命令:

sudo usermod -aG kvm $USER 
sudo usermod -aG libvirt $USER

执行这些命令后,需要重新登录或重新启动系统才能使更改生效。

为了进行健全性检查以确保更改已成功应用,您可以打开终端并输入以下命令:群组。这将显示您的用户所属组的列表,允许您验证您是否已被添加到虚拟机虚拟器组。

答案4

我遇到这个问题是因为我有两个libvirtd组。

当我安装 qemu-kvm 时,组libvirtd不存在,因此使用任意组 ID 121 创建了它:

ls -n /var/run/libvirt/libvirt-sock
srwxrwx--- 1 0 121 0 Oct  1 18:49 /var/run/libvirt/libvirt-sock

后来,我的主机加入了 NIS。我是 的成员libvirtd,但组 ID 是 1046:

id
uid=177(jmcgeheeiv) ...,1046(libvirtd),...

我不是 201 组的成员,所以我无法写入套接字/var/run/libvirt/libvirt-sock

将组所有权更新/var/run/libvirt/libvirt-sock为正确的组号解决了我的问题:

sudo chgrp 1019 /var/run/libvirt/libvirt-sock
ls -n /var/run/libvirt/libvirt-sock
srwxrwx--- 1 0 1019 0 Oct  1 18:49 /var/run/libvirt/libvirt-sock

这种情况下就不需要退出再登录了。

虽然上述方法解决了眼前的问题,但它违反了基础设施即代码的原则。真正的解决方案是重建主机,首先创建libvirtd与 NIS 一致的组 ID 为 1046 的组,然后安装 qemu-kvm。

相关内容