capsh --printは実際に何をしますか?

capsh --printは実際に何をしますか?

私が知る限り、Linux機能はプロセス/ファイルベースで定義されています。しかし、 capsh --print を実行すると、ユーザーの能力が表示されます。

それでは、capsh --printは正確に何をするのでしょうか?能力は、ユーザーではなくプロセスでのみ定義されますか?

答え1

capshlibcap提供されている機能とAPIを使用して確認する方法を調べるためのツールです。デバッグに使用できます。いつ何が起こるのかあらゆる種類の質問。

の重要な属性capshは、引数を左から右に厳密に評価することです。したがって、何かが目的の場所にない理由を特定しようとするときは、パラメータを--print挿入してそれを見つけることができます。--print実行中のプロセスの現在の状態を出力するだけですcapsh

機能に関連する機能を備えた一種のスイス軍用ナイフと考えるべきです。ツリーを作成してlibcap使用するquicktest.shライブラリが最新のカーネルなどで動作し続けていることを確認してください。スクリプトには、libcapカーネル関数を使用したさまざまな操作例と予想される結果が含まれています。

これには環境機能はもちろん、非標準カーネル動作モード(別名libcap モデル)。

たとえば、次の 2 つのシーケンスは、カーネルの動作方法によって異なる結果を生成します。

$ sudo capsh --iab=^cap_dac_override --user=$(whoami) --print
$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --print

次の質問に自動的に答えることができます。これは環境を少し改善しますか?このような:

$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --has-a=cap_dac_override && echo yes

また、世界を探索したいならPOSIX.1eドラフト委員会は、次のことを試すことができると想像しています。

$ sudo capsh --mode=PURE1E --user=$(whoami) --

答え2

単純な。これはユーザー機能ではありません。これはそれ自体の能力です。だから親から受け継いだのです。

私は(数年前)私たちが議論し、capshそれが何のためであるかを調べようとしたことを思い出します。私たちはそれがほとんど役に立たないと考え、議論を通して周辺関数(継承され有効)の発明が行われました。capsh環境機能が存在したため、これを試していませんでした。これは、一連のsudo機能(例:)を作成する場合にのみ必要ですcapsh。あるいは、時にはより専門的な包装が可能です。

関連情報