以下のシナリオのサンプルLinuxシェルスクリプトが必要です。
対話型セッション中:
su user1
Password: <Type password>
私がすることは、パスワードをいくつかのファイル(たとえば~/pwd.txt
)に保存することです。そのスクリプトを実行するときは、ターゲットユーザーのパスワードをファイルから読み取って自動的に渡すシェルスクリプトが必要ですsu
。その後、ターゲットユーザーに切り替えます。プロンプトを表示する必要はありません。すべてがバックグラウンドで処理され、新しいユーザーへの移行が直接表示される場合は問題ありません。
助けてください!
ありがとうございます!
ベストアンサー1
生のパスワードをファイルに保存することは安全ではありませんが、少なくともこれはあなたの質問に答えるでしょう。
sudoerでNOPASSWDを使用する
sudoersに以下のエントリを追加してください。
<your_user> ALL=NOPASSWD: /bin/su - user1
#Then simply run
sudo -S su - user1
sudoers なし:非対話型シェルに便利です。
su - user1 -c "" < ~/pwd.txt &>/dev/null
< ~/pwd.txt
~/pwd.txt に保存されたパスワードを su コマンドにリダイレクトします。
&>/dev/null
stdoutとsterrの両方を> / dev / nullにリダイレクトします。
##より良い##:
使用できるGPGパスワードを暗号化するツール:
# Encrypt your password with choosing a passphrase :
gpg -c ~/pwd.txt
# Remove your raw password file :
rm -f ~/pwd.txt.gpg
これでsuを試してみると、上記の内容を使って復号化できます。パスワード:
su - user1 -c "" <<< "$(gpg -q -d ~/pwd.txt.gpg 2>/dev/null)" &>/dev/null