Linuxサンドボックスからの完全な分離

Linuxサンドボックスからの完全な分離

iOSのアプリケーション(およびOS Xのサンドボックスアプリケーション)は、アプリケーション固有のファイルとディレクトリのみを含む仮想ルートファイルシステムに制限されています。 iOSアプリケーションに表示されるルートディレクトリは次のとおりです。

/
    Application.app/
    Documents/
    Library/
    tmp/

ご覧のとおり、アプリケーションの実行に必要なchrootとは異なり、サンドボックスのルートにはシステム実行可能ファイルや共有ライブラリは公開されていません。これはTizen、bada、および多くのJ2MEオペレーティングシステムでも同様です。 Linuxは現在、LXC、Docker、Chrome OSなどのソフトウェアで使用されている名前空間、cgroup、seccomp-bpfなどのサンドボックス化のための新しい技術を得ています。これらのテクノロジのいずれかを使用して、次のようなアプリケーションのルートを作成できます。

/
    app/
    data/
    resources/
    app.xml

組み込みプラットフォームまたは家電製品デバイスで、誰かがデバイスの残りのファイルシステムをアプリケーションに公開したくない場合がありますか?私は、iOSアプリが刑務所に閉じ込められずにAppleのライブラリとフレームワークを呼び出すことができると推測します。それでは、Linuxの最新技術も同じことができますか?

答え1

あなたはしません必要chrootアプリケーションを実行する内部システムライブラリまたはバイナリ。

たとえば、

$ ls chroot_test 
hello*
$ sudo chroot chroot_test /hello
Hello, World

これがうまくいくのはなぜですか?プログラムが静的にリンクされているため、依存hello関係はありません。

$ file chroot_test/hello 
chroot_test/hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

基本的にどんなスキルを使ってもファイルは必要「サンドボックス」を入力することは、アプリケーションを実行するために必要な最小限の作業です。したがって、動的にリンクされたプログラムはlibc.so待つ必要があるかもしれませんld.so

単純なbash環境では、より多くのファイルが必要になる場合があります。

$ find chroot-bash -type f
chroot-bash/lib64/libdl.so.2
chroot-bash/lib64/ld-linux-x86-64.so.2
chroot-bash/lib64/libc.so.6
chroot-bash/lib64/libtinfo.so.5
chroot-bash/bin/bash

私たちはできませんするその中には多くのものがあります(例えば、コマンドはありませんが、ls実行中のシェルです)bash

$ sudo chroot chroot-bash /bin/bash
bash-4.2# pwd
/
bash-4.2# ls
bash: ls: command not found
bash-4.2# echo *
bin lib64

これらのファイルは次のとおりです。コピーオリジナルはオリジナルではありません。できるバインドマウント)。オペレーティングシステムは公開されません。

chrootdockerまたは...を使用しても、lxc同じファイルセットを含める必要があります。

小さなドッカーコンテナの例

今この点を参考にしてください。返品オペレーティングシステム自体も同様です。あなたyum installまたはapt-get installパッケージがライブラリを含むいくつかの依存関係をインポートすることができます!あなたのオペレーティングシステムにはすべてがありません!それだけ大きい人々が使いやすくするための基本的な項目のセットです。

関連情報