为什么 sudo -i 不尊重 sudoers 文件

为什么 sudo -i 不尊重 sudoers 文件

为了确保设置了正确的 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”。

相关内容