是否有单行命令来执行`su`?

alv*_*vas 17 password su username

我可以做一个susu <username>它会询问我的密码。是否有密码参数以便su我不会被提示输入密码?

例如 su <username> -p <password>

Bri*_*ian 14

如果你想编写一个以不同用户身份运行的脚本,这样的工作是可行的,尽管它会输出没有换行符的单词“password”到标准输出

su - username <<!
enterpasswordhere
enter commands to run as the new user
!
Run Code Online (Sandbox Code Playgroud)

如果您有一个名为 fred 且密码为 1234 的用户,并且想要获取 fred 主目录的 ls 作为 fred,而没有显示密码字符串,则它看起来像

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Run Code Online (Sandbox Code Playgroud)

  • 获取错误:`su:必须从终端运行`。 (16认同)
  • 嗯,'标准输入必须是一个 tty' (2认同)

Way*_*Yux 6

我相信,没有,这也不是一个好主意。原因如下:
如果您在类似 的命令中编写密码su <username> -p <password>,它将以纯文本形式存储在您的 bash 历史记录中。这当然是一个巨大的安全问题。

如果您需要以自动方式使用su(或sudo)运行命令,请编写一个包含没有su或的命令的 shellscriptsudo并运行su <username> script.sh

  • `su root script` 仍然需要输入密码。 (3认同)
  • 你可以尝试类似的东西:`echo &lt;passwd&gt; | sudo -S &lt;command-line&gt;`。虽然它不安全,但它有效。 (2认同)

小智 -4

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