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

Richten Sie eine Chroot-Umgebung auf Ubuntu mit debootstrap ein

Chroot

Chroot bietet eine Möglichkeit, eine isolierte Umgebung innerhalb eines Betriebssystems einzurichten, in der bestimmte Anwendungen ausgeführt werden können, ohne mit dem Rest des Systems zu interagieren. Es wird auch als Jail bezeichnet und wird häufig verwendet, um eine Testumgebung für Anwendungen zu erstellen, die aufgrund verschiedener Bedenken wie Stabilität oder Sicherheit nicht direkt auf dem System installiert werden dürfen.

32-Bit-Anwendungen in einer Chroot-Umgebung ausführen 64-Bit-Ubuntu

Da Chroot Anwendungen in einer separaten Umgebung isoliert, wird es auch verwendet, um 32-Bit-Anwendungen innerhalb einer 64-Bit-Betriebssystemumgebung auszuführen. Heutzutage sind die meisten Betriebssysteme und Anwendungen sowohl auf Desktops als auch auf Servern 64-Bit.

Es gibt jedoch Szenarien, in denen Anwendungen aufgrund verschiedener Einschränkungen nicht auf 64 Bit migriert werden können. Dies geschieht in Organisationen, in denen große Legacy-Anwendungen seit langem ausgeführt werden. Damit solche Anwendungen weiterhin ausgeführt werden können, muss entweder ein 32-Bit-Betriebssystem installiert sein oder eine 32-Bit-Umgebung innerhalb einer 64-Bit-Betriebssysteminstallation erstellt werden.

Die Chroot-Umgebung

Eine Chroot-Umgebung ist eine Möglichkeit, ein separates sogenanntes "Gefängnis" in Ihrem System zu erstellen, auf dem ein anderes Betriebssystem als der Host ausgeführt wird. Mit anderen Worten, es ist ein Betriebssystem, das innerhalb eines anderen Betriebssystems läuft. Technisch ändert der Benutzer vorübergehend das Root-Verzeichnis (normalerweise /) in ein anderes Root-Verzeichnis (in unserem Beispiel /srv/chroot).

In allen Unix-basierten Betriebssystemen ist das Root-Verzeichnis die Spitze des Dateisystembaums, und die Anwendungen können nicht auf Dateien oder Verzeichnisse weiter oben zugreifen, daher haben sie ein neues, anderes Root-Verzeichnis und wechseln zu diesem, die laufenden Anwendungen dort, sind vom Rest des Hostsystems isoliert.

Dieser Ansatz hat viele Vorteile:

-  Test applications without the risk of compromising the entire host system.
-  From the security point of view, whatever happens in the chroot environment won't affect the host system (not even under root user)
-  A different operating system running in the same hardware

In diesem Fall nutzen wir diese Funktion, um 32-Bit-Anwendungen nativ auf einem 64-Bit-Host auszuführen.

Die notwendigen Pakete zum Einrichten der Chroot-Umgebung sind debootstrap und schroot , die im Ubuntu-Repository verfügbar sind. Der schroot-Befehl wird verwendet, um die Chroot-Umgebung einzurichten.

Debootstrap ermöglicht es Ihnen, eine neue frische Kopie eines beliebigen Debian- (oder Debian-basierten) Systems in einem Verzeichnis mit allen grundlegenden Befehlen und Binärdateien zu installieren, die zum Ausführen einer grundlegenden Instanz des Betriebssystems erforderlich sind.

Sie können direkt als Root chrooten, indem Sie einfach den Chroot-Befehl ausführen, aber normale Benutzer können diesen Befehl nicht verwenden. Die schroot ermöglicht den Zugriff auf Chroots für normale Benutzer, die denselben Mechanismus verwenden, aber mit Berechtigungsprüfung und ermöglicht zusätzliche automatische Einrichtung der Chroot-Umgebung, wie z. B. das Mounten zusätzlicher Dateisysteme und andere Konfigurationsaufgaben.

Diese automatisierte Einrichtung erfolgt durch die Aktion von Einrichtungsskripts, die angepasst und erweitert werden können, um alle erforderlichen Aktionen auszuführen, wie unten erläutert.

Dies sind die Schritte zum Implementieren dieser Funktionalität in Ubuntu 12.04:

1. Installieren Sie die Pakete:

Der erste Schritt besteht darin, die Pakete mit apt-get:

zu installieren
$ sudo apt-get install debootstrap
$ sudo apt-get install schroot

2. Erstellen Sie eine Schroot-Konfiguration:

Wir müssen Schroot in der Konfigurationsdatei entsprechend unseren Anforderungen konfigurieren.

Wählen Sie einen kurzen Namen für die Chroot, wir haben precision_i386 verwendet:

$ sudo gedit /etc/schroot/chroot.d/precise_i386.conf

Fahren Sie dann mit der Konfiguration fort, wie in diesem Beispiel:

[precise_i386]
description=Ubuntu 12.04 Precise for i386
location=/srv/chroot/precise_i386
personality=linux32
root-users=bob
type=directory
users=alice,bob,charlie

Passen Sie die Werte der Konfigurationsparameter im obigen Beispiel an Ihr System an:

location - This should be a directory that is outside of the /home tree. 
The latest schroot documentation recommends /srv/chroot.

personality - Enable this line if the host system is 64-bit running on an amd64/x64 computer 
and the chroot is 32-bit for i386. Otherwise, leave it disabled, by adding "#" as first character.

root-users - These are users on the host system that can invoke the schroot program and 
get direct access to the chroot system as the root user.

users - These are users on the host system that can invoke the schroot program and 
get access to the chroot system. Your username on the host system should be here.

3. Installieren Sie 32-Bit-Ubuntu mit debootstrap

Debootstrap lädt ein minimales Betriebssystem herunter und installiert es in Ihrer Chroot-Umgebung .

Sie können jede Debian-basierte Distribution Ihrer Wahl installieren, solange Sie ein Repository zur Verfügung haben. Ich liebe dieses Dienstprogramm, es spart Ihnen viel Zeit und Arbeit.

In unserem Beispiel haben wir die Chroot-Umgebung in das Verzeichnis /srv/chroot/precise_i386 gelegt und dies ist das Root-Verzeichnis der Chroot-Umgebung.

$ sudo mkdir -p /srv/chroot/precise_i386
$ sudo debootstrap --variant=buildd --arch=i386 precise /srv/chroot/precise_i386 http://archive.ubuntu.com/ubuntu/

Es dauert einige Zeit (abhängig von Ihrer Bandbreite), das komplette System herunterzuladen, zu installieren und zu konfigurieren. Es dauert etwa 500 MB für eine minimale Installation.

4. Testen Sie die Chroot-Umgebung

Jetzt sollten wir unser 32-Bit-Ubuntu installiert haben.

Listen Sie zuerst die verfügbaren Chroot-Umgebungen mit dem schroot-Befehl auf.

$ schroot -l
chroot:precise_i386

Als Ergebnis sollten Sie mit precision_i386 rechnen.

Lassen Sie uns jetzt loslegen, geben Sie einfach als Ihr normaler Benutzer

ein
$ schroot -c precise_i386 -u root

Jetzt befinden Sie sich als root in der chroot-Umgebung!

Überprüfen Sie, ob die Eingabeaufforderung etwas anders als gewöhnlich ist und ob Sie neue Werte für die folgenden Befehle haben

lsb_release -a
uname -a

5. Zusätzliche Konfiguration

Jetzt, da wir eine funktionierende 32-Bit-Umgebung haben, lassen Sie uns die Installation der Mindestanforderungen und aller erforderlichen Bibliotheken und Anwendungen abschließen.

$ apt-get install ubuntu-minimal

Dadurch werden die erforderlichen Pakete einer minimalen Ubuntu-Installation heruntergeladen und installiert.

Das ist alles.

Sie können mit der Installation der Pakete, Bibliotheken und Abhängigkeiten beginnen, die Ihre Anwendung benötigt, wie gewohnt mit dem Befehl apt-get oder dpkg. Es wird die i386-Version abrufen, solange Sie dies innerhalb der Chroot-Umgebung tun.

Sie können es wie das Hostsystem aktualisieren und aktualisieren; Bearbeiten Sie Ihre /etc/apt/sources.list und modifizieren Sie sie nach Ihren Bedürfnissen.

Die Home-Verzeichnisse der Benutzer innerhalb der Chroot werden mit dem Host geteilt.
Das ist sehr nützlich, um Zugriff auf Anwendungen, Dokumente und Dateien zu haben, die Sie benötigen sollten.

Um dieses Tutorial zu beenden und eine Grafikanwendung von der Chroot aus auszuführen, müssen Sie die Umgebungsvariable DISPLAY exportieren.

$ DISPLAY=:0.0 ./yourapp

Bitte zögern Sie nicht, Fragen oder Kommentare zu diesem Artikel zu senden.

Ich hoffe, es hat Ihnen gefallen und Sie haben es als hilfreich empfunden!


Ubuntu
  1. Ersteinrichtung des Servers mit Ubuntu 14.04

  2. So konfigurieren Sie die Chroot-Umgebung in Ubuntu 14.04

  3. Linux-Container mit LXC auf Ubuntu 16.04 einrichten

  4. So richten Sie IP-Failover mit KeepAlived unter Ubuntu und Debian ein

  5. Richten Sie eine Jailed-Shell mit Jailkit auf Ubuntu ein

Eine Anleitung zur Installation von Ubuntu 15.04 mit Screenshots

So richten Sie die Django-Entwicklungsumgebung unter Ubuntu 18.04 ein

Ein Shell-Skript zum Einrichten der Entwicklungsumgebung in Ubuntu

So richten Sie WordPress auf Ubuntu Server mit Apache ein

So richten Sie die virtuelle Umgebung von Python 3 unter Ubuntu 20.04 ein

Ersteinrichtung des Servers mit Ubuntu 18.04