機能のマンページはかなり長く、いくつかのことを完全には理解していません。
たとえば、CAP_NET_RAW にアクセスできるかどうかを決定する関数はどのように見えるでしょうか?
入力:
- a = 実効 uid は 0
- b = 0 であるいくつかの実際の/保存された/任意の uid があります
- c = CAP_NET_RAW は +e
- d = CAP_NET_RAW は +i
- e = CAP_NET_RAW は +p
- f = CAP_NET_RAW は「境界セット」から除外されます
出力:
- x =
socket
EPERM を取得せずに呼び出すことができるようになりました - y = いくつかのトリッキー (ファイルシステムベース
chmod +s
またはsetcap
アクセス昇格、外部ヘルパーへの接続を含まない) の後、たとえば、capsetp
最終的に raw ソケットを開くことができるようになります。
私が現在理解しているように、それは次のようなものです:
- x = !f && (a || c)
- y = !f && (b || a || c || e)
実際にはどうですか?