运行后virsh list --all
,出现以下错误:
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
这是我运行后得到的结果ls -la /var/run/libvirt/
:
total 0
drwxr-xr-x 12 root root 380 Jan 19 20:28 .
drwxr-xr-x 40 root root 1100 Jan 19 20:28 ..
drwx------ 2 root root 60 Jan 19 20:28 common
drwxr-xr-x 2 root root 40 Jan 19 20:28 hostdevmgr
drwx------ 2 root root 60 Jan 19 20:28 interface
srw------- 1 root root 0 Jan 19 20:28 libvirt-admin-sock
srw-rw---- 1 root libvirt 0 Jan 19 20:28 libvirt-sock
srw-rw-rw- 1 root root 0 Jan 19 20:28 libvirt-sock-ro
drwxr-xr-x 2 root root 140 Jan 19 20:28 network
drwx------ 2 root root 60 Jan 19 20:28 nodedev
drwx------ 2 root root 60 Jan 19 20:28 nwfilter
drwx------ 2 root root 40 Jan 19 20:28 nwfilter-binding
drwxr-xr-x 4 root root 120 Jan 19 20:28 qemu
drwx------ 2 root root 60 Jan 19 20:28 secrets
drwxr-xr-x 2 root root 80 Jan 19 20:28 storage
srw------- 1 root root 0 Jan 19 20:28 virtlockd-admin-sock
srw------- 1 root root 0 Jan 19 20:28 virtlockd-sock
srw------- 1 root root 0 Jan 19 20:28 virtlogd-admin-sock
srw------- 1 root root 0 Jan 19 20:28 virtlogd-sock
答案1
安装 libvirt 时,允许使用的用户sudo
将被添加到libvirt
组中,这些用户可以访问套接字。其他所有人都被视为非特权用户。
如果您使用的用户当时不存在或不在 sudoers 组中,那么您还没有 libvirt 的组成员身份。您可以通过运行id
which should list ... groups=...,129(libvirt)
(数字可能有所不同)来检查。
如果不是,那么您需要将自己添加到该组(或请管理员这样做)。
类似的东西sudo usermod -a -G libvirt <youruser>
应该这样做。