On 11/20/2012 09:44 AM, Tobias Crefeld wrote:
Hacks, die die zusätzlichen CPU-Befehle zur Hardware-Virtualisierung nutzen, werden in einer Guest-VM automatisch, da notwendigerweise, deaktiviert.
Stimmt nicht, sowohl AMD als auch Intel CPUs können zumindest mit KVM nested virtualization. Unter KVM kann man aber sehr genau einstellen, was die Guest CPUs können sollen. So habe ich vor kurzem kvm 1.2 in einer VM mit opensuse 11.3 kompiliert und dann in der VM noch eine VM mit SLES11SP2 gestartet. Klar, das ist kein Rennwagen. Aber es geht. Das kvm_* Modul auf dem Host muss dazu mit der Option nested unterstützen und mit "nested=1" geladen werden: # modinfo kvm_intel ... parm: nested:bool ... # modprobe kvm_intel nested=1 Der VM sagt man dann, dass sie Virtualisierung kann, indem man die entsprechenden Flags beim Start von qemu-kvm mit gibt, z.B. # qemu-kvm -cpu kvm64,+vmx ...
Kann man zwar auch häufig manuell im BIOS machen, tut aber kaum jemand.
Bei meinem Notebook musste ich erst tief im Bios graben, um Virtualisierung anzuschalten.
So wie ein chroot auch nur solange dicht hält, wie kein trap in den Kernel gefunden wird.
Um aus einer chroot Umgebung auszubrechen, braucht es keinen Bug im Kernel. Chroot ist *kein* Security-Feature! Hier eine kurze Anleitung, wie root aus einer chroot-Umgebung ausbricht: Angenommen man ist root und die current working directory ist das oberste Level einer chroot-Umgebung. Weiter angenommen perl ist in der chroot Umgebung verfügbar. Dann hilft folgendes: exec perl -e ' opendir D, "."; chroot "/tmp"; chdir D; chroot "../"x100; exec "/bin/sh" ' Der Trick ist, ein Prozess kann nur eine geänderte Root-Directory haben. Er kann aber Dateien oder Verzeichnisse außerhalb der chroot Umgebung geöffnet haben. Also mache ich das aktuelle Verzeichnis auf und merke mir den File Descriptor in D. Jetzt ändere ich meine aktuelle Root-Directory. Dafür brauche ich Root-Rechte in der chroot Umgebung. D zeigt nun auf ein Verzeichnis außerhalb der aktuellen chroot Umgebung. Mittels "chrdir D" wird dieses Verzeichnis zur current working directory, von der aus man dann mit "." und ".." weitere Verzeichnisse adressieren kann. Nun wird der String "../" 100 Mal hintereinander geschrieben und ein chroot in das Ergebnis gemacht. Vorausgesetzt, die Verschachtelungstiefe der ursprünglichen chroot Umgebung war weniger als 100 sollte man jetzt in der eigentlichen Root angekommen sein. Für den, der das Ganze als kleines statisch gelinktes C-Programm parat haben will, sei gesagt, Perl macht aus "chdir D" ein "fchdir(fd)". Torsten -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org