問題タブ [linux-capabilities]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1195 参照

linux - cap_setuid 機能が設定されたアプリから書き込むために uid_map を開くことができません

user_namespaces(7)の例をいじっていると、奇妙な動作に遭遇しました。

アプリケーションの機能

アプリケーションuser-ns-exは CLONE_NEWUSER を指定して clone(2) を呼び出し、新しいユーザー名前空間に新しいプロセスを作成します。親プロセスはマップ ( 0 1000 1) を /proc//uid_map ファイルに書き込み、(パイプを介して) 処理を続行できることを子プロセスに伝えます。次に、子プロセスが実行しますbash

ここにソースコードをコピーしました。

問題

機能を設定しないか、すべてを設定すると、アプリケーションは書き込み用に /proc//uid_map を開きます。

set_capuid、set_capgid、およびオプションで cap_sys_admin のみを設定すると、open(2) の呼び出しが失敗します。

上限を設定:

実行してみてください:

そして今、成功したケース:

機能なし:

正常に実行されます:

私はマンページで理由を見つけようとしており、さまざまな機能で遊んでいますが、現時点ではうまくいきません。私を最も困惑させているのは、アプリケーションがより少ない機能で実行され、より多くの機能で実行されないことです。

誰かが私を助けて問題を明確にすることができますか?