スクリプトはsuにパスワードを渡すことはできません。

スクリプトはsuにパスワードを渡すことはできません。

ビルドスクリプトを作成しています。スクリプトは最後にファイルをコピーする必要があります。ファイルは他のユーザーのホームディレクトリに保存され、そのファイルは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

関連情報