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