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
これらのファイルは次のとおりです。コピーオリジナルはオリジナルではありません。できるバインドマウント)。オペレーティングシステムは公開されません。
chroot
docker
または...を使用しても、lxc
同じファイルセットを含める必要があります。
今この点を参考にしてください。返品オペレーティングシステム自体も同様です。あなたyum install
またはapt-get install
パッケージがライブラリを含むいくつかの依存関係をインポートすることができます!あなたのオペレーティングシステムにはすべてがありません!それだけ大きい人々が使いやすくするための基本的な項目のセットです。