You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04.6 LTS配置sudoers NOPASSWD后仍需密码启动systemd服务的问题排查

Ubuntu 20.04.6 LTS配置sudoers NOPASSWD后仍需密码启动systemd服务的问题排查

我太懂这种明明配置了规则却不生效的挫败感了!咱们一步步来揪出问题所在:

  • 先检查sudoers规则的顺序
    sudoers是按从上到下的顺序匹配规则的,要是你的NOPASSWD规则写在了默认的%sudo ALL=(ALL:ALL) ALL这类要求密码的规则前面,就会被后面的规则覆盖掉。打开visudo,确保你的两条NOPASSWD规则放在所有组规则(比如%sudo那行)的后面。

  • 核对命令路径是否绝对正确
    你在sudoers里写的是/usr/bin/systemctl,先确认这个路径没错:在终端执行which systemctl,看看输出是不是和你写的完全一致。如果路径不对,sudo根本匹配不到你的规则。

  • 检查sudo配置的语法和额外文件
    用sudo visudo -c命令可以检查所有sudo相关配置文件的语法是否正确,要是有语法错误,规则也会失效。另外,别忘了系统可能会加载/etc/sudoers.d/目录下的文件,这些文件里的规则也可能干扰你的设置,你可以进去看看有没有冲突的规则。

  • 确保执行的命令和规则完全匹配
    你sudoers里写的是完整路径的命令,执行的时候也要严格对应:比如必须敲sudo /usr/bin/systemctl start mc,别简化成sudo systemctl start mc(虽然大部分时候没问题,但万一PATH有变动或者有别名,就会匹配不到规则)。

  • 清除sudo密码缓存试试
    有时候sudo会缓存密码状态,你可以先执行sudo -k清除缓存,然后再重新运行启动服务的命令,看看是不是还会要求输入密码。

如果以上都排查完了,你可以试试把启动和停止服务的规则合并成一行,写在sudoers里:

christian  ALL=NOPASSWD: /usr/bin/systemctl start mc, /usr/bin/systemctl stop mc

记得一定要用visudo编辑sudoers文件,它会帮你检查语法错误,避免不小心把系统搞崩。

备注:内容来源于stack exchange,提问作者Apollo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:09:30