是否有单行命令可以执行“su”?

是否有单行命令可以执行“su”?

我可以执行suwith 操作su <username>,它会要求我输入密码。是否有密码参数,su这样就不会提示我输入密码?

例如su <username> -p <password>

答案1

如果你想编写一个以不同用户身份运行的脚本,那么类似这样的方法可以工作,尽管它会将单词“password”不带换行符输出到标准输出

su - username <<!
enterpasswordhere
enter commands to run as the new user
!

如果你有一个名为 fred 的用户,其密码为 1234,并且想要以 fred 的身份获取 fred 主目录的 ls,而不显示密码字符串,则它看起来会像这样

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!

答案2

我认为不存在,而且这不是一个好主意。原因如下:
如果您在命令中输入密码su <username> -p <password>,则该密码将以纯文本形式存储在您的 bash 历史记录中。这无疑是一个巨大的安全问题。

如果需要以自动方式运行带有su(或)的命令,请编写一个包含不带或 的命令的 shellscript并运行sudosusudosu <username> script.sh

答案3

这只对我有用

echo "<password>" | sudo -S sleep 1 && sudo su - <username>

原答案在这里

答案4

如果您想以新用户身份执行一些特定命令,请使用以下命令:
sudo -u {username} {command to be executed as the new user}

相关内容