使用setcap时,权限存储在哪里?

使用setcap时,权限存储在哪里?

使用setcap向二进制文件授予附加权限应该将新权限写入存储或内存中的某个位置,它存储在哪里?

按原样使用lsof是行不通的,因为该过程消失得太快。

答案1

扩展权限(例如由 : 设置的访问控制列表setfacl和由 : 设置的功能标志)setcap存储在与传统权限和由chmod: 设置的 set[ug]id 标志相同的位置,在文件的 inode 中。

(它们实际上可能存储在磁盘上的单独块中,因为 inode 具有固定大小,可以容纳传统权限位,但不能容纳潜在的无限扩展权限。但这仅在极少数情况下才重要,例如必须注意setcap可能会耗尽磁盘空间,但甚至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命令设置功能?”,了解如何将这些功能应用于 exec 的进程。

相关内容