sudo免密权限配置不生效

27 阅读1分钟

1. 故障现象

用户oneslide已在/etc/sudoers写入免密规则oneslide ALL=(ALL:ALL) NOPASSWD: ALL,执行sudo命令仍要求输入密码。

2. 诊断过程

  1. 执行权限校验命令:sudo -l -U oneslide
  2. 输出存在两条匹配规则:
    (ALL : ALL) ALL
    (ALL : ALL) NOPASSWD: ALL
    
  3. 根因:oneslide归属sudo用户组,配置中%sudo ALL=(ALL:ALL) ALL行位于用户免密行上方;sudo规则遵循从上至下匹配,最后一条生效,原顺序组规则覆盖免密配置。

3. 修复操作

  1. 执行visudo编辑sudoers,调整规则顺序,将用户免密行移至sudo组规则下方:
    %sudo	ALL=(ALL:ALL) ALL
    oneslide ALL=(ALL:ALL) NOPASSWD: ALL
    
  2. 语法校验:visudo -c,无语法报错。
  3. 清空sudo认证缓存:sudo -k

4. 验证结果

  1. 权限查询输出顺序更新,免密规则为最后匹配项:
    User oneslide may run the following commands on oneslide-VMware-Virtual-Platform:
        (ALL : ALL) ALL
        (ALL : ALL) NOPASSWD: ALL
    
  2. 切换oneslide用户执行sudo ls /root,无需输入密码,故障解决。

5. 关键原理

sudo多规则匹配逻辑:同一用户命中多条权限时,文件内靠后的规则优先级更高;用户专属权限配置需放置于用户组通用权限下方,确保免密规则覆盖组默认密码校验规则。

6. 附属排查要点

  1. 检查/etc/sudoers.d/目录,无冲突权限子配置;
  2. 配置文件权限保持440,无权限异常干扰;
  3. 无PAM/SELinux强制密码校验策略。