本文目录导读:

- Docker 容器配置 Capabilities
- Kubernetes Pod YAML 配置
- Docker Compose 配置
- Podman 容器配置
- 实用脚本示例
- Containerd 配置
- 检查容器 Capabilities
- 常用 Capabilities 列表
- 安全最佳实践
在Shell脚本中配置容器Capabilities,主要取决于你使用的容器运行时(如Docker、Podman、containerd等),以下是几种常见场景的配置方法:
Docker 容器配置 Capabilities
添加/删除 Capabilities
#!/bin/bash # 添加capabilities docker run --cap-add=NET_ADMIN --cap-add=SYS_TIME nginx # 删除所有capabilities后再添加特定的 docker run --cap-drop=ALL --cap-add=NET_RAW nginx # 使用完整的capability列表 docker run \ --cap-add=CHOWN \ --cap-add=DAC_OVERRIDE \ --cap-add=NET_RAW \ --cap-add=SYS_ADMIN \ nginx
脚本中的动态配置
#!/bin/bash
# 定义capabilities列表
CAPS=(
"NET_ADMIN"
"SYS_PTRACE"
"SYS_ADMIN"
)
# 构建参数
CAP_ARGS=""
for cap in "${CAPS[@]}"; do
CAP_ARGS="$CAP_ARGS --cap-add=$cap"
done
# 运行容器
docker run $CAP_ARGS myapp
Kubernetes Pod YAML 配置
在shell脚本中生成配置
#!/bin/bash
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: capability-pod
spec:
containers:
- name: test-container
image: nginx
securityContext:
capabilities:
add: ["NET_ADMIN", "SYS_TIME"]
drop: ["ALL"]
EOF
Docker Compose 配置
# docker-compose.yml
version: '3.8'
services:
app:
image: nginx
cap_add:
- NET_ADMIN
- SYS_PTRACE
cap_drop:
- ALL
在shell脚本中调用:
#!/bin/bash docker-compose up -d
Podman 容器配置
#!/bin/bash # Podman语法与Docker类似 podman run --cap-add=NET_RAW --cap-drop=ALL nginx # 或者使用完整的capabilities podman run --cap-add=ALL --cap-drop=MKNOD nginx
实用脚本示例
带参数运行的脚本
#!/bin/bash
# 用法: ./run_with_caps.sh [--all|--minimal|--custom] [command]
MODE=${1:-"minimal"}
COMMAND=${2:-"bash"}
case $MODE in
"all")
echo "授予所有capabilities"
docker run --cap-add=ALL -it --rm ubuntu:latest $COMMAND
;;
"minimal")
echo "最小capabilities配置"
docker run --cap-drop=ALL --cap-add=NET_RAW --cap-add=CHOWN -it --rm ubuntu:latest $COMMAND
;;
"custom")
echo "自定义capabilities"
docker run \
--cap-add=NET_ADMIN \
--cap-add=SYS_PTRACE \
--cap-add=SYS_ADMIN \
-it --rm ubuntu:latest $COMMAND
;;
*)
echo "未知模式: $MODE"
exit 1
;;
esac
Containerd 配置
#!/bin/bash # 使用ctr命令行工具 ctr run --rm \ --cap-add=NET_ADMIN \ --cap-add=SYS_TIME \ docker.io/library/nginx:latest \ test-container
检查容器 Capabilities
#!/bin/bash # 检查运行中的容器的capabilities docker exec <container_id> cat /proc/1/status | grep CapEff # 或者使用capsh工具(需在容器内安装) docker run --rm ubuntu bash -c "apt-get update && apt-get install -y libcap2-bin && capsh --print"
常用 Capabilities 列表
| Capability | 用途 |
|---|---|
| CHOWN | 修改文件所有者 |
| DAC_OVERRIDE | 忽略文件权限检查 |
| NET_RAW | 使用原始套接字 |
| NET_ADMIN | 网络管理操作 |
| SYS_ADMIN | 系统管理操作 |
| SYS_PTRACE | 跟踪系统调用 |
| SYS_TIME | 设置系统时间 |
| SYS_MODULE | 加载/卸载内核模块 |
安全最佳实践
#!/bin/bash # 推荐的最小权限原则 docker run \ --cap-drop=ALL \ --cap-add=NET_BIND_SERVICE \ --cap-add=CHOWN \ --cap-add=SETUID \ --cap-add=SETGID \ nginx
配置Capabilities时,请遵循最小权限原则,只授予容器运行所需的最小capability集合,不要随意使用--cap-add=ALL(除非必要)。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播