【发布时间】:2018-02-13 23:57:42
【问题描述】:
我从 ping 二进制文件中删除了 setuid 位并添加了cap_net_raw+p,如下所示:
$ chmod 755 /bin/ping
$ setcap cap_net_raw+p /bin/ping
然后我在一个终端运行ping 并从另一个终端检查正在运行的进程的/proc/$PID/status:
$ ps aux | grep ping
user 5468 0.0 0.0 14948 1792 pts/20 S+ 11:14 0:00 ping www.google.com
user 5471 0.0 0.0 14224 896 pts/2 S+ 11:14 0:00 grep --color=auto ping
$ cat /proc/5468/status | grep Cap
CapInh: 0000000000000000
CapPrm: 0000000000002000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
如果ping 当前正在运行,为什么是CapEff: 0000000000000000? cap_net_raw 不应该也在有效集中吗? /proc/$PID/status 不反映线程的当前状态吗?
【问题讨论】:
-
好问题,好答案。干得好!
标签: linux ping linux-capabilities