unshareを使用したchrootシミュレーション

unshareを使用したchrootシミュレーション

私は最小限のソースコードLinuxディストリビューション用のブートローダを作成しようとしています。

私はchrootのような環境で構築したいと思います。これにより包装が簡素化されます。今はセキュリティに興味がありません。ブートローダには非標準のサードパーティコマンドは必要ありません。ルートが必要でなければ良いでしょう。

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

/を偽造するためにunshare(1)と/ bin / shを使用できますか?

答え1

はい。もしあなたのカーネルはuser_namespacesをサポートしています(そしてアクティブです)。まず、「rootユーザーとして偽装」してからchroot(実際のrootユーザーとして)呼び出し権限を取得できます。 (以前はrootユーザーのみに制限する必要がありました。一般ユーザーは権限アップグレードを実行できます。(たとえば、chrootディレクトリのset-UID-rootバイナリとカスタムライブラリを介して)

シェルで次のことを試すことができます。

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

答え2

私は最近、さまざまなLinuxディストリビューションでこれを行う方法を調べました。最も簡単な方法は次のとおりです。

unshare -r chroot <target_folder> <command_w_path>

機能するには、chroot正しいライブラリとそのパスがターゲットフォルダに存在する必要があります。これは、ldd <command_w_path>そのエントリとそのパスを使用してターゲットフォルダにコピーすることで確認できます。ディストリビューション間に若干の違いがあります。たとえば、Arch Linux では機能するにはusr/libシンボリックリンクが必要です。lib

答え3

fakeroot / fakechrootはすでに素晴らしいので、バンドルされているかインストールしてください。インスピレーションを得るには、cdebootstrapをチェックしてください。

関連情報