非共有でchrootをシミュレートする


13

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

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

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

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


AFAICS unshare(1)は、ルートのみのシステムコールのコレクションに対するかなり薄いラッパーであり、(少なくともFedora 18では)SUIDではないため、非ルートユーザーに対してはうまくいくとは思えません。
フォンブランド

ああ、それは残念です。非共有はsetuidであるという印象を受けました。私はrootになっても大丈夫だと思います。
ルーティーズ

4
新しいLinux 3.8カーネルのリリースでは、ネームスペース機能を非ルートとして使用できます。しかし、これは光沢のある新しいものです。最初にuid名前空間が必要であり、unshareはまだそれをサポートしていません。そして、あなたの行動はまだ制限されます。
BatchyX

回答:


5

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

シェルでこれを試すことができます:

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

認識されないオプション '--map-root-user'
Zibri

1
@Zibriそれで、今私の作品unshareからのutil-linuxの-2.30.2-ALT1
IMZ -イワンZakharyaschev

1

fakeroot / fakechrootをバンドルまたはインストールするだけです。これは既に完全に適切です。インスピレーションについては、cdebootstrapをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.