virsh: не удалось подключиться к гипервизору как пользователь

virsh: не удалось подключиться к гипервизору как пользователь

В настоящее время я использую операционную систему RHEL 7.7.

Я пытался настроить среду minkube с помощью драйвера kvm2, и вот что получилось: minikube запускается нормально, но с некоторыми ошибками во время запуска.

Ошибка следующая:

'kvm2' driver reported an issue: /bin/virsh domcapabilities --virttype kvm failed:
error: failed to connect to the hypervisor
error: Cannot recv data: Connection reset by peer

Итак, я начал расследование, и первое, что я сделал, я попытался запустить команду virsh в командной строке, получив ту же самую ошибку, поэтому второе, что я попробовал, это запустить эту команду с помощью sudo, и в этом случае это сработало.

Поэтому я думаю, что это проблема с правами доступа, но мне все еще не удается решить эту проблему (я хотел бы запустить minikube от имени пользователя, не используя sudo).

Что я уже попробовал:

  1. Добавить моего пользователя в группу libvirt - Все еще не получается
  2. Добавить моего пользователя в группы: kvmuser qemu и kvm - Все еще не получается
  3. Обновил файл libvirtd.conf следующей конфигурацией:
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"

  1. Проверил правило policykit, которое уже присутствовало в этом контенте:
polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage"
            && subject.local
            && subject.active
            && subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

Итак, я попытался добавить своего пользователя в группу wheel, но проблема осталась прежней.

  1. Добавил своего пользователя также в systemd-network (тут я просто начал заниматься всякой всячиной, лол :D) та же проблема.
  2. Отключил selinux - та же проблема.

Я искал везде и не смог найти решение своей проблемы. Может быть, кто-то сумел ее решить?

Я просто хочу запустить команду vish как обычный пользователь.

решение1

Итак, после всех трудностей (и, кстати, вероятно, добавление пользователя в нужные группы было частью правильной конфигурации), мне все еще не хватало одной вещи, чтобы все заработало как пользователю.

По-видимому, необходимо экспортировать следующую переменную среды:

export LIBVIRT_DEFAULT_URI=qemu:///system

После этого экспорта, если пользователь находится в разрешенной группе для libvirt, все команды начинают работать.

решение2

У меня нет под рукой хоста с поддержкой rhel libvirt, но с Fedora 31, следуя инструкциям настраница документации libvirt dbusЯ могу запустить это как пользователь-участник wheel:

$ cat /etc/dbus-1/system.d/org.libvirt.conf 
<?xml version="1.0"?>
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

<busconfig>

  <policy group="wheel">
    <allow send_destination="org.libvirt"/>
  </policy>

</busconfig>

$ id
uid=1000(natxo) gid=1000(natxo) groups=1000(natxo),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ virsh domcapabilities --virttype kvm
<domainCapabilities>
  <path>/usr/bin/qemu-system-x86_64</path>
  <domain>kvm</domain>
  <machine>pc-i440fx-4.1</machine>
  <arch>x86_64</arch>
  <vcpu max='255'/>
  <iothreads supported='yes'/>
  <os supported='yes'>
    <enum name='firmware'>
      <value>efi</value>
    </enum>
...

возможно, вам придется перезапустить libvirtd.

Связанный контент