linux进程能力管理

安装能力查看工具集

yum install libcap-ng-utils

主要包含以下工具

[root@thatsit ~]# rpm -ql libcap-ng-utils|grep bin
/usr/bin/captest
/usr/bin/filecap
/usr/bin/netcap
/usr/bin/pscap
[root@thatsit ~]#

工具使用

查看某个进程的capabilities

[root@thatsit ~]# pscap |grep 36010
35660 36010 root        java              chown, dac_override, fowner, fsetid, kill, setgid, setuid, setpcap, net_bind_service, net_raw, sys_chroot, mknod, audit_write, setfcap
[root@thatsit ~]#

相关链接

http://dockone.io/article/243

文章摘抄

调整能力

在前面的文章中,我介绍了基于Linux功能的容器分离。

借助Linux功能,你可以分离根用户权限,形成更小的特权群。目前,在默认情况下,Docker容器只拥有以下功能。

CHOWN, DAC_OVERRIDE, FSETID, FOWNER, MKNOD, NET_RAW,
SETGID, SETUID, SETFCAP, SETPCAP, NET_BIND_SERVICE,
SYS_CHROOT, KILL, AUDIT_WRITE

在某些情况下,你可能要调整此列表,例如,如果你正在构建一个运行ntpd或crony的容器,那么需要能够修改主机的系统时间。由于需要CAP_SYS_TIME,该容器将无法运行。在Docker的旧版本中,容器必须在--privileged模式下运行,该模式关闭了所有的安全策略。

在Docker1.3版本中添加了--cap-add--cap-drop。现在为了运行ntpd容器,你可以只需运行:

docker run -d --cap-add SYS_TIME ntpd

其中只将SYS_TIME功能添加到了你的容器中。

另如,如果你的容器没有更改UID/GID的任何进程,你可以从容器中删除这些功能,使其更加安全。

docker run --cap-drop SETUID --cap-drop SETGID --cap-drop FOWNER fedora /bin/sh
# pscap | grep 2912
5417 2912 root sh chown, dac_override, fsetid, kill, setpcap, net_bind_service, net_raw, sys_chroot, mknod, audit_write, setfcap

或者你可以删除所有的功能后,再进行一一添加。

docker run --cap-drop ALL --cap-add SYS_TIME ntpd /bin/sh
# pscap | grep 2382
5417 2382 root sh sys_time