在linux中使用setcap

Jak*_*ake 20 linux ubuntu-11.04

要将cap_net_raw功能添加到(例如/ bin/ping),我们使用以下内容:

#setcap cap_net_raw=ep /bin/ping
Run Code Online (Sandbox Code Playgroud)

ep的含义是什么?为什么需要这里?

cho*_*own 22

这将设置CAP_NET_RAW"有效"(e)和"允许"(p)能力集中的位.这两个集与"可继承"集一起管理流程已经或可以设置的功能.

在这里查看更多:

功能 - Linux手册页

能力集

每个线程都有三个功能集,包含以上功能中的零个或多个:

Effective - 内核用于对线程执行权限检查的功能.

Permitted - 线程可以采用的功能(即,有效和可继承集的限制超集).如果一个线程从其允许的集合中删除一个功能,它就永远不会重新获得该功能(除非exec()是一个set-user-ID-root程序).

inheritable - 在execve(2)中保留的功能.通过fork(2)创建的子级继承其父级功能集的副本.有关exec()期间功能处理的讨论,请参见下文.使用capset(2),线程可以操纵它自己的能力集,或者,如果它具有CAP_SETPCAP能力,则可以操纵另一个进程中的线程.