setcapを使用する場合、権限はどこに保存されますか?


11

を使用setcapしてバイナリに追加のアクセス許可を与えると、新しいアクセス許可がどこか、ストレージまたはメモリに書き込まれ、どこに格納されますか?

lsofプロセスがすぐに消えてしまうため、現状のままでは機能しません。


別のプロセスを使用してください。のコピーを作成し、/usr/bin/sleepこのコピーに機能を付与します。
Hauke Laging 2017

回答:


9

によって設定されるアクセス制御リストsetfaclや機能フラグによって設定される拡張アクセス許可setcapは、従来のアクセス許可やchmodファイルのiノード内の:によって設定されるset [ug] idフラグと同じ場所に保存されます。

(それらは実際にはディスク上の別のブロックに格納されている可能性があります。これは、iノードのサイズが固定されているため、従来のアクセス許可ビットの余地はありますが、無制限の拡張アクセス許可の余地はないためです。setcapディスク領域が不足する可能性があることに注意してください。ただしchmod、重複排除を使用するシステムでは、ディスク領域が不足する可能性もあります!)

GNU lsはファイルのsetcap属性を表示しません。で表示できますgetcap。ですべての拡張属性をリストできますgetfattr -d -m -。setcap属性が呼び出されsecurity.capabilitygetcapデコードされるバイナリ形式でエンコードされます。


4

setcapは、ファイルシステム拡張属性に格納されるファイル機能を設定します。これらはで説明されていman 7 capabilitiesます:

ファイル機能セットは、security.capabilityという名前の拡張属性(setxattr(2)を参照)に格納されます。

CapInh / CapPrm / CapEffフィールドを調べることにより、実行中のプロセスの機能を検査できます/proc/PID/status。execでのプロセスに機能がどのように適用されるかについては、「setcapコマンドで機能を設定する方法」に対する私の回答を参照してください。


capsh --decode =は、人間が読み取れるデータを取得するのに便利です。
Zulgrib 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.