首页/系统/Linux 运维命令速查/场景:sudo 报错排查(不在 sudoers / command not allowed)

场景:sudo 报错排查(不在 sudoers / command not allowed)

用户执行 sudo 被拒:先分清是「未授权」还是「命令未授权」,再看 policy 来源(主文件/drop-in/LDAP),按审计日志定位。

Linux 运维命令速查系统更新于 2026-10-12
场景sudo: not in sudoers / command not allowed
目标定位策略缺口并最小化补权
工具链sudo -l → visudo -c → journalctl → 授权

第 1 步:看用户被授权了什么

第 1 步:看用户被授权了什么
sudo -l -U zhangsan
sudo -ll -U zhangsan     # 展开全部来源

第 2 步:看失败记录

第 2 步:看失败记录
journalctl -t sudo -n 50
# 或
grep -i 'COMMAND=' /var/log/secure | tail -n 20

第 3 步:校验配置来源

第 3 步:校验配置来源
visudo -c
grep -R zhangsan /etc/sudoers /etc/sudoers.d/ 2>/dev/null

第 4 步:最小化补充授权

第 4 步:最小化补充授权
visudo -f /etc/sudoers.d/zhangsan
# zhangsan ALL=(root) NOPASSWD: /bin/systemctl restart myapp
visudo -c && sudo -l -U zhangsan
sudo 拒绝时退出码 1 并在日志写明用户/命令/来源;看懂日志里的 policy 来源能立刻判断该改哪个文件。

易错点

  • 把命令路径写错(/usr/bin/systemctl vs /bin/systemctl)导致授权不匹配,用 which 核对绝对路径
  • sudo 命令参数通配要谨慎:/bin/systemctl restart myapp* 中的通配符可能放大权限范围

数据来源与参考

  • sudoers(5) man
  • man 8 sudo(日志与退出码)
  • sudo 官方 FAQ

相关工具

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