Linuxプログラミングインターフェースでは:
許可されたセットは、有効で継承可能なセットに追加できる機能の限られた親セットです。
これは、プロセスの許可セットがプロセスの有効で継承可能なセットの親セットであることを意味しますか?
カーネルは、次の規則を使用してプロセスの新機能を計算します。
P'(許可)=(P(継承可能)&F(継承可能))(F(許可)&cap_bset)
P'(有効) = F(有効)? P'(許容):0
P'(継承可能) = P(継承可能)
上記の規則では、Pは以前の能力セット値を表し
exec()
、P 'は後続の能力セット値を表しexec()
、Fはファイル能力セットを表します。 cap_bset 識別子は、能力境界セットの値を表します。
ルールは、P'(許可)がP'(継承可能)の親セットであることをどのように保証しますか?つまり、P '(許可)はP(継承可能)の親セットになりますか?
「F(有効)?P'(許可):0」とはどういう意味ですか?
P(xxx)
アンセットですかF(xxx)
、それともビットセットですか?後者の場合、そのタスクはビットタスクですか?前者の場合、それらの演算は演算(和集合と交差点)を設定しますか?
ベストアンサー1
「F(有効)?P'(許可):0」とはどういう意味ですか?
この表現は同様の言語predicate ? a : b
に由来しています。C
これは、述語がtrueの場合はelseを意味またはa if predicate else b
評価します。a
b
したがって、P'(effective) = F(effective) ? P'(permitted) : 0
ファイル有効ビットが設定されている場合は、許可されたセットがプロセス有効セットにコピーされ、そうでない場合は有効なセットが空になります。
これは、機能を理解していない従来のアプリケーション(おそらく最近の大半)に必要です。機能認識アプリケーションは、有効な機能なしで起動し、必要に応じて機能を有効なセットにコピーし、完了すると有効なセットを消去します(バグによって発生する可能性のあるダメージを軽減します)。
許可されたセットは、有効で継承可能なセットに追加できる機能の限られた親セットです。
許可された範囲内にある場合にのみ有効または継承されたセットにのみ機能を追加できます。ただし、継承されたセットに機能を追加するには、境界セットにも存在する必要があります。 - この段落はコメントで議論されています(変更される可能性があります)。
P(xxx)とF(xxx)のセットですか、それともビットセットですか?後者の場合、その演算はビット演算ですか?前者の場合、それらの演算は演算(和集合と交差点)を設定しますか?
ほとんどはビットグループですが、F(effective)
シングルビットです。
また、次のように質問しました。
ルールは、P'(許可)がP'(継承可能)の親セットであることをどのように保証しますか?つまり、P '(許可)はP(継承可能)の親セットになりますか?
そうではありません。あなたの声明はスペルが間違っています。
[allow] は、可能な機能の限られた親セットでもあります。次へ追加継承可能なセットとして。
したがって、プロセスは、許可されたセットにない継承セットから機能を継承できます。ただし、その機能がすでに許可されているセットに含まれていない場合、継承されたセットに機能を追加することはできません。