sudo-failed

sudo 失败的定位与修复

现象

执行 sudo 报 user is not in the sudoers file、密码错误、unable to resolve host、command not found,或直接没有任何提示地失败。

快速定位

id
sudo -l
visudo -c
cat /etc/sudoers
ls -l /etc/sudoers.d/
getent hosts "$(hostname)"
journalctl -t sudo --since '10 min ago'

常见根因

  1. 用户不在 sudo 组,或 sudoers 中没有对应规则。
  2. /etc/sudoers 或 /etc/sudoers.d/ 语法错误,sudo 拒绝加载。
  3. 主机名无法解析,sudo 报 unable to resolve host。
  4. secure_path 不包含命令路径,或使用了相对路径。
  5. 需要密码但当前会话无法输入,或 NOPASSWD 配置不匹配。
  6. SELinux/AppArmor 或审计规则拦截。

修复

相关命令