問題タブ [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.
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) の呼び出しが失敗します。
上限を設定:
実行してみてください:
そして今、成功したケース:
機能なし:
正常に実行されます:
私はマンページで理由を見つけようとしており、さまざまな機能で遊んでいますが、現時点ではうまくいきません。私を最も困惑させているのは、アプリケーションがより少ない機能で実行され、より多くの機能で実行されないことです。
誰かが私を助けて問題を明確にすることができますか?