我正在编写构建脚本。这个脚本最后必须复制一个文件。该文件将放置在另一个用户的主目录中,并且该文件也必须属于该第二个用户。我的第一次尝试是像这样使用 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)
我如何让这个工作?
考虑为这个特定进程设置 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)
归档时间: |
|
查看次数: |
10188 次 |
最近记录: |