为了确保设置了正确的 PATH 环境变量,我正在使用选项sudo -i
,但发现该sudoers
文件没有被尊重。
这是我的设置:
/etc/sudoers
:
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
user ALL=(ALL) ALL
user ALL=NOPASSWD: /usr/local/bin/chef-solo
运行sudo chef-solo -v
不会提示输入密码。运行sudo -i chef-solo -v
将提示输入密码。
答案1
sudo -i
执行你的 shell,而不是命令。它将命令传递给 shell。
答案2
为了使 sudo -i 无需密码即可工作,使用别名 ALL 作为运行命令的规则需要 NOPASSWD 标志。
策略可能禁止将其用于任何可能以 root 身份运行的命令(包括 su)。这在我的环境中曾经是这样的,但现在不再是这样了;更改背后的理由是,对于已经通过身份验证的个人来说,以 root 身份运行命令而不使用密码比依赖服务帐户来执行此操作更可取。
要不使用 su 来切换帐户,请将 NOPASSWD 与非 root 运行用户结合使用,如以下规则所示:
%group ALL=(用户) NOPASSWD: ALL
这样就允许使用“sudo -iu user”和“sudo -u user command and args”。