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).
Что я пробовал до сих пор:
- Добавить моего пользователя в группу libvirt - все еще не удается
- Добавить моего пользователя в группы: kvmuser qemu и kvm - все еще не удается
- Обновлен файл libvirtd.conf со следующей конфигурацией:
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"
- Проверил правило набора политик, которое уже присутствовало с этим контентом:
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage"
&& subject.local
&& subject.active
&& subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
Итак, я попытался добавить своего пользователя в группу колес, все та же проблема
- Добавил мой пользователь также в systemd-network (здесь я начал просто случайным образом лол:D) та же проблема.
- Отключил selinux - та же проблема.
Итак, я искал везде и не могу найти решение своей проблемы, может быть, кому-то удалось ее решить?
Я просто хочу запустить команду vish как обычный пользователь.
2 ответа
Итак, после всей борьбы (и, кстати, добавление пользователя в нужные группы было частью правильной конфигурации), мне все еще не хватало одной вещи, чтобы заставить его работать как пользователь.
По-видимому, для экспорта требуется следующая переменная среды:
export LIBVIRT_DEFAULT_URI=qemu:///system
После этого экспорта, если пользователь находится в разрешенной группе для libvirt, все команды начинают работать.
У меня нет под рукой хоста с поддержкой 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.