首页/云/Docker 容器速查/容器内 sudo 的检查与清理
资源与安全50 条

容器内 sudo 的检查与清理

容器内装 sudo 把提权面搬进了镜像:任何能执行 sudo 的应用漏洞都可能放大为容器 root;除非场景明确,基础镜像里就不该带。

Docker 容器速查云更新于 2026-10-13

容器内的提权工具

容器内装 sudo 把提权面搬进了镜像:任何能执行 sudo 的应用漏洞都可能放大成容器内最高权限。除非场景明确,基础镜像里就不应该带它。

基本信息

检查方式用 command -v 核对,或看镜像历史与包清单
影响提权链更短、审计噪声更多
修复方向构建期移除,改用固定的非特权用户运行
适用环境所有容器镜像
配套措施镜像扫描把提权工具列为检查项

典型使用场景

  • 审查基础镜像里是否带有提权工具
  • 排查容器内应用可以调用哪些提权手段
  • 整理镜像瘦身清单时定位多余组件
  • 应对合规检查中对提权路径的要求
  • 事故复盘:确认容器内的权限放大路径

检查与清理

检查与清理
docker run --rm --entrypoint sh myapp:1.4 -c 'command -v sudo || echo 无 sudo'
docker history --no-trunc myapp:1.4 | grep -i sudo | head -5   # 看构建历史
# 构建期清理:按发行版卸载提权工具并切换到非特权用户

关注点与风险表现

关注点正常表现风险表现
工具是否存在未安装镜像内可直接调用
提权配置无免密配置免密配置叠加提权位
运行用户固定非特权用户以最高权限运行
审计记录无提权事件频繁提权记录
多阶段构建的最终镜像只保留运行时依赖,这类工具在收尾阶段自然会被剥离。
免密配置叠加提权能力时风险明显放大,扫描清单里要把提权工具设为检查项。
按发行版用包管理器清理并验证依赖,直接删二进制而不走包管理会留下不一致状态。
应用以非特权用户运行时,即使被攻破影响面也明显更小,这是最有效的收敛手段。
构建历史里出现提权工具不代表当前镜像仍有,核对时要看最终镜像的实际内容。
把镜像内用户改成非特权用户属于运行方式变更,改完要回归验证应用的读写路径是否仍然可用。

易错点

  • 免密配置叠加提权能力时风险明显放大,扫描清单要把提权工具列为检查项
  • 用删二进制的方式清理而不走包管理器,会留下不一致的依赖状态
  • 只看构建历史判断,忽略最终镜像的实际内容,结论可能不准
  • 改成非特权用户运行后不回归验证读写路径,应用可能直接启动失败

数据来源与参考

  • Docker 官方文档:Building best practices(docs.docker.com/develop)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌