首页/安全/安全加固速查/sudo 权限清单核查

sudo 权限清单核查

把 sudoers 里的特权授予摊开看:重点抓 NOPASSWD 与全权 ALL 两项,数量与人员清单偏差即整改。

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

把提权授予摊开看

sudoers 决定谁可以用什么方式提权,它是权限管理的核心,也是最容易积累历史垃圾的地方:临时测试加的免密条目、离职人员留下的授权、为了「省事」放开的全权规则,往往在若干年后仍然存在。核查的方法很直接:把全部授予展开成清单,逐条找到授权来源、用途与责任人,找不到的即为整改对象。

基本信息

加固项提权授权清单化
适用平台Linux(sudo,RHEL/CentOS/Debian/Ubuntu)
风险等级高
检查位置/etc/sudoers 与 /etc/sudoers.d/ 下的全部文件
重点项免密条目与全权授予

典型使用场景

  • 基线核查:给出当前提权授权清单与授权人对照表
  • 人员变动:离场处理后核对授权是否已收回
  • 等保访问控制:要求特权操作遵循最小授权原则
  • 事件排查:确认攻击者是否通过既有授权完成提权
  • 配置清理:清理长期无人维护的历史条目

核查命令

核查命令
visudo -c                                        # 先校验语法,任何改动前后必做
grep -rE '^[^#]*NOPASSWD' /etc/sudoers /etc/sudoers.d/ 2>/dev/null
grep -rE '^[^#]*ALL' /etc/sudoers /etc/sudoers.d/ 2>/dev/null | head -20
ls -l /etc/sudoers.d/                            # 目录内文件清单与权限
sudo -l -U alice                                 # 查看某账号实际拥有的授权

两类重点项

条目形态含义处置方式
NOPASSWD免密执行,口令保护与二次确认同时失效每条对应书面授权,无授权即删除
ALL 命令授权允许执行任意命令,效果等同完整提权确认必要性,能收窄就收窄
运行身份写 ALL可以任意用户身份运行命令越宽松越需要理由,优先收窄到具体身份
带通配符的路径命令路径使用通配符可被参数绕过改为精确路径或封装专用脚本
Defaults 全局放宽项影响所有用户的全局设置逐项评估,避免全局降低要求
免密条目等于免确认提权:每一条都要有对应的书面授权与责任人,匿名账号、测试账号、临时排障留下的条目必须清理。核查时要覆盖全部被引用的文件,只扫主文件会漏掉引入目录中的规则。
两个容易踩的细节:一是引入目录中文件名包含点号或特定后缀的文件会被忽略,写了也不生效,判断生效规则应以实际展示的授权清单为准;二是规则支持续行写法,逐行文本搜索可能漏掉跨行的条目,最终结论要以工具展开的结果为参考。

台账化之后怎么维护

把授权整理成台账:账号或组、可执行的命令范围、运行身份、是否需要口令、授权来源、复核日期。台账按季度更新,人员变动时同步调整,新增授权走审批并写进台账。这样核查从「翻配置文件」变成「比对台账与实际清单」,效率与可追溯性都更高。

易错点

  • 只扫主文件漏掉引入目录:多数自定义授权写在引入目录里,漏扫会得出「授权很少」的错误结论
  • 改动 sudoers 不用专用编辑方式:直接写入可能引入语法错误,导致提权功能整体不可用
  • 忽略通配符路径:这类授权可被参数绕过,实际权限比看起来大得多
  • 只看免密条目不看全权授予:两者都是完整提权路径,只查一种会漏掉一半风险
  • 核查后不留台账:授权状态随时间漂移,没有可比的基准就只能反复从零排查

数据来源与参考

  • CIS Linux Benchmark:sudo 配置
  • 等保 2.0:访问控制

相关工具

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