Ubuntu 24.04中NOPASSWD sudo配置失效问题求助
Ubuntu 24.04中NOPASSWD sudo配置失效问题求助
Hey,我之前也碰到过类似的情况,给你几个实用的排查方向,你可以逐一试试:
- 先检查sudoers文件语法是否正确:直接编辑/etc/sudoers很容易不小心弄出语法错误,一旦有错误,sudo就会忽略你的配置。你可以用
visudo -c命令来检查文件语法,这个命令会帮你验证sudoers文件的合法性,不会直接修改文件,很安全。 - 换个方式配置NOPASSWD规则:尽量不要直接在/etc/sudoers主文件里添加规则,而是在
/etc/sudoers.d/目录下新建一个文件(比如99-nopasswd),把username ALL=(ALL) NOPASSWD: ALL写进去。Ubuntu 24.04对sudoers.d目录下的文件权限要求很严格,要确保文件权限是0440,所有者是root:root,不然sudo不会加载这个文件。 - 排查是否有规则冲突:sudo的规则是按顺序匹配的,如果你的NOPASSWD规则前面有其他要求输入密码的规则,那它可能会被覆盖。你可以用
sudo -l -U username命令查看该用户的所有sudo规则,看看有没有优先级更高的规则要求输入密码,调整规则顺序或者删掉冲突的规则就行。 - 检查是否启用了requiretty:Ubuntu 24.04的sudo默认配置里可能新增了
Defaults requiretty,这个配置会要求sudo必须在终端环境下运行,如果你是在无终端的脚本或容器会话里使用sudo,就会触发这个错误。你可以在sudoers文件里注释掉这条配置(加个#前缀),或者在sudo命令里加上-S参数从标准输入读取(不过既然配置了NOPASSWD,这个应该是备用方案)。
备注:内容来源于stack exchange,提问作者Diarmuid




