So verwenden Sie Chroot in Debian Top 10

So verwenden Sie Chroot in Debian Top 10
In einer Testumgebung müssen wir häufig bestimmte Anwendungen sandkasten, um zu verhindern, dass sie den Rest des Systems beschädigen oder schnüffeln. Es stehen verschiedene Tools zur Verfügung, um ein Programm zu sandboxen und zu verhindern, dass es den Rest des Systems beeinflusst, wie Virtualbox, VMware, Xen, KVM usw. Für nur ein oder nur wenige Anwendungen scheint das Sandboxing eines gesamten Betriebssystems jedoch nicht praktisch zu sein.

Für Linux OS steht ein Tool zur Verfügung, das als Chroot bezeichnet wird und eine einfachere und schnellere Möglichkeit für Sandboxen einer Anwendung bietet. Mit Chroot können Sie jede Anwendung installieren und testen, ohne den Rest des Systems zu beeinflussen.

In diesem Artikel wird erläutert, wie Chroot in Debian 10 Buster verwendet wird, zusammen mit einigen Beispielen. Zur Erläuterung werden wir eine Chroot -Umgebung für die Bash und einige der Befehle wie die Befehle „LS“, „IP“ und „PWD“ erstellen.

Was ist Chroot?

Das Chroot -Tool ist ein Befehl in Linux, der das Stammverzeichnis einer Anwendung in ein anderes Verzeichnis ändert. Prozesse, die in diesem neuen Root -Verzeichnis ausgeführt werden, können nicht auf die Dateien außerhalb zugreifen. Daher isoliert es die Operationen von Anwendungen aus dem Rest des Systems.

Wie funktioniert Chroot??

Chroot arbeitet, indem er die Anwendung und alle ausführbaren und Abhängigkeiten im alternativen Root -Verzeichnis kopiert. Anschließend wird die Anwendung innerhalb dieses alternativen Root -Verzeichnisses ausgeführt, wodurch die Anwendung als ursprüngliches Root -Verzeichnis betrachtet wird. Das Stammverzeichnis ist das oberste Verzeichnis in der Hierarchie, und keine Anwendung kann höher als dieses Verzeichnis werden. So isoliert Chroot die Anwendung vom Rest des Systems.

Anwendungsfälle

  • Einrichten einer Testumgebung
  • Ausführen von 32-Bit-Programmen auf einem 64-Bit-System
  • Ausführen älterer Programmversionen unter der neuesten Betriebssystemversion
  • Passwort-Wiederherstellung

Syntax

Das Folgende ist die grundlegende Syntax für den Befehl chroot:

$ chroot Befehl

Befolgen Sie die folgenden Schritte, um den Befehl chroot in debian zu verwenden, um eine chroot -Umgebung einzurichten.

Erstellen Sie ein alternatives Root -Verzeichnis

Erstellen Sie zunächst ein alternatives Root -Verzeichnis, das für die Chroot -Umgebung verwendet werden kann.

$ sudo mkdir ~/new_root

Der obige Befehl erstellt die NEW_ROOT Verzeichnis unter dem Heim Verzeichnis, das als Stammverzeichnis in der Chroot -Umgebung verwendet wird.

Wesentliche Verzeichnisse hinzufügen

Erstellen Sie die Verzeichnisse „Bin“, „lib“ und „lib64“ unter den ~/new_root Verzeichnis:

$ sudo mkdir -p ~/new_root/bin, lib64

Programmbinärdateien kopieren

Alles, was erforderlich ist, um eine Anwendung in der Chroot -Umgebung auszuführen, muss im alternativen Root -Verzeichnis liegen. In diesem Artikel werden wir eine Chroot -Umgebung für die Bash und einige Befehle erstellen, einschließlich der Befehle „LS“, „IP“ und „PWD“. Deshalb werden wir die Binärdateien aus dem kopieren /Behälter Verzeichnis zum Alternativ ~/new_root/bin Verzeichnis. Um die Binärdateien der Befehle zu lokalisieren, verwenden Sie den Befehl welcher Befehl:

$, die ls ip pwd verprügeln

Kopieren Sie als nächstes die Binärdateien der Befehle in die ~/new_root/bin Verzeichnis.

$ sudo cp -v/bin/bash, ls, ip, pwd ~/new_root/bin

Programmabhängigkeiten kopieren

Wir müssen auch herausfinden, welche Abhängigkeiten unser Programm benötigt. Zuerst müssen wir herausfinden, was diese Abhängigkeiten sind, und dann werden wir sie in die kopieren ~/new_root/lib Verzeichnis.

Abhängigkeiten für Bash kopieren

Ermitteln Sie zunächst die Abhängigkeiten für das Bash -Programm:

$ ldd /bin /bash

Kopieren Sie diese Abhängigkeiten dann in die ~/new_root/lib Verzeichnis.

$ cp -v/lib/x86_64-linux-gnu/libtinfo.So.6, libdl.So.2, libc.So.6 ~/new_root/lib

Kopieren Sie sie für die /lib64 -Dateien in die ~/new_root/lib64 Verzeichnis.

$ cp -v /lib64 /ld-linux-x86-64.So.2 ~/new_root/lib64

Kopieren Sie die Abhängigkeiten für LS -Befehl

Ermitteln Sie zunächst die Abhängigkeiten für den Befehl ls:

$ ldd /bin /ls

Kopieren Sie diese Abhängigkeiten dann in die ~/new_root/lib Verzeichnis.

$ sudo cp -v/lib/x86_64-linux-gnu/libselinux.So.1, libc.So.6, libpcre.So.3,
libdl.So.2, libpThread.So.0 /lib64 /ld-linux-x86-64.So.2 ~/new_root/lib

Kopieren Sie sie für die /lib64 -Dateien in die ~/new_root/lib64 Verzeichnis.

$ sudo cp -v /lib64 /ld-linux-x86-64.So.2 ~/new_root/lib64

Abhängigkeiten für den IP -Befehl kopieren

Ermitteln Sie zunächst die Abhängigkeiten für den IP -Befehl:

$ ldd /bin /ip

Kopieren Sie diese Abhängigkeiten dann in die ~/new_root/lib Verzeichnis.

$ cp -v /lib /x86_64 -linux
gnu/libselinux.So.1, libelf.So.1, libmnl.So.0, libcap.So.2, libdl.So.2, libc.So.6,
libpcre.So.3, Libz.So.1, libpThread.So.0 ~/new_root/lib

Kopieren Sie sie für die /lib64 -Dateien in die ~/new_root/lib64 Verzeichnis.

$ sudo cp -v /lib64 /ld-linux-x86-64.So.2 ~/new_root/lib64

Kopieren Sie die Abhängigkeiten für den PWD -Befehl

Ermitteln Sie zunächst die Abhängigkeiten für den PWD -Befehl:

$ ldd /bin /pwd

Kopieren Sie diese Abhängigkeiten dann in die ~/new_root/lib Verzeichnis.

$ sudo cp -v/lib/x86_64-linux-gnu/libc.So.6 ~/new_root/lib

Kopieren Sie sie für die /lib64 -Dateien in die ~/new_root/lib64 Verzeichnis.

$ sudo cp -v /lib64 /ld-linux-x86-64.So.2 ~/new_root/lib64

Verwenden Sie den folgenden Befehl, um alle Verzeichnisse im alternativen Root -Verzeichnis anzuzeigen:

$ ls -r

Wechseln Sie zum alternativen Root -Verzeichnis

Jetzt sind wir endlich bereit, in unsere neue Chroot -Umgebung umzusteigen. Um das Stammverzeichnis zu ändern, führen Sie den folgenden Befehl in der Shell mit Stammberechtigungen aus:

$ sudo chroot ~/new_root/bin/bash

Wo ~/new_root ist unser alternatives Wurzelverzeichnis und /Bin/Bash ist die Anwendung, mit der wir die Chroot -Umgebung eingerichtet haben.

Nach dem Ausführen des obigen Befehls werden Sie feststellen, dass sich die Bash -Eingabeaufforderung zu geändert hat Bash-X.y was in unserem Fall ist Bash-5.0 (wo 5.0 ist die Bash -Versionsnummer).

Notiz: Sie können auf den folgenden Fehler stoßen, nachdem Sie den Befehl chroot ausgeführt haben, wie ich:

Wenn dieser Fehler auftritt, überprüfen Sie, dass Sie alle Bibliotheken und ausführbaren Ausführungsfähigkeiten zum erforderlichen Programm zum neuen Stammverzeichnis hinzugefügt haben.

Nach dem Eintritt in die Chroot -Umgebung können Sie nur auf die darin enthaltene Datei zugreifen. Führen Sie die Befehle aus, die Sie für Ihre Chroot-Umgebung eingerichtet haben, einschließlich einiger integrierter Befehle. Sie können die eingebauten Befehle finden, indem Sie das ausführen Hilfe Befehl in der Shell.

Sie können sehen, dass wir die Befehle „LS“, „PW“ und „IP“ ausprobiert haben, und alle gelang ihnen. Wenn wir einen anderen Befehl als diese drei Befehle und die integrierten Befehle ausführen, schlägt der Befehl fehl, da wir ihn nicht für die Chroot-Umgebung eingerichtet haben. Wie Sie im folgenden Screenshot sehen können, haben wir versucht, die Befehle „Touch“, „Ping“ und „klare“ auszuführen, und alle sind fehlgeschlagen.

CHROOT beenden

Verwenden Sie die Umgebung mit der Chroot -Umgebung, um die Ausfahrt Befehl.

Abschluss

In diesem Artikel haben Sie gelernt, was Chroot ist und wie es in Linux funktioniert. Dieser Artikel hat Ihnen Schritt für Schritt gezeigt. Jetzt sollten Sie sich mit dem Befehl chroot wohl fühlen, um das Stammverzeichnis eines Prozesses und seine Unterprozesse zu ändern und sie vom Rest des Systems zu isolieren.