まず、仮想化とコンテナについて知っています。 「彼はコンテナが欲しい」というのがあなたの頭に浮かんだことだと思います。 (それを否定しないでください!)
ただし、コンテナーはchrootに似ています。コンテナー内でbashを実行する場合は、コンテナー内のどこかにbash実行可能ファイルをコピー/ミラーリングする必要がありますFSおよび必要なすべてのライブラリ(誤解した場合)何か、私を訂正してください)。
私が知りたいのは、busyboxのようなプログラムを現在の名前空間から(元のFSを使用しているので、コピーは必要ありません)開始でき、その後それを分離できるかどうかです(たとえば、Linux FS名前空間)1つの一意のディレクトリにアクセスできるようにします。
どういうわけか、ssh(実際にはsftp)は、sshd実行可能ファイルがchrootされたFSにある必要なしに、このようなことを実行できるようです。しかし、私はまだ自分で何が起こっているのかを理解するスキルが不足しています。
あなたはおそらくコンテナを探していると思います。
またはおそらくそうではありません。結局のところ、Linux名前空間はかなり透過的です。私はしません信じるすでに呼び出されているプロセスの名前空間をunshare
する方法はありますが、呼び出し時に名前空間をunshare
することは間違いありません。効果はほとんどまたはまったくありません。
cd /tmp
echo you >hey
Sudo unshare -m busybox
echo hey >you; cat hey
you
...そして別の端末から...
cd /tmp
cat you
hey
...マウントツリーはデフォルトで親名前空間から共有であり、busybox
のマウント伝播フラグはすべてデフォルトでプライベートに設定されていますが、マウントツリーへの変更が名前空間で何らかの形で行われるまで、違いはありません。これを行う必要はありませんthrough busyboxも。
... busybox
の端末で..
echo "#$$"
#8854
...そして今、他から...
Sudo nsenter -t8854 -m mount -t tmpfs none /tmp
cd .; cat hey
you
...しかし、busybox
の端末から、したがって名前空間から、mount
..に影響を与えました。
cd .; cat hey
cat: hey: no such file or directory
...新しいプライベートtmpfsがnsenter
コマンドの共有/tmp
にマウントされたため...
cd ..
umount tmp
cat tmp/hey
you