首页/安全/漏洞与攻击面速查/sudoers 与 NOPASSWD 提权面核查
主机与服务风险面53 条

sudoers 与 NOPASSWD 提权面核查

sudo 的 NOPASSWD 条目、通配符命令与可写脚本路径,会扩大从普通账号到 root 的路径;sudo -l 可从当前账号视角列出全部被授权命令。

漏洞与攻击面速查安全更新于 2026-10-13

sudo NOPASSWD 风险是什么

sudo 是 Linux 上从普通账号到 root 的主要通道,因此 sudoers 的授权面就是提权面。NOPASSWD 条目本身不是漏洞,问题出在授权粒度过粗:命令含通配符(如允许编辑任意文件)、被授权脚本位于普通用户可写目录、或授权范围随临时需求不断扩散而无回收机制。核查的工具是 sudo -l 与 sudoers 文件的横向比对。

基本信息

配置文件/etc/sudoers 与 /etc/sudoers.d/*
核查命令sudo -l、sudo -ll(列出明细与来源文件)
语法校验visudo -c(修改前后都要执行)
审计sudo 日志接入集中日志,高危命令单独告警

授权面核查

授权面核查
sudo -l                                              # 当前账号被授权的命令
sudo -ll                                             # 更详细的授权与来源
sudo grep -RE 'NOPASSWD|ALL' /etc/sudoers /etc/sudoers.d/ 2>/dev/null
visudo -c                                            # 修改前后均做语法校验,避免 sudo 整体不可用

风险模式与处置

风险模式与处置
1. 命令行含通配符(如 /usr/bin/vi *):可借编辑器逃逸执行命令
2. 授权脚本位于用户可写目录:替换脚本内容即可提权
3. 处置:改为具体命令+参数白名单,脚本目录权限收紧为 root 只读
4. 用别名(Cmnd_Alias)集中管理,避免散落难审
5. 审计:sudo 日志接入集中日志,对高危命令单独告警

典型使用场景

  • 主机上线基线:确认无通配符授权、无用户可写脚本被 NOPASSWD 放行
  • 等保与审计检查:sudo 授权清单是常见核查项
  • 应急排查:失陷主机上检查 sudoers 是否被植入后门条目
  • 权限收敛:把运维临时授权改为具体命令白名单
  • 变更管理:sudoers 修改纳入变更流程与版本记录

典型危险授权

授权写法风险建议
ALL=(ALL) NOPASSWD: ALL等价于免密 root仅限自动化专用账号并严格管控
/usr/bin/vi /path/*编辑器内可执行 shell改为具体文件或换用只读工具
/opt/scripts/*.sh脚本目录若用户可写即可替换目录 root 只读,脚本带校验
/bin/systemctl restart *可重启任意服务限定服务名白名单
visudo 的语法校验是硬性动作:sudoers 语法错误会导致所有 sudo 操作失败,可能直接锁死运维通道;改前保留一个已登录的 root 会话更稳妥。
NOPASSWD 常见于自动化账号与备份脚本,这类账号本身要限制登录来源(如仅允许特定主机密钥),否则等于把免密 root 暴露给拿到该账号的任何人。

易错点

  • 授权脚本路径位于普通用户可写目录,NOPASSWD 直接可被替换利用
  • 命令带通配符(如 vi *)放行,实际等于给了任意命令执行能力
  • 改 sudoers 不用 visudo 校验,语法错误导致 sudo 全面不可用
  • 临时授权不断累积且无人回收,授权清单越拉越长
  • 只看 sudoers 文件不核对实际生效结果,include 目录下的覆盖关系被忽略

数据来源与参考

  • sudo 手册(sudoers 5)
  • CIS Benchmark(Linux sudo 基线)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌