virt-manager无法连接到libvirt
问题描述
错误提示如下:
Unable to connect to libvirt qemu:///system.
请验证 'libvirtd' 守护进程是否正在运行。
Libvirt URI is: qemu:///system
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/connection.py", line 922, in _do_open
self._backend.open(cb, data)
File "/usr/share/virt-manager/virtinst/connection.py", line 153, in open
conn = libvirt.openAuth(self._open_uri,
File "/usr/lib/python3/dist-packages/libvirt.py", line 148, in openAuth
raise libvirtError('virConnectOpenAuth() failed')
libvirt.libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': 权限不够
解决办法
-
编辑/lib/system/system/libvirtd.socket文件,将
SocketMode
修改为0666
。$ cat /lib/systemd/system/libvirtd.socket [Unit] Description=Libvirt local socket Before=libvirtd.service [Socket] # The directory must match the /etc/libvirt/libvirtd.conf unix_sock_dir setting # when using systemd version < 227 ListenStream=/run/libvirt/libvirt-sock Service=libvirtd.service SocketMode=0660 SocketUser=root SocketGroup=libvirt [Install] WantedBy=sockets.target
-
重启libvirtd服务:
sudo systemctl restart libvirtd
备注:将对应user加入到libvirt组也可以解决问题。
原因分析
是因为virt-manager没有/var/run/libvirt/libvirt-sock的访问权限导致,具体如下:
$ ls -l /var/run/libvirt/libvirt-sock
srw-rw---- 1 root libvirt 0 1月 19 09:09 /var/run/libvirt/libvirt-sock
$ ps aux | grep virt-manager
flynn 6559 0.6 0.5 1022356 97028 ? Ssl 09:25 0:00 /usr/bin/python3 /usr/bin/virt-manager
flynn 6669 0.0 0.0 12380 2428 pts/0 S+ 09:27 0:00 grep --color=auto virt-manager
virt-manager
的身份不是root,无法访问libvirt-sock
。
Last update:
2022-12-14