web-dev-qa-db-ja.com

unshareでchrootをシミュレートする

最小限のソースからのLinuxディストリビューション用のブートストラップを作成しようとしています。

Chrootのような環境で構築したいと思います。これにより、パッケージが簡素化されます。現時点ではセキュリティは気にしません。ブートストラップには、非標準のサードパーティコマンドは必要ありません。ルートである必要もなければ、それは素晴らしいことです。

これが、fakechroot(1)fakeroot(1)chroot(1)が私が探しているものではない理由です。

Unshare(1)と/ bin/shを使用して偽装することは可能ですか?

13
Rooties

はい。 カーネルがuser_namespacesをサポートし、それらが有効になっている場合) の場合、最初に「rootをシミュレート」し、次にchrootを(実際のrootユーザーとして)呼び出す権利を取得できます。 (以前は、 通常のユーザーによる特権昇格の可能性 (たとえば、chrootディレクトリのset-UID-rootバイナリおよびカスタムライブラリを介して)のため、rootユーザーのみに制限する必要がありました。)

あなたはあなたのシェルでこれを試すことができます:

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

Fakeroot/fakechrootはすでに完全に適切であるため、バンドルまたはインストールするだけです。インスピレーションを得るためにcdebootstrapを見てください。

1
Tobu