如何在一行命令中将密码应用到sudo并执行su root?

我创build了一个名为samX的用户,具有root权限(在visudo附加了“samX ALL =(ALL:ALL)ALL”)。

我试图将密码应用到sudo ,然后su root并在一行命令中依次执行whoami 。 我目前的命令有点如下,但它抱怨错误: sudo:su root; whoami:命令未find

 echo 'CbEYKFKt' | sudo -S 'su root; whoami' 

其中“CbEYKFKt”是用户samX的密码。

有没有解决这个问题? 非常感谢。

Solutions Collecting From Web of "如何在一行命令中将密码应用到sudo并执行su root?"

你真的应该添加一行到你的sudoers文件,如

 samX ALL=(ALL:ALL) NOPASSWD: /sbin/su 

而不是将密码保存在bash历史记录或任何其他文件中。 这样就没有必要输入密码了。

如果你想执行一个不同的命令,添加。

 echo 'CbEYKFKt' | sudo -S su -c whoami 

应该工作 – -c为su指定一个命令,而在你的例子中,你似乎正在运行一个命令“root” whoami'不存在 – 没有任何东西可以把它分成两个单独的命令。

不要把所有的命令放在一行中,你可以正常编写代码并将其分成几行:

 #!/bin/bash echo "CbEYKFKt" | sudo -S echo && sudo -s <<EOF #put your code here #All codes will be executed as sudo EOF 

注意:像这样传递密码是一个坏主意。

这应该工作。

 echo CbEYKFKt | sudo -S; whoami