ファイルの許可されたセットと継承されたセットに異なる機能を設定したいと思います。このような:
sudo setcap cap_fsetid=ei mybinary
sudo setcap cap_kill=ep mybinary
ただし、後者のコマンドは前のコマンドを上書きします。このように機能を管理することは可能ですか?
答え1
getcap
現在設定されている機能のリストを取得するために使用できます。スペースで区切られているので、次のように追加できます。
sudo setcap first_capability=itsvalue executable_fname
sudo setcap "$(getcap executable_fname) newcap=value" executable_fname
(スペースで区切られた機能のリスト:で引用されているman setcap
、で説明されていますman cap_from_text
)
注:設定する前にお問い合わせください。いいえ競合状態からの保護 - 他のプロセスが同時に機能を設定しないようにしてください。
特定の時点のすべての機能を知っている方が簡単です。
sudo setcap "first_capability=itsvalue newcap=value" executable_fname
これに関連して+
機能=
を向上させるために使用できます。ここでは=
読みやすくなりますが、+
状態をより予測可能に構築するいくつかの特別なケースがあります。特に、2 つの異なるタスクに対してリストされた機能には共通のサブセットがあります。たとえば、次の2つは同じではありません。
$ sudo setcap "first=i second=p first,second=e" executable
$ sudo setcap "first=i second=p first,second+e" executable
2番目は次のとおりです。
$ sudo setcap "first=ie second=pe" executable