容器权限之capability
1 docker run携带的与权限相关的参数
1.1 docker提供了下面几个参数,用于管理容器的权限:
cap-add: Add Linux capabilities
cap-drop: Drop Linux capabilities
privileged=false: Give extended privileges to this container
device=[]: Allows you to run devices inside the container without the –privileged flag.
1.2 实例:下面的效果与在k8s的yaml文件中添加NET_ADMIN相同
docker run --cap-add=NET_ADMIN -it --rm ubuntu:14.04 /bin/bash
在k8s的pod创建文件中添加:
{
"privileged": false,
"capabilities": {
"add": [
"NET_ADMIN",
"SYS_ADMIN"
]
}
}
1.3 详细介绍capability的英文文档
https://man7.org/linux/man-pages/man7/capabilities.7.html
1.4 与网络相关的几个capabilities介绍
1.5 查看容器内当前支持的CAP
2 下面介绍下笔者使用过的几个capabilities,包括当时所要实现的功能
2.1 cap_net_admin (可在容器内修改网口ip和路由)
2.2 cap_sys_ptrace (可在容器内进行gdb调试进程)
2.3 cap_sys_admin (可在容器内进行mount挂载)
参考:https://blog.csdn.net/liukuan73/article/details/102705963
2.3 cap_sys_time(可在容器内执行chrony进行时间同步)
参考:
https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
https://github.com/torvalds/linux/blob/master/include/uapi/linux/capability.h
https://blog.csdn.net/somyjun/article/details/89565421