首页/系统/信创系统运维速查/sudoers 配置与语法检查
安全加固65 条

sudoers 配置与语法检查

提权授权集中在 /etc/sudoers 与 /etc/sudoers.d/:用 visudo 编辑并做语法检查,按最小权限与命令粒度授权,避免 ALL 授权扩散。

信创系统运维速查系统更新于 2026-10-13

sudoers 配置的要点

提权授权集中在主配置文件与其包含目录下的片段里。授权的基本格式是「谁 在哪些主机上 以哪个身份 可以执行哪些命令」,把范围收窄到具体命令是最小权限的落地方式。配置的关键纪律有两条:一定用专门的编辑工具,它会在保存时做语法检查;命令要写完整绝对路径,只写命令名会留下被路径劫持的风险。语法写错的代价很直接——提权整体不可用,连修复都要另找通道。

基本信息

主配置/etc/sudoers
片段目录/etc/sudoers.d/ 下按用途分文件
编辑工具专用编辑命令,退出时自动做语法检查
语法检查可单独执行全量检查模式
授权粒度按用户或用户组,按命令或命令集合
免密选项标签形式加在命令前,谨慎使用

典型使用场景

  • 运维授权:允许运维组重启与查看指定服务,而不是开放全部命令
  • 免密自动化:发布脚本需要提权执行固定命令时按命令粒度放行
  • 审计要求:授权范围可查可证,限制到具体命令便于合规检查
  • 临时授权:通过独立片段下发,任务结束删除片段即可回收
  • 排障定位:确认某个账号为什么不能执行提权命令
  • 集中管理:把授权拆成多个片段文件,避免主文件频繁变更

配置流程

配置流程
visudo                          # 编辑主文件,退出时自动语法检查
visudo -f /etc/sudoers.d/ops    # 编辑独立片段
# 片段示例:允许运维组管理指定服务
%ops ALL=(root) /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
visudo -c                       # 全量语法检查,改完必做
sudo -l -U opsuser              # 查看某个账号最终可执行的提权命令

授权字段读法

位置含义写法建议
第一个字段被授权对象用户或用户组,组名通常带前缀
第二个字段生效主机范围单机环境用通配写法即可
第三个字段以哪个身份执行按需指定,避免无条件最高权限
第四个字段可执行命令写完整路径,多条用逗号分隔
免密标签执行时是否校验口令仅对固定自动化命令使用
不要用重定向把授权文本直接追加到配置文件里:这样既绕过了语法检查,也容易把权限与属主改坏。统一通过专用编辑工具或片段目录下发,并在每次变更后执行语法检查,同时保留一个可用于修复的独立管理通道。
授权命令时写完整路径的原因很实在:如果只写命令名,被授权者可以在自己的可执行路径里放一个同名程序,间接获得以最高权限运行任意代码的能力。同理,带有通配符的宽泛授权也要尽量避免。

易错点

  • 用重定向直接拼接授权文本,绕过语法检查,一次错误就让提权整体不可用
  • 把授权范围放开到全部命令,最小权限形同虚设,一旦该账号失陷影响面等同最高权限
  • 命令不写完整路径,存在同名程序被优先执行的劫持风险
  • 变更后不做全量语法检查也不验证账号权限,问题要到真正需要提权时才暴露

数据来源与参考

  • man 5 sudoers
  • man 8 visudo
  • sudo 官方文档(sudoers 手册)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌