无法在脚本中将密码传递给 su

Bra*_*one 6 password su

我正在编写构建脚本。这个脚本最后必须复制一个文件。该文件将放置在另一个用户的主目录中,并且该文件也必须属于该第二个用户。我的第一次尝试是像这样使用 su :

su fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"
Run Code Online (Sandbox Code Playgroud)

这在命令行中有效,但是当我将其放入脚本时,我需要自动输入密码。所以我尝试了以下命令:

echo Password | su -S fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"
Run Code Online (Sandbox Code Playgroud)

但是后来我得到了这个输出:

su: must be run from a terminal
Run Code Online (Sandbox Code Playgroud)

我如何让这个工作?

mdp*_*dpc 7

考虑为这个特定进程设置 sudo 并可能设置特定命令 NOPASSWD: 以便您不必回显明文密码(无论如何都非常糟糕)。此外,还有一些 sudo 标志可以让您需要或不需要 TTY。

例子。

/etc/sudoers.d/mycmd

theuser ALL=(fgbs) NOPASSWD: cp fbgs.jar /home/fbgs/server/plugins
Run Code Online (Sandbox Code Playgroud)

my-build-script.sh

#!/bin/sh
/usr/bin/sudo -H -u fbgs cp fbgs.jar /home/fbgs/server/plugins
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过标准 UNIX 权限来限制该命令。查看 sudo,您可以通过适当的配置限制哪些命令发送给哪些用户。 (3认同)