如果我尝试使用 command 切换到用户sudo su - kshitiz。它工作正常,无需输入密码即可切换。
但是,如果我尝试以该用户身份运行脚本,它会要求我输入密码。
sudo -u kshitiz bash << EOF
> cat /home/ri/secret.txt
> EOF
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
更新:
User ksh may run the following commands on this host:
(root) NOPASSWD: /bin/su - kshitiz
Run Code Online (Sandbox Code Playgroud)
正如您所确定的,sudo设置为 only allow sudo su - kshitiz,因此您的第二个命令肯定会失败。
在任何情况下,您都不会经历相同的用户转换。
sudo su - kshitiz
Run Code Online (Sandbox Code Playgroud)
运行su - kshitiz为root; 如果你能sudo来root,没有密码,这将不会要求在所有的密码,因为su -如root不要求输入密码修改用户。
sudo -u kshitiz
Run Code Online (Sandbox Code Playgroud)
要求直接sudo切换到kshitiz,如果你不想它要求输入密码,这需要它自己的配置。
如果允许用户运行任何东西,
sudo su - kshitiz -c bash ...
Run Code Online (Sandbox Code Playgroud)
会工作。您还可以配置sudo为允许
sudo -u kshitiz ...
Run Code Online (Sandbox Code Playgroud)
没有密码。