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

Zul*_*rib 13 setcap capabilities

使用setcap为二进制文件提供额外权限应该将新权限写入某处,存储或内存中,它存储在哪里?

lsof原样使用不起作用,因为该过程消失得太快。

Gil*_*il' 11

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

(它们实际上可能存储在磁盘上的一个单独的块中,因为 inode 具有固定的大小,它有空间容纳传统的权限位,但没有空间用于潜在的无限扩展权限。但这仅在极少数情况下很重要,例如必须小心setcap可能会耗尽磁盘空间。但即使chmod在使用重复数据删除的系统上也可能耗尽磁盘空间!)

GNU ls 不显示文件的 setcap 属性。您可以使用 来显示它们getcap。您可以使用getfattr -d -m -;列出所有扩展属性。setcap 属性被调用security.capability,它以二进制格式编码,getcap为您解码。


seb*_*sth 5

setcap 设置存储在文件系统扩展属性中的文件功能。这些解释在man 7 capabilities

文件功能集存储在名为 security.capability 的扩展属性中(请参阅 setxattr(2))。

您可以通过检查 中的CapInh/CapPrm/CapEff字段来检查正在运行的进程的功能/proc/PID/status。请参阅我对“如何使用 setcap 命令设置功能? ”的回答,了解如何将功能应用于 exec 处理。