qemu als user starten mit tap interface

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

qemu als user starten mit tap interface

Beitrag von slu » 28.02.2010 19:22:52

Hallo Forum,

ich bin gerade am qemu testen (allerdings auf einem Ubuntu Server 8.04).

Leider schaffe ich es nicht qemu als User zu starten weil er mir immer folgendes an den Kopf wirft:

Code: Alles auswählen

warning: could not open /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'
Starten möchte ich den Server mit folgendem Befehl:

Code: Alles auswählen

su -c 'kvm -hda tester.img -boot c -m 1024 -net nic,macaddr=00:xx:xx:xx:xx:xx -net tap,ifname=tap0,script=no' virtualserveruser
Wie verhält sich das denn unter Debian?

Ich kann den V-Server doch nicht mir root Rechten laufen lassen... :?

Auch ein manuelles Anlegen des tap0 interfaces interessiert ihn nicht.
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: qemu als user starten mit tap interface

Beitrag von rendegast » 28.02.2010 19:59:10

Ich verwende eine Kombination mit sudo:

in der sudoers wird so ein Befehl erlaubt:

Code: Alles auswählen

/usr/bin/nice /usr/bin/qemu * -runas USER
Damit kann ich in der /etc/qemu-ifup auf sudo verzichten, 'SUDO=':

Code: Alles auswählen

#!/bin/sh

# Das ist der Standardeintrag von qemu
#sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1

ETH=eth1
BRIDGE=bri0

IFCONFIG=/sbin/ifconfig
BRCTL=/usr/sbin/brctl

SUDO=sudo
SUDO=			# 20090602: Alles mit 'sudo qemu ... -runas ...' erledigt

$SUDO /sbin/modprobe -v tun
$SUDO $IFCONFIG $1 0.0.0.0
$SUDO $BRCTL addif $BRIDGE $1
Das Netzwerk ist dann angebunden, und die qemu-Maschine läuft als USER.
Zugriffsrechte für /dev/kqemu und /dev/net/[tun,tap] erledige ich über udev.
Eine genauere Kombination, um auch das richtige Interface wieder aus der Bridge zu löschen, funktioniert vielleicht über Lock-Dateien?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Re: qemu als user starten mit tap interface

Beitrag von slu » 21.03.2010 21:18:23

Hi rendegast,

danke für deine Antwort.

Stellt es denn ein Sicherheitsrisiko dar den Gast als root laufen zu lassen?
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: qemu als user starten mit tap interface

Beitrag von rendegast » 22.03.2010 00:23:36

Immer.

Ein abgestürzter user-Prozeß ist auch unkritischer als ein root-Prozeß.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Re: qemu als user starten mit tap interface

Beitrag von slu » 22.03.2010 22:23:28

Hi rendegast,

irgendwie hab ich das zusammenspiel in der sudoers noch nicht genz verstanden, ich hab nun folgendes eingetragen:

Code: Alles auswählen

/usr/bin/kvm * -runas virtualserveruser
Logge ich mich nun als "virtualserveruser" ein und starte meine Virtuel Machine mit "kvm -hda /home/..." meckert er wieder beim tap device.

Kann ich die Virtual Machine nicht einfach als root starten und einem User dann übergeben?
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: qemu als user starten mit tap interface

Beitrag von rendegast » 23.03.2010 02:53:37

starte meine Virtuel Machine mit "kvm -hda /home/..."
Versuche

Code: Alles auswählen

 sudo kvm -hda /home/...
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Re: qemu als user starten mit tap interface

Beitrag von slu » 26.03.2010 17:14:31

Hi,

ich hab nun folgendes eingetragen...

Code: Alles auswählen

virtualserveruser ALL = (virtualserveruser) NOPASSWD: /usr/bin/kvm
...geht leider auch nicht.

Die ganze qemu/root Sache ist sehr ärgerlich, auch verstehe ich nicht warum qemu nicht einfach ein bereits existierendes tap Interface nutzen kann...
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: qemu als user starten mit tap interface

Beitrag von rendegast » 26.03.2010 18:44:40

slu hat geschrieben:

Code: Alles auswählen

virtualserveruser ALL = (virtualserveruser) NOPASSWD: /usr/bin/kvm
...geht leider auch nicht.
Was geht nicht? Das paßwortlose Ausführen?

Anderer Syntax:

Code: Alles auswählen

virtualserveruser ALL=NOPASSWD:/usr/bin/kvm
oder besser
virtualserveruser ALL=NOPASSWD:/usr/bin/kvm * -runas virtualserveruser
Das funktioniert auch mit 'sudo kvm ....'.
(Mit
virtualserveruser ALL=NOPASSWD:/usr/bin/nice /usr/bin/kvm * -runas virtualserveruser
gehe ich sicher, daß die Maschine auch wirklich "nice" ist.)

Code: Alles auswählen

virtualserveruser ALL=NOPASSWD:/usr/bin/kvm *-runas virtualserveruser
ist fast wie oben, und würde
'sudo kvm -runas virtualserveruser'
erlauben, aber auch
'sudo kvm boese_Optionen bla_ich-bleibe-root_blub-runas virtualserveruser'.
(sudo hat massig Möglichkeiten, aber auch jede Menge Fallstricke)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Re: qemu als user starten mit tap interface

Beitrag von slu » 27.03.2010 18:48:08

Hi,

Code: Alles auswählen

20617 pts/0    R      3:42 sudo kvm -hda /home/...
Der Server lässt sich nun als User ohne Fehlermeldung und Passwort starten, allerdings kommt das tap0 Interface nicht hoch, da fehlen bestimmt wieder Berechtigungen. :roll:
Der Prozess läuft nach wie vor als root, zumindest zeigt mir das mein "htop" an, ist das richtig?
Ich hab es auch nicht geschaft qemu eine bereits angelegtes tap0 Interface zu übergeben, er möchte es immer selber anlegen :?

Wurde die qemu Geschichte in Debian Squeeze verbessert? Es kann doch nicht sein das es gewollt ist sämtliche Virtuele Rechner als root laufen zu lassen oder?
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: qemu als user starten mit tap interface

Beitrag von rendegast » 29.03.2010 12:38:55

Der Prozess läuft nach wie vor als root, zumindest zeigt mir das mein "htop" an, ist das richtig?
Dann läuft was falsch,
ist '-runas virtualserveruser' dem Befehl angeschlossen?
Ist virtualserveruser ein valider User auf dem System?

qemu eine bereits angelegtes tap0 Interface zu übergeben, er möchte es immer selber anlegen
Die Konfiguration des Netzwerks wird halt geändert zur Konfiguration der Bridge,
an die eth* und tap* anklinken.
Für jede Maschine ein tap-Interface, das automatisch mit fortlaufender Nummer angelegt wird.

Beispiel für das Anklinken des tap*, /etc/qemu-ifup:

Code: Alles auswählen

ETH=eth1
BRIDGE=bri0

IFCONFIG=/sbin/ifconfig
BRCTL=/usr/sbin/brctl

SUDO=sudo
SUDO=			# 20090602: Alles mit 'sudo qemu ... -runas ...' erledigt (?)

$SUDO $IFCONFIG $1 0.0.0.0
		#promisc up		scheint nicht noetig oder ist per default aktiviert?

#$SUDO -p "Password for $0:" $BRCTL addif $BRIDGE $1
$SUDO $BRCTL addif $BRIDGE $1
sudo /sbin/modprobe -v tun
(Ist nach Beispielen aus dem Netz erstellt, für die Funktion sollte die bridge erstellt sein.)
$1 ist das diesem Skript übergebene tap*-Interface der Maschine.

Für die bridge-Erstellung benutze ich noch ein Skript, das eth* stoppt und bri* startet,
bei dauerhafter Einrichtung kann das aber auch in /etc/network/interfaces hinterlegt werden.

In /etc/qemu-ifdown habe ich noch nichts drinstehen, da ich wohl das Interesse verloren habe.
Jedoch ist es wohl vorgesehen als die Umkehrung mit dem Trennen des tap* von der bridge.





Eventuell ist auch virtualbox etwas für Dich, hat ein nettes Interface,
das Netzwerk scheint einfacher.
(Mit meinem neuen virtualisierungsfähigen Rechner habe ich gebenched, grml-iso starten:
qemu / kvm 16 Sek.,
virtualbox (kvm-Modul NICHT geladen) 16 Sek.,
virtualbox (kvm-Modul geladen) 30 Sek.,
qemu / kqemu ~ 80 Sek.)
qtemu habe ich noch nicht ausprobiert, die Netzwerk-Konfig dürfte aber auch damit nötig sein.

virt-manager lädt mir zuviel Rattenschwanz auf mein System (was allerdings auch kein gnome-System ist), daher noch nichtmal angesehen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten