バイナリに追加のアクセス許可を与えるためにsetcap
を使用すると、ストレージまたはメモリのどこかに新しいアクセス許可が書き込まれ、どこに保存されますか?
lsof
をそのまま使用しても、プロセスがすぐに消えてしまうため機能しません。
setfacl
によって設定されるアクセス制御リストやsetcap
によって設定される機能フラグなどの拡張権限は、従来の権限とchmod
によって設定されるset [ug] idフラグと同じ場所に保存されます:ファイルのiノード内。
(それらは実際にはディスク上の別のブロックに格納されている可能性があります。これは、iノードのサイズが固定されているため、従来のアクセス許可ビットには十分ですが、無制限の拡張アクセス許可には対応していません。しかし、それが必要になるのはまれなケースだけです。 setcap
でディスク領域が不足する可能性があることに注意してください。ただし、重複排除を使用するシステムでは、chmod
でもディスク領域が不足する可能性があります!)
GNU lsはファイルのsetcap属性を表示しません。 getcap
で表示できます。 _getfattr -d -m -
_ ;を使用して、すべての拡張属性をリストできます。 setcap属性は_security.capability
_と呼ばれ、getcap
がデコードするバイナリ形式でエンコードされます。
setcapは、ファイルシステム拡張属性に格納されているファイル機能を設定します。これらは man 7 capabilities
で説明されています:
ファイル機能セットは、security.capabilityという名前の拡張属性(setxattr(2)を参照)に格納されます。
/proc/PID/status
のCapInh/CapPrm/CapEffフィールドを調べることで、実行中のプロセスの機能を検査できます。機能がプロセスに適用される方法の説明については、「setcapコマンドで機能を設定する方法?」に対する私の回答を参照してください。幹部。