GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist ein Chroot-Gefängnis und wie wird es verwendet?

Einführung

Der Begriff Chroot-Gefängnis stammt aus dem Jahr 1992 und wird heute häufig verwendet. Aber was bedeutet dieser Begriff und wofür wird diese Operation verwendet?

In diesem Tutorial behandeln wir die Grundlagen der Verwendung von Chroot-Jails und zeigen Ihnen, wie Sie eines einrichten können.

Voraussetzungen

  • Ein System, auf dem ein Linux- oder Unix-Betriebssystem ausgeführt wird
  • Ein Benutzerkonto mit sudo-Berechtigungen
  • Zugriff auf Terminal/Befehlszeile

Was ist ein Chroot-Gefängnis?

Eine Chroot (kurz für root ändern ) ist eine Unix-Operation, die das scheinbare Stammverzeichnis in das vom Benutzer angegebene ändert.

Jeder Prozess, den Sie nach einer Chroot-Operation ausführen, hat nur Zugriff auf das neu definierte Stammverzeichnis und seine Unterverzeichnisse. Diese Operation wird umgangssprachlich als Chroot-Gefängnis bezeichnet da diese Prozesse außerhalb des neuen Stammverzeichnisses weder lesen noch schreiben können.

Wofür wird das Chroot-Gefängnis verwendet?

Chroot-Gefängnis wird verwendet, um eine begrenzte Sandbox zu erstellen, in der ein Prozess ausgeführt werden kann. Dies bedeutet, dass ein Prozess Daten außerhalb des vorgeschriebenen Verzeichnisbaums nicht böswillig ändern kann.

Eine weitere Verwendung für Chroot-Jails ist der Ersatz für virtuelle Maschinen. Diese Methode wird als Kernel-Level-Virtualisierung bezeichnet und benötigt weniger Ressourcen als virtuelle Maschinen. Dieser Vorgang ermöglicht es Benutzern, mehrere isolierte Instanzen auf demselben System zu erstellen.

Wie man das Chroot-Gefängnis benutzt

Dieses Beispiel führt Sie durch das Erstellen und Einrichten eines Chroot-Jails, damit es bash ausführen kann und ls Befehle.

Befolgen Sie diese Schritte:

1. Erstellen Sie ein neues Verzeichnis namens chroot_jail :

mkdir chroot_jail

Wenn wir versuchen chroot zu machen in das neue Verzeichnis erhalten wir folgende Ausgabe:

Sie müssen bash aktivieren Befehl, bevor Sie chroot können in das neue Verzeichnis. Dazu müssen die Befehlsdatei und alle zugehörigen Bibliotheken in das neue Stammverzeichnis kopiert werden.

2. Erstellen Sie einen neuen Unterverzeichnisbaum in chroot_jail :

mkdir -p chroot_jail/bin chroot_jail/lib64/x86_64-linux-gnu chroot_jail/lib/x86_64-linux-gnu

Diese Unterverzeichnisse speichern alle notwendigen Elemente der bash und ls Befehle.

3. Verwenden des cp Befehl mit dem which Befehl lässt bash kopieren und ls Befehle, ohne den Pfad anzugeben, von dem Sie kopieren.

Verwenden Sie dazu:

cp $(which ls) chroot_jail/bin/
cp $(which bash) chroot_jail/bin/

4. Für bash und ls Um im neuen Root-Ordner zu arbeiten, fügen Sie alle zugehörigen Bibliotheken zu chroot_jail/libraries hinzu . Verwenden Sie den ldd Befehl, um herauszufinden, welche Bibliotheken welchem ​​Befehl zugeordnet sind:

ldd $(which bash)
ldd $(which ls)

5. Kopieren Sie die entsprechenden Bibliotheken in das chroot_jail Unterverzeichnisse lib und lib64 .

Für die bash Befehl:

cp /lib/x86_64-linux-gnu/libtinfo.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/

Für ls Befehl:

cp /lib/x86_64-linux-gnu/libselinux.so.1 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libpcre2-8.so.0 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/
cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/
cp /lib/x86_64-linux-gnu/libpthread.so.0 chroot_jail/lib/x86_64-linux-gnu/

6. Verwenden Sie die chroot Befehl, um das Root-Verzeichnis in chroot_jail zu ändern Verzeichnis:

sudo chroot chroot_jail

Verwenden Sie das ls Befehl, um alle Dateien und Verzeichnisse im neuen Stammverzeichnisbaum aufzulisten:

ls -R

7. Wenn Sie mit der Verwendung des neuen Stammordners fertig sind, verlassen Sie die Shell:

exit

Linux
  1. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  2. Was ist ein cURL-Befehl und wie wird er verwendet?

  3. Chroot „Gefängnis“ – Was ist das und wie benutzt man es?

  4. Was ist und wie wird der Ordner public_ftp verwendet?

  5. Was ist eine u-Boot dtb-Datei und wie verwende ich sie (BeagleBoard xM)?

Was ist EFS (Elastic File System) in AWS und wie wird es verwendet?

Was ist Terraform und wie wird es auf AWS EC2 installiert und verwendet?

Was sind Firefox Multi-Account-Container? Warum und wie wird es verwendet?

Was ist EasyApache und wie verwende ich es?

Was ist Docker Compose und wie wird es verwendet?

Was ist PPA in Ubuntu Linux und wie verwende ich sie?