GNU/Linux >> Linux の 問題 >  >> Linux

ep 能力とはどういう意味ですか?

# getcap ./some_bin
./some_bin =ep

そのバイナリには、最初から許可された (p) 有効な (e) すべての機能があります。

機能のテキスト表現では、先頭の = all= に相当します .cap_to_text(3) から マンページ:

<ブロック引用>

先頭演算子が = の場合 であり、機能のリストが提供されていない場合、アクション リストは all を参照すると想定されます 能力。たとえば、次の 3 つの句は互いに同等です (完全に空の機能セットを示します):all=; =;cap_chown,<every-other-capability>= .

このようなバイナリは、機能境界セットによってのみ制限され、好きなことを何でも実行できます。これには、典型的なデスクトップ システムではすべてが含まれます (そうでなければ、su のような setuid バイナリ)。 期待どおりに動作しません)。

これは、libpcap で使用されるテキスト表現の「落とし穴」にすぎないことに注意してください。 :security.capabilitygetcap のファイルの拡張属性 /file/path =ep を出力します 、意味のあるすべてのビットが効果的にオン; security.capability/file/path = (= 何も続かない) が代わりに出力されます。

誰かがまだそのすべてについて納得していない場合は、ここに小さな実験があります:

# cp /bin/ping /tmp/ping   # will wipe setuid bits and extented attributes
# su user -c '/tmp/ping localhost'
ping: socket: Operation not permitted
# setcap =ep /tmp/ping
# su user -c '/tmp/ping localhost'  # will work because of cap_net_raw
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.073 ms
^C
# setcap = /tmp/ping
# su user -c '/tmp/ping localhost'
ping: socket: Operation not permitted

能力ではありません。

有効なセットと許可されたセットを意味します。

これは、機能が許可されたセット (p) に入れられることを意味します。 )、許可されたすべての機能が有効なセット (e) にコピーされます。 ).

e レガシー プログラム (おそらく現時点ではほとんどのプログラム) に使用されます。つまり、プログラムは機能を認識していないため、許可された機能から有効な機能に自分自身でコピーすることはできません。

(@mosvy が指摘したように) 空のセットのように見えるものが存在する理由については、ライブラリの作成者はすべてをまったく混同していません (無限とゼロは最も混同されている数の 2 つです)。


Linux
  1. シェルスクリプト行の最後にあるアンパサンドとはどういう意味ですか?

  2. Psの出力にはどういう意味がありますか?

  3. 構造体の変数名の前のドットは何を意味しますか?

  1. Linuxカーネルコードで__initはどういう意味ですか?

  2. opt とは (opt ディレクトリのように) どういう意味ですか?略語ですか?

  3. Linuxコマンドの最後の&はどういう意味ですか?

  1. 構文 |&はシェル言語で何を意味しますか?

  2. ls -l のパーミッションの末尾にある + は何を意味しますか?

  3. Linux でサフィックス .d は何を意味しますか?