Chroot mit unshare simulieren


13

Ich versuche, einen Bootstrapper für eine minimale Linux-Distribution von der Quelle zu schreiben.

Ich möchte in einer chroot-ähnlichen Umgebung bauen. Dies sollte das Verpacken vereinfachen. Sicherheit ist mir an dieser Stelle egal. Der Bootstrapper sollte keine nicht standardmäßigen Befehle von Drittanbietern erfordern. Es wäre großartig, wenn es auch nicht nötig wäre, root zu sein.

Deshalb ist fakechroot (1) fakeroot (1) chroot (1) nicht genau das, wonach ich suche.

Ist es möglich, unshare (1) und / bin / sh zu fälschen / zu verwenden?


AFAICS unshare(1)ist ein ziemlich dünner Wrapper für eine Sammlung von Nur-Root-Systemaufrufen, und (zumindest unter Fedora 18) ist es kein SUID, daher bezweifle ich sehr, dass dies für Nicht-Root-Benutzer funktionieren wird.
Vonbrand

Oh das ist eine Schande. Ich hatte den Eindruck, unshare is setuid. Ich denke, es geht mir gut, Wurzel zu sein.
Rooties

4
Mit der Veröffentlichung des neuen Linux 3.8-Kernels können Sie Namespace-Funktionen als Nicht-Root-Benutzer verwenden. Aber das ist eine glänzende Neuerung: Sie brauchen zuerst einen UID-Namespace und unshare unterstützt das noch nicht. Und Ihre Aktionen werden immer noch begrenzt sein.
BatchyX

Antworten:


5

Ja. Wenn Ihr Kernel user_namespaces unterstützt (und diese aktiviert sind) , können Sie zuerst den Benutzer "root" simulieren, der dann das Recht zum Aufrufen erhält chroot(als echter Root-Benutzer). (Diese Funktion musste zuvor nur auf den Root-Benutzer beschränkt werden, da ein normaler Benutzer die Möglichkeit zur Eskalation von Berechtigungen hatte.) (z. B. über Set-UID-Root-Binärdateien und benutzerdefinierte Bibliotheken im Chroot-Verzeichnis).)

Sie können dies in Ihrer Shell versuchen:

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1

Nicht erkannte Option '--map-root-user'
Zibri

1
@Zibri Es funktioniert für mich jetzt, mit unsharevon util-linux-2.30.2-alt1
IMZ - Ivan Zakharyaschev

1

Einfach fakeroot / fakechroot bündeln oder installieren, da sie dafür schon perfekt geeignet sind. Schauen Sie sich cdebootstrap als Inspiration an.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.