Ist es möglich, einen Prozess in chroot mit einem virtuellen / proc-Dateisystem unter Linux auszuführen?

933
user4674453

Ich muss einen Prozess in einer Chroot mit einem virtuellen / proc-Dateisystem ausführen, sodass der Prozess nicht auf andere Prozesse zugreifen kann, die auf demselben Host ausgeführt werden. Der Prozess muss unter root ausgeführt werden und vollen Zugriff auf Dateien in chroot haben. Auch Änderungen am Dateisystem müssen im chrooted-Verzeichnis erhalten bleiben.

Ist es überhaupt möglich?

1
Gibt es einen bestimmten Grund, ein solches Verhalten zu erreichen? ddnomad vor 7 Jahren 1
Ein VM- oder LXC-Container gibt Ihnen ein echt aussehendes `/ proc`, ohne dass es sich tatsächlich um das` / proc` des Hosts handelt. quixotic vor 7 Jahren 0

2 Antworten auf die Frage

0
davidgo

Es ist möglich, / proc in einer Chroot-Umgebung zu mounten. Weitere Informationen hierzu finden Sie in dieser Antwort .

Ich hätte Bedenken, dass das Programm keinen Zugriff auf andere Prozesse erhalten könnte, da auf diese Informationen (wenn nicht auf alle Informationen) über / proc zugegriffen werden kann (/ proc / [pid-Nummer] gibt Ihnen Zugriff auf diese Informationen).

Es ist unklar, was Sie unter "Änderungen im Dateisystem" verstehen. Wenn diese Änderungen jedoch im Dateisystem sind, ausgenommen spezielle Bits wie / proc, / dev / etc, bleiben diese in der Chroot-Datei.

Das Einfügen des echten `/ proc` in die Chroot ist ziemlich genau das, was die Frage zu vermeiden versucht. quixotic vor 7 Jahren 0
@quixotic - wenn dies der Fall ist, lautet die Antwort "nein" - es sei denn, es werden mehr Informationen dazu gegeben, welche Teile von / proc benötigt werden. Wenn ich die Frage noch einmal lese, frage ich mich, ob das Verständnis von Dateisystemen korrekt ist - da "Änderungen am Dateisystem müssen beibehalten werden" auch der Zugriff auf Dateien außerhalb des Verzeichnisses unter dem chroot-Gefängnis impliziert. davidgo vor 7 Jahren 0
Ich stimme zu, dass dies nicht völlig sinnvoll ist - es könnte davon ausgegangen werden, dass für die Chroot eine schreibgeschützte Basis ist, wie etwa Docker- oder Snapshot-fähige VM-Images oder die Ausführung der Chroot in einem in einer Schleife eingebundenen ISO-Image oder ... quixotic vor 7 Jahren 0
> Es ist unklar, was Sie unter "Änderungen am Dateisystem" verstehen. Das war, um zu vermeiden, dass Docker-Fans das Thema überfluten :) Was ich wirklich brauche, ist, jedes Paket installieren zu können, das viele Abhängigkeiten auf diese Weise mit sich bringt. ' t das System verschmutzen und in der Shell verwendbar sein, wie es in / usr / bin installiert ist. Ich möchte also, dass es root verwendet, aber alle Änderungen, einschließlich Abhängigkeiten, Protokolle usw., in einem separaten Verzeichnis gespeichert werden. Ich möchte, dass es nichts über das Wurzelsystem und die laufenden Prozesse weiß, da es nicht reibungslos funktioniert. user4674453 vor 7 Jahren 0
0
lynx

Dies können Sie mit Linux-Namespaces erreichen. Container (Docker, lxc) werden daraus hergestellt. man unshareist dein Freund. Beachten Sie, dass der Angreifer leicht entkommen kann, chrootwenn Sie ihn nicht ordnungsgemäß verwenden. Informieren Sie sich vor der Verwendung darüber. Du wurdest gewarnt.