我创建了一个名为 samX 且具有 root 权限的用户(在
visudo
中附加了“samX ALL=(ALL:ALL) ALL”)。
我正在尝试将密码应用于
sudo
,然后应用于su root
并在一行命令中依次执行whoami
。我当前的命令有点如下,但它抱怨错误: sudo: su root; whoami:找不到命令
echo 'CbEYKFKt' | sudo -S 'su root; whoami'
其中‘CbEYKFKt’是用户samX的密码。
有办法解决这个问题吗?非常感谢。
echo 'CbEYKFKt' | sudo -S su -c whoami
应该可以工作 -
-c
指定了 su 的命令,而在您的示例中,您似乎正在运行命令 'root; whoami' 不存在 - 没有 shell 将其分解为两个单独的命令。
您确实应该在 sudoers 文件中添加一行,例如
samX ALL=(ALL:ALL) NOPASSWD: /sbin/su
而不是将密码保存在 bash 历史记录或任何其他文件中。这样就根本不需要输入密码了。
如果您想执行不同的命令,请添加该命令。
当您通过 putty 或 moba 登录到存储了非 root 帐户登录凭据的 shell 会话时,只需添加此命令,以便在通过 putty 或 moba 登录时执行,它会立即将您的访问权限切换到 root。
echo "PASSWORD" | sudo -S su - && sudo su
您可以正常编写代码并将其分成几行,而不是将所有命令放在一行中:
#!/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
感谢萨拉特·钱德拉。
这应该有效。
echo CbEYKFKt | sudo -S; whoami