setcap
バイナリに追加の許可を使用する場合は、ストレージまたはメモリのどこかに新しい権限を書き込む必要があります。どこに保存されますか?
そのまま使用すると、lsof
プロセスが早く消えてしまうため、機能しません。
答え1
拡張権限(例::で設定されたアクセス制御リストsetfacl
と:で設定された機能フラグ)は、:setcap
で設定された既存の権限とset [ug] idフラグと同様に、chmod
ファイルのinode内の同じ場所に保存されます。
setcap
(inodeは既存の権限ビットを受け入れるための固定サイズを持っていますが、潜在的に無制限の拡張権限ではないため、実際にはディスクの別々のブロックに格納できますが、これはまれな場合にのみ重要です。増やすがchmod
重複排除を使用するシステムでは、すべてのディスク領域を使用できます!)
GNU ls はファイルの setcap 属性を表示しません。次のコマンドを使用して表示できます。getcap
。すべての拡張属性を一覧表示できます。getfattr -d -m -
; setcap属性は、security.capability
バイナリ形式でエンコードおよびgetcap
デコードできます。
答え2
setcap は、ファイルシステム拡張属性に保存されたファイル機能を設定します。これらの説明はman 7 capabilities
:
ファイル能力セットは、security.capabilityという名前の拡張属性に保存されます(setxattr(2)を参照)。
以下を使用して、実行中のプロセスの機能を確認できます。CapInh/CapPrm/CapEffフィールドは/proc/PID/status
。私の答えを見る」setcapコマンドを使用して機能を設定するには?この機能を実行プロセスに適用する方法を学びます。