chroot - Möglichkeiten und Grenzen???

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
TomL

chroot - Möglichkeiten und Grenzen???

Beitrag von TomL » 03.02.2015 20:04:25

Moin

Bei meiner USB-Stick-Aktion habe ich jetzt zum ersten Mal "chroot" kennengelernt. Aber irgendwie sind mir die Konsequenzen des Befehls noch nicht so richtig klar, bzw. ich habe noch Zweifel. Das Linux-Wiki sagt:
Was tut chroot?
Mit der Funktion chroot() kann ein Programm sein Wurzelverzeichnis (/) wechseln. Nach dem Aufruf kann es nicht mehr auf Dateien außerhalb des neuen Baumes zugreifen (man spricht hier auch von chroot jail).
Wenn ich also mit chroot auf ein anderes Wurzelverzeichnis "/" wechsel, dann finden allen Aktionen von nun an in diesem neuen Verzeichnis statt und das vorherige RootDir ist nicht mehr sichtbar. Das heisst, ich habe ein primäres, eigenes Haupt-Root meines Systems.... und ein temporäres, anderes root irgendwo, solange wie ich eben chroot'e .. soweit ok.

Ich habe die folgenden Shellbefehle eingegeben, um von meinem HD-Wheezy-Root auf das USB-Jessie-Root zu wechseln. Was mir jetzt nicht klar ist, wieso muss ich denn /sys und /proc explizit wieder herausnehmen? Wie wirken sich irgendwelche Anderungen "drüben" auf diese beiden Verzeichnisse "hier" aus?

Code: Alles auswählen

mount /media/USBDebian
mount -o bind /sys /media/USBDebian/sys
mount -o bind /proc /media/USBDebian/proc
chroot /media/usb
Und was ich auch noch nicht so recht kapiert habe, sind andere mögliche Konsequenzen. Wo wirkt jetzt z.B. ein apt-get install oder remove? Ich befinde mich ja während chroot in einem Terminalfenster, heisst das, dass dann ein anderes Terminalfenster von dem chroot gar nix mitkriegt? Mit anderen Worten, das nicht-umgeleitete Terminalfenster macht alle Änderungen in meinem System, und das umgeleitete Terminalfenster macht alle Änderungen in dem ge'chroot'eten System?

Benutzeravatar
towo
Beiträge: 4552
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: chroot - Möglichkeiten und Grenzen???

Beitrag von towo » 03.02.2015 20:33:30

Was mir jetzt nicht klar ist, wieso muss ich denn /sys und /proc explizit wieder herausnehmen?
Weil das virtuelle filesysteme sind, die nur gefüllt sind, wenn das System gebootet ist, was bei deiner anderen Install in diesem Moment nicht der Fall ist.
Wie wirken sich irgendwelche Anderungen "drüben" auf diese beiden Verzeichnisse "hier" aus
1. Hast DU in diesen Verzeichnisen nix zu schaffen und
2. wenn Du im chroot in diesen Verzeichnissen rumspielst, wirkt sich das latürnich auf den Host aus!
Wo wirkt jetzt z.B. ein apt-get install oder remove?
Im chroot latürnich, wo sonst?

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: chroot - Möglichkeiten und Grenzen???

Beitrag von smutbert » 03.02.2015 20:57:44

TomL hat geschrieben:[…] Mit anderen Worten, das nicht-umgeleitete Terminalfenster macht alle Änderungen in meinem System, und das umgeleitete Terminalfenster macht alle Änderungen in dem ge'chroot'eten System?
So ist es. Du kannst in dem "chroot-Terminal" im Prinzip beliebige Anwendungen starten, die in der chroot-Umgebung installiert sind (das was außerhalb ist, sieht die chroot-Umgebung ja gar nicht) und die laufen dann natürlich auch alle in der chroot-Umgebung.

Für die Gerätedateien ist oft auch ein

Code: Alles auswählen

mount -o bind /dev /media/USBDebian/dev
recht hilfreich.

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: chroot - Möglichkeiten und Grenzen???

Beitrag von NAB » 03.02.2015 21:24:49

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

uname
Beiträge: 12474
Registriert: 03.06.2008 09:33:02

Re: chroot - Möglichkeiten und Grenzen???

Beitrag von uname » 03.02.2015 22:34:49

Auch wenn es thematisch nur teilweise passt. Wenn du ein neues Debian installieren willst, kannst du dir mal Debiandebootstrap bzw. falls du faul bist Debiangrml-debootrap anschauen, welches chroot zur Installation nutzt.
Ich bemühe es von Zeit zur Zeit zur Installation von Debian-Systeme. Die Platte ist vollkommen leer und gebootet wird ein normales Debian-Live-System (CD/USB, Cruchbang, GRML, was eben rumliegt, ...). Aus diesem Live-System (natürlich per WLAN ;-) ) installiere ich dann mit "debootstrap" auf der Festplatte ein normales Debian. Hierzu ist es nötig, dass während der Installation teilweise ins neue System gechrootet wird.
Wie gesagt passt nicht ganz zum Thema war aber trotzdem hoffentlich interessant ;-)

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: chroot - Möglichkeiten und Grenzen???

Beitrag von catdog2 » 04.02.2015 01:16:34

Und da unter Linux "alles eine Datei ist", hat das weitreichende Konsequenzen.
Ist es nicht und deshalb hat es auch so einige Einschränkungen. Beispielsweise hast du denselben Zugriff auf das Netzwerk im chroot, kannst alle Prozesse sehen usw. Der Linux Kernel bringt mittlerweile (sehr spät im übrigen nachdem es schon Jahrelang patchsets wie linux-vserver oder openvz gab und die Jails in FreeBSD noch virl länder) aber auch dafür Lösungen dafür mit wie z.B. network namespaces.
Unix is user-friendly; it's just picky about who its friends are.

Antworten