Jam*_*mes 10 linux capabilities
root@macine:~# getcap ./some_bin
./some_bin =ep
Run Code Online (Sandbox Code Playgroud)
“ep”是什么意思?这个二进制文件的功能是什么?
mos*_*svy 12
Run Code Online (Sandbox Code Playgroud)# getcap ./some_bin ./some_bin =ep
该二进制文件从一开始就具有允许 ( p
) 和有效 ( e
) 的所有功能。
在功能的文本表示中,前导=
相当于all=
。从cap_to_text(3)
联机帮助页:
在主要操作符是
=
并且没有提供能力列表的情况下,动作列表被假定为指所有能力。例如,下面三个子句是等价的(并且表示一个完全空的能力集):all=
;=
;cap_chown,<every-other-capability>=
.
这样的二进制文件可以为所欲为,仅受功能边界集的限制,在典型的桌面系统上,它包括所有内容(否则 setuid 二进制文件su
将无法按预期工作)。
请注意,这只是所使用的文字表述的“疑难杂症” libcap
:在security.capability
该文件中,其中扩展属性getcap
将打印/file/path =ep
,所有有意义位是有效的; 对于空的 security.capability
, /file/path =
(=
后面没有任何内容)将被打印出来。
如果有人仍然不相信,这里有一个小实验:
# cp /bin/ping /tmp/ping # will wipe setuid bits and extented attributes
# su user -c '/tmp/ping localhost'
ping: socket: Operation not permitted
# setcap =ep /tmp/ping
# su user -c '/tmp/ping localhost' # will work because of cap_net_raw
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.073 ms
^C
# setcap = /tmp/ping
# su user -c '/tmp/ping localhost'
ping: socket: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
请注意,空文件功能也不同于已删除的功能 ( capset -r /file/path
),空文件功能将阻止文件执行时继承 Ambient 集。
=ep
文件功能的一个微妙之处在于,如果边界集不是完整的,那么内核将阻止=ep
执行其上的程序(如capabilities(7)
联机帮助页的“安全检查功能哑二进制文件”部分所述)。
它不是一种能力。
它意味着有效设置和允许设置。
这意味着将能力放入允许集(p
)中,并且将所有允许的能力复制到有效集(e
)中。
该e
用于传统程序(在当前时间可能大多数程序),那就是不知道功能的程序,因此无法将其-自我复制能力,从允许到有效的。
至于为什么有什么看起来像和空集(正如@mosvy 所指出的),图书馆的作者把所有的都与没有混淆(无穷大和零是两个最容易混淆的数字)。
归档时间: |
|
查看次数: |
5122 次 |
最近记录: |