Portál AbcLinuxu, 10. května 2025 08:10

Dotaz: KVM, qemu, libvirt a neprivilegovaný uživatel

xkucf03 avatar 28.3.2010 00:17 xkucf03 | skóre: 49 | blog: xkucf03
KVM, qemu, libvirt a neprivilegovaný uživatel
Přečteno: 532×
Odpovědět | Admin
Ahoj, potřeboval bych nastavit virtualizaci (kvm-qemu-libvirt) tak, aby virtuální stroje běžely pod neprivilegovaným uživatelem a zároveň mi fungovala síť (most na br0).

Uživatelské virtuály (qemu:///session) běží sice pod neprivilegovaným uživatelem, ale nefugnuje mi v nich tapnutí na br0*

Systémové virtuály (qemu:///system) se k síti připojí a z tohoto hlediska fungují přesně jak potřebuji**. Ale proces kvm pak běží pod rootem, což se mi nelíbí. Uživatele i skupinu lze nastavit v /etc/libvirt/qemu.conf. To jsem udělal, ale dostanu chybu:
virsh # start koala
chyba: Nepodařilo se spustit doménu koala
chyba: internal error unable to start guest: libvir: QEMU error : cannot change to '1003' group: Operation not permitted
Na stránkách libvirtu jsem se dočetl, že:
The directories /var/run/libvirt/qemu/, /var/lib/libvirt/qemu/ and /var/cache/libvirt/qemu/ must all have their ownership set to match the user / group ID that QEMU guests will be run as.
Tak jsem všem těm adresářům (rekurzivně) nastavil příslušného vlastníka a skupinu, ale nepomohlo to – pořád stejná chyba. Napadá vás, co je ještě potřeba udělat?

Ve /var/log/messages se při pokusu o start objeví:
type=1505 audit(1269731294.962:131): operation="profile_load" pid=15278 name=libvirt-c3abdaf5-c5dc-9e5a-14ff-c734bcce1484
device vnet0 entered promiscuous mode
br0: port 2(vnet0) entering learning state
type=1503 audit(1269731294.972:132): operation="capable" pid=15280 parent=15046 profile="libvirt-c3abdaf5-c5dc-9e5a-14ff-c734bcce1484" name="setgid"
br0: port 2(vnet0) entering disabled state
device vnet0 left promiscuous mode
br0: port 2(vnet0) entering disabled state
type=1505 audit(1269731295.204:133): operation="profile_remove" pid=15282 name=libvirt-c3abdaf5-c5dc-9e5a-14ff-c734bcce1484 namespace=default
Radši bych používal ty uživatelské virtuály (qemu:///session), ale pokud v nich nefunguje síť (br0), tak se smířím i s těmi systémovými (qemu:///system), ale potřeboval bych změnit toho uživatele a skupinu, pod kterými to běží.

*) Failed to add tap interface 'vnet%d' to bridge 'br0' : Permission denied (někde jsem se dočetl, že v libvirt tohle nefunguje a nepomohla ani úprava práv /dev/net/tun, takže už jsem to dál nezkoušel)

**) akorát jsem musel shodit firewall (budu si muset upravit pravidla).
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

xkucf03 avatar 28.3.2010 00:42 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše apparmor
Odpovědět | | Sbalit | Link | Blokovat | Admin
Teď mne napadlo, že by to mohlo být ještě apparmorem. Ale v /etc/apparmor.d/usr.sbin.libvirtd kromě jiného je:
capability setgid
capability setuid
To by mělo stačit ne?
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
michich avatar 28.3.2010 00:44 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: KVM, qemu, libvirt a neprivilegovaný uživatel
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na hostitelském systému je jaká distribuce a verze? Např. u Fedory běží libvirtem spravované systémové guesty pod uživatelem 'qemu' až od verze 12. Byla to jedna z deklarovaných nových vlastností toho vydání: https://fedoraproject.org/wiki/Features/VirtPrivileges
xkucf03 avatar 28.3.2010 00:54 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: KVM, qemu, libvirt a neprivilegovaný uživatel
Ubuntu 9.10. A výchozí nastavení je, že ty systémové běží pod rootem.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
xkucf03 avatar 28.3.2010 22:28 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: KVM, qemu, libvirt a neprivilegovaný uživatel
Odpovědět | | Sbalit | Link | Blokovat | Admin
Problém se mi podařilo vyřešit :-) Mohl za to skutečně ten Apparmor – zakazoval toho víc než měl (i když je to zvláštní). Stačilo vypnout profil usr.sbin.libvirtd. Pak sem musel poštelovat ještě trochu práva (setfacl…), ale už KVM funguje, jak má.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
29.3.2010 06:08 zigi | skóre: 14
Rozbalit Rozbalit vše Re: KVM, qemu, libvirt a neprivilegovaný uživatel
musel poštelovat ještě trochu práva (setfacl…)
Muzu se zeptat kde vsude? Diky
xkucf03 avatar 29.3.2010 11:04 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: KVM, qemu, libvirt a neprivilegovaný uživatel
Je to zvláštní, protože uživatel qemu byl ve skupině, která měla příslušná práva, ale pomohlo tohle:
setfacl -m u:qemu:rw /dev/kvm
setfacl -m g:qemu:rw /dev/kvm
Do té doby se nepoužívalo HW urychlení virtualizace, takže to bylo neskutečně pomalé a v kvm_stat nebyla vidět žádná činnost.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.