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

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

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

su fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"

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

echo Password | su -S fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"

但后来我得到这个输出:

su: must be run from a terminal

我该如何让它发挥作用?

答案1

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

例子。

/etc/sudoers.d/mycmd:

theuser ALL=(fgbs) NOPASSWD: cp fbgs.jar /home/fbgs/server/plugins

my-build-script.sh:

#!/bin/sh
/usr/bin/sudo -H -u fbgs cp fbgs.jar /home/fbgs/server/plugins

相关内容