124

enter image description here

I'm running Ubuntu 12.04.2 32 bits.

The error doesn't show up if I start gksudo virt-manager.

  • libvirt-bin is installed.
  • I don't know how to check for the daemon.
  • I am a member of libvirtd.

Output of ps ax | grep libvirt:

9225 ? Sl 0:04 /usr/sbin/libvirtd -d
9302 ? S 0:00 /usr/sbin/dnsmasq -u libvirt-dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override`

Output of ls -l /var/run/libvirt/libvirt-sock:

srwxrwx--- 1 root libvirtd 0 Set 13 15:04 /var/run/libvirt/libvirt-sock

Output of getent group libvirtd:

 libvirtd:x:130:OTHERUSER,MYUSER

Detailed error message

Unable to connect to libvirt.   
Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied

Verify that:
 - The 'libvirt-bin' package is installed
 - The 'libvirtd' daemon has been started
 - You are member of the 'libvirtd' group

Libvirt URI is: qemu:///system

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/connection.py", line 1185, in _open_thread
    self.vmm = self._try_open()
  File "/usr/share/virt-manager/virtManager/connection.py", line 1167, 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
Zanna
  • 72,312

21 Answers21

117

Rebooting the system where virt-manager is installed solved the issue.

97

After installing KVM, run this command then that error will not occur again.

sudo virt-manager
d a i s y
  • 5,551
55

An alternative to reboot/logout is to run the following commands from a terminal:

newgrp libvirt
virt-manager

The newgrp command allows the user to join the libvirt group without logout, for processes that are started in the same shell after newgrp. Of course this only works if the libvirt installer put you in the libvirt group, which you can check with:

getent group libvirt
alkisg
  • 680
20

For me, the error was caused because group membership changes don't apply without a logout-login (or reboot). I had just installed KVM and libvirt-bin. The installer automatically added my user to the libvirtd group, I had restarted the libvirt-bin service, but I was still getting the error.

Don't change file permissions to 777. Don't just run everything as root or sudo to avoid understanding what's wrong.

Simply logging out and back in resolved the problem by applying my new group membership.

Assuming you just installed libvirt-bin and already confirmed that your current user is a member of the libvirtd group as the error message suggests, you will need to log out and back in for the new group membership to apply.

I hope this helps someone.

10

Logged in user has to be added to libvirt usergroup

sudo usermod -a -G libvirt $USER
5

I'm managing both Qemu and Virtualbox on my Ubuntu 14.02 machine, and after installing Virtualbox libvirt-bin failed to autostart. So check if libvirt-bin is running:

ps faux | grep libvirt-bin

if you don't see it in ps output - start in manually, then run virt-manager:

sudo service libvirt-bin start

5

On Ubuntu 16.04.3 LTS

systemctl start virtlogd.socket

was the only answer. The socket has its own daemon. That's unusual.

mr.zog
  • 216
3

After installing all of the packages stated by the OP, you should log out, then log back in. For anything that adds you to user groups, you need to log out and back in to be added to the new groups. It is a minor inconvenience, albeit less of one than rebooting.


This answer was flagged as incomplete in its original form. However, this is a general rule for adding your user to a group. That is, a relog is needed, which was the missing part that I did not see here.

2

The user in libvirt group can run virt-manager and virsh without sudo.

$ sudo gpasswd libvirt -a <username> 
$ cat <<EOF | tee -a ~/.profile
export VIRSH_DEFAULT_CONNECT_URI=qemu:///system 
EOF 
$ sudo reboot
damadam
  • 2,873
2

This was solution for me:

sudo apt install libvirt-daemon-system

sudo systemctl start libvirtd

restart system

2

For me the case was that when using service libvirt-bin status it showed that everything was just running fine though I could not connect like:

    ● libvirt-bin.service - Virtualization daemon
       Loaded: loaded (/lib/systemd/system/libvirt-bin.service; enabled; vendor preset: enabled)
       Active: active (running) since Do 2016-09-22 13:22:16 CEST; 6min ago
[...]

In /var/run/libvirt/ there should be these two files:

srwxrwxrwx  1 root libvirtd    0 Sep 22 13:22 libvirt-sock=
srwxrwxrwx  1 root libvirtd    0 Sep 22 13:22 libvirt-sock-ro=

If the sockets are not showing, use service libvirt-bin stop; service libvirt-bin start to completely restart the process. Using service libvirt-bin restart is not sufficient and will not re-create the socket.

The libvirt-bin service can safely be stopped and will not poweroff the guests.

Bent
  • 981
1

Various answers allude to the fact that the problem can occur due to group permissions not getting applied to the user running Virtual Machine Manager, and, the accepted answer, noting that reboot fixed the problem, quite possibly depended on reboot to give the user the group permissions on login (though reboot could potentially start services also).

In the case of Ubuntu 20.04.1 installing QEMU/KVM with apt-get did automatically start all services, and ended up resolving strictly by finding out how to give the user running Virtual Machine Manager libvirt group access (even though /etc/group did show that the user was granted the rights).

As others mention, logout/login is usually necessary to register new group permissions, but, in the case of a GNOME graphical desktop using gdm, logout and re-login were not sufficient to grant the GUI user new libvirt group rights. In fact, logging out AND restarting gdm, stopping all instances of the GNOME shell), and, logging back in, was not enough.

In one scenario, the following was effective, and did not require rebooting after installation of libvirt:

  • loginctl terminate-user <user> where is the user logging into GNOME.
  • sudo systemctl restart gdm

The loginctl command was obtained from this answer.

The gdm restart was required because after loginctl was run, the graphical console quit without offering a login screen (leaving only a black screen). It was not determined whether loginctl always kills the graphical login mechanism, but if it does not, then the gdm restart may be superfluous (omitted).

For the record, in the case where this solution worked, libvirt/KVM was installed by installing: bridge-utils, libvirt-daemon-system, qemu-kvm, and virt-manager. This properly started the required services without manual intervention, and automatically assigned group rights to pre-existing users with sudo rights.

kbulgrien
  • 138
1

I had faced the same issue. try running the virt manager with sudo

sudo virt-manager
1

I simply followed this tutorial. What I was missing:

sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service
psygo
  • 184
  • 1
  • 10
1

The problem is discussed on Launchpad and the cause of this problem can be solved by installing the xen-utils package (xen-utils-4.4 on Ubuntu 14.04). I previously was getting around this issue by virt-manager through sudo at the command line.

Jakuje
  • 6,793
0

As of Ubuntu 17.10, I had to also add myself to group libvirt. I had already added myself to libvirtd and did not remove myself from that group. I do not know if both are required or not.

I did this since I noticed the contents of /var/run/libvirt were owned by libvirt instead of by libvirtd.

0

Easy fix: Go to accounts and change your groups to both of the libvirt groups.

0

This is a bit old, but in case you are still getting this error today even after following all the necessary steps listed in the other answers, this was what was missing for me.

sudo setfacl -m user:$USER:rw /var/run/libvirt/libvirt-sock

This was on every version of Ubuntu desktop I installed KVM in.

R J
  • 624
0

In my case it was the password stored in KDE Wallet. I changed the password on the server and KDE Wallet was using the old password, causing that "Unable to connect to libvirt" error. Fixed this by clearing the password in KDE Wallet.

Cosmin
  • 1
0

I had this same problem and in the detailed error report it talks about lack of permission to the libvirt-sock file. Changing the permission of the file /var/run/libvirt/libvirt-sock to 777 made it work for me.

storm
  • 5,013
Gebeyew
  • 21
-1

use Ubuntu Software to uninstall virtual manager, log out, log back in, install virtual manager, and run it normally without using sudo or even using the command line.