为什么我可以切换到用户,但不能像它那样运行脚本

Ksh*_*rma 2 bash su sudo

如果我尝试使用 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)

Ste*_*itt 6

正如您所确定的,sudo设置为 only allow sudo su - kshitiz,因此您的第二个命令肯定会失败。

在任何情况下,您都不会经历相同的用户转换。

sudo su - kshitiz
Run Code Online (Sandbox Code Playgroud)

运行su - kshitizroot; 如果你能sudoroot,没有密码,这将不会要求在所有的密码,因为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)

没有密码。