Bindfsとchrootを使用すると、特別な問題 (おそらくバグ) が発生します。chroot監獄内で実行できるように、nodejsとそのすべての依存関係を含むサンプルサンドボックスディレクトリを作成しました。
さて、私は一時ディレクトリを作成し、その中にサンプル サンドボックスから次のディレクトリをマウントします。
- 置き場
- 開発者
- 等
- 含む
- ライブラリ
- lib64
- libexec
- ユーザー
ディレクトリをマウントするには、次のコマンド テンプレートを使用してbindfsを使用します
bindfs -u nobody -g nobody -p a-w:a+rx --chown-ignore --chgrp--ignore --chmod-ignore :sample-sandbox/:dir :new-sandbox/:dir
そのため、上記のディレクトリに移動してcd :new-sandbox
次のコマンドを実行します (65534 は nobody の uid です)。
chroot --userspec=65534 . node
次のエラー応答が表示されます
chroot: failed to run command `node': Permission denied
を実行するchroot . node
と、必要に応じてノード コンソールが表示されます。おもしろいのはls
、ディレクトリ内で実行すると、ファイルとフォルダーがユーザーによって所有されていることを示す次の応答が得られることですnobody
(bindfs コマンドで宣言したように)。
total 32
dr-xr-xr-x 4 nobody nobody 4096 Apr 15 12:46 bin
dr-xr-xr-x 2 nobody nobody 4096 Apr 10 14:56 dev
dr-xr-xr-x 2 nobody nobody 4096 Apr 15 16:33 etc
dr-xr-xr-x 5 nobody nobody 4096 Apr 12 02:21 include
dr-xr-xr-x 9 nobody nobody 4096 Apr 12 02:21 lib
dr-xr-xr-x 4 nobody nobody 4096 Apr 12 02:22 lib64
dr-xr-xr-x 3 nobody nobody 4096 Apr 12 02:22 libexec
dr-xr-xr-x 6 nobody nobody 4096 Apr 12 02:22 usr
bindfs でマウントされたフォルダではなく、元のフォルダを持つプロトタイプ サンドボックス内で同じことをしようとすると、ユーザー nobody として実行してもすべて問題なく動作します。
なぜこれが起こるのか、どうすれば解決できるのか分かりますか? どうもありがとうございました。
PS Linux コンテナや仮想マシン、または私が使用したい技術に代わる他の技術を使用するように私に促さないでください。