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

问题描述 投票:0回答:6

我创建了一个名为 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的密码。

有办法解决这个问题吗?非常感谢。

linux bash
6个回答
6
投票
echo 'CbEYKFKt' | sudo -S su -c whoami

应该可以工作 -

-c
指定了 su 的命令,而在您的示例中,您似乎正在运行命令 'root; whoami' 不存在 - 没有 shell 将其分解为两个单独的命令。


4
投票

您确实应该在 sudoers 文件中添加一行,例如

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

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

如果您想执行不同的命令,请添加该命令。


2
投票

当您通过 putty 或 moba 登录到存储了非 root 帐户登录凭据的 shell 会话时,只需添加此命令,以便在通过 putty 或 moba 登录时执行,它会立即将您的访问权限切换到 root。

echo "PASSWORD" | sudo -S su - && sudo su


0
投票

您可以正常编写代码并将其分成几行,而不是将所有命令放在一行中:

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

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


0
投票

这对我有用:

echo CbEYKFKt | sudo -S whoami

感谢萨拉特·钱德拉。


-1
投票

这应该有效。

echo CbEYKFKt | sudo -S; whoami
© www.soinside.com 2019 - 2024. All rights reserved.