Es hilft zu verstehen, was chroot
eigentlich ist, bzw. wozu es gedacht war: eine primitive Virtualisierungs-Umgebung. So einfach wie genial ändert es dabei einfach das Wurzelverzeichnis, also "/", zu einem anderen Verzeichnis, das ist alles. Und da unter Linux "alles eine Datei ist", hat das weitreichende Konsequenzen. In diesem geänderten "/" kann man jetzt zum Beispiel einen Webserver laufen lassen ... wenn der gehackt wird, dann hat der Angreifer auch garantiert keinen Zugriff auf das restliche Dateisystem (außer er findet eine Möglichkeit, root zu werden). Wenn dieser Webserver eine Library unter /lib braucht ... gut ... kopieren wir ihm sie dahin. Das lässt sich beliebig kompliziert und umfangreich ausdehnen, je nachdem, was für Programme und Libraries in der chroot-Umgebung nötig sind ... außer dem Kernel lässt sich alles anpassen.
Die eigentliche Magie passiert dann durch diese mount --bind Befehle, die auch die Hardware-Umgebung des laufenden Systems in dieses chroot-Verzeichnis verpflanzen. Aus Sicht des eigentlichen Ziels der Virtualisierung ist das eine Katastrophe ... plötzlich können diese abgeschotteten Prozesse auf /proc und /sys und /dev zugreifen, und dort Informationen sammeln und Sicherheitslücken suchen. Wechselt man per chroot aber ins Wurzelverzeichnis einer anderen Linux-Installation, so ist das eine Möglichkeit, in diesem Linux zu arbeiten, als wäre man dort angemeldet.
Die Erklärung von Ubuntu deckt da eigentlich alle Eventualitäten und Systemverzeichnisse ab (du scheinst da einige auszulassen):
http://wiki.ubuntuusers.de/chroot/Live-CD
TomL hat geschrieben: Was mir jetzt nicht klar ist, wieso muss ich denn /sys und /proc explizit wieder herausnehmen?
"Herausnehmen"? Im Gegenteil ... du tust sie hinein in die chroot-Umgebung.
Das sind virtuelle Verzeichnisse, die der Kernel im Speicher erzeugt, und in denen Informationen über die Hardware-Umgebung des Systems stehen. Das fängt bei einfachen Sachen an, wie verwendeter Prozessor und vorhandene Partitionen. Wenn auch nur irgendein Programm aus dem chroot-System Informationen aus diesen Verzeichnissen braucht, sind sie nötig.
Oder anders ausgedrückt ... sie gehören zu einem vollständigen Linux-System. Und sie sind diejenigen, die nicht auf der Festplatte stehen, und daher in dem System in der chroot-Umgebung fehlen. Darum müssen sie extra hinzugefügt werden.
TomL hat geschrieben: Wie wirken sich irgendwelche Anderungen "drüben" auf diese beiden Verzeichnisse "hier" aus?
Das ist eine gute Frage. Da diese Verzeichnisse nur im Speicher existieren, sind deine Daten nicht akut bedroht. Solltest du aber ein "bösartiges System" in der chroot-Umgebung erwarten, wäre chroot eh die falsche Wahl. Gut, solange du von einer Live-CD aus arbeitest, kann so oder so nichts schlimmes passieren ...
Die Grenzen sind schwer zu fassen, und fangen da an, wo der laufende Kernel nicht zum System in der chroot-Umgebung passt.
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001