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


11

使用setcap以提供额外的权限为二进制应该写入新许可的地方,对存储或在内存中,它在哪儿保存?

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


使用另一个过程。制作一个副本/usr/bin/sleep并为其提供功能。
Hauke Laging '17

Answers:


9

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

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

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


4

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

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

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


capsh --decode =可以很方便地获取人类可读的数据。
Zulgrib
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.