首页/安全/安全加固速查/sudo NOPASSWD 授权核查
主机加固基线90 条

sudo NOPASSWD 授权核查

NOPASSWD 让授权用户免密执行特权命令,配置不慎等于把 sudo 变成无门槛提权通道;定期扫出全部 NOPASSWD 条目并逐条确认必要性。

安全加固速查安全更新于 2026-10-13

免密提权意味着什么

sudo 的默认行为是执行前要求输入本人口令,这道确认并不只是防误操作:它能证明操作者知道口令,也在日志里留下一次明确的动作。加上免密选项后这道门被移除,任何能使用该账号的人(包括通过会话劫持或恶意脚本)都能直接执行特权命令。所以免密授权的数量应当极少,且每一条都能对应到明确的授权理由。

基本信息

加固项最小化免密提权授权
适用平台Linux(sudo,RHEL/CentOS/Debian/Ubuntu)
风险等级中
检查位置/etc/sudoers 与引入目录中的免密条目
校验要求任何改动前后都要做语法校验

典型使用场景

  • 基线核查:扫描全部免密条目并逐条确认必要性
  • 自动化评估:脚本任务确实需要免密时,限定到具体命令
  • 人员变动:离场后确认相关免密授权已收回
  • 事件排查:确认攻击者能否借助既有免密授权提权
  • 整改验收:清理完成后复查清单是否收敛

核查命令

核查命令
grep -rn 'NOPASSWD' /etc/sudoers /etc/sudoers.d/ 2>/dev/null
visudo -c                                  # 校验语法,任何修改后必做
sudo -l -U alice                           # 查看某账号实际生效的授权
ls -l /etc/sudoers.d/                      # 引入目录内的文件清单

接入方式对照

接入方式适用场景风险控制
人工免密常规运维使用免密不推荐,改为口令确认或限定命令
脚本免密自动化任务执行固定命令把命令限定到具体路径,避免使用通配符
限定身份免密以特定服务账号身份执行把运行身份收窄到具体账号而非任意用户
带通配符免密为图省事放开某目录下的命令风险最高,实际权限可能远超预期
带通配符的免密授权(例如放开某个目录下的所有可执行文件、或放开通用服务管理命令)实际上等同完整提权:这些命令往往可以间接执行任意程序或写任意文件。发现这类条目要按高危处理,逐条评估后再决定保留形式。
两个执行细节:被引入的目录里,文件名包含点号或以特定后缀结尾的文件会被忽略,写了不生效,判断实际授权应以工具的展开结果为参考;另外规则支持续行写法,逐行搜索可能漏掉跨行的免密条目,扫描只是初筛,最终清单要人工核对。

清理与替代方案

清理的顺序建议是:先去掉长期无人使用的历史条目,再把人工免密改为口令确认,最后针对确实需要免密的任务收窄命令范围与运行身份。替代思路是把复杂操作封装成参数固定的专用脚本,只授权执行该脚本,这样既满足自动化,又把可执行范围锁死在一个入口上。

易错点

  • 只扫主文件:引入目录中的免密条目最容易被遗漏,扫描必须连目录一起做
  • 用文本编辑方式直接改 sudoers:语法错误会导致提权功能整体不可用,必须用校验工具
  • 忽略通配符条目:实际权限可能覆盖任意程序执行,属于高危形态
  • 清理前不确认自动化依赖:删除正在被脚本使用的免密授权会造成任务静默失败
  • 改动后不复查实际授权:以某个账号的实际授权清单收口,比看配置文件更可靠

数据来源与参考

  • sudoers(5) 手册
  • CIS Linux Benchmark:sudo 访问控制章节

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌