ビルドスクリプトを作成しています。スクリプトは最後にファイルをコピーする必要があります。ファイルは他のユーザーのホームディレクトリに保存され、そのファイルは2番目のユーザーにも属する必要があります。私の最初の試みは、次のように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を設定することを検討してください。その後、プレーンテキストのパスワードをエコーする必要はありません(とにかくかなり悪いです)。また、TTYを要求または要求しない可能性があるsudoフラグがあります。
はい。
/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