1

Bindfschrootを使用すると、特別な問題 (おそらくバグ) が発生します。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 コンテナや仮想マシン、または私が使用したい技術に代わる他の技術を使用するように私に促さないでください。

4

1 に答える 1

1

には、その作成者に対してのみ権限があることがわかりました:new-sandbox(これは、Python を使用するときに行うことですtempfile.mkdtemp)。

そのため、他のユーザーとグループがそのディレクトリ内で読み取りと実行を行えるようにすることで、問題は解決しました。

于 2013-04-15T15:20:08.720 に答える