ユーザーを切り替え、必要な情報をスクリプトに背景として表示するLinuxシェルスクリプト
Nov 20 2020
以下のシナリオのサンプルLinuxシェルスクリプトが必要です。
インタラクティブセッション中:
su user1
Password: <Type password>
私がすることは、パスワードをいくつかのファイル(例:)に保存することです~/pwd.txt
。スクリプトを実行すると、ターゲットユーザーのパスワードがファイルから読み取られて自動的に渡さsu
れ、ターゲットユーザーに切り替えるようなシェルスクリプトが必要です。プロンプトを表示する必要はありません。すべてがバックグラウンドで処理され、新しいユーザーへの切り替えが直接表示されれば問題ありません)。
助けてください!
ありがとう!
回答
RedaSalih Nov 20 2020 at 22:56
生のパスワードをファイルに保存することは安全ではありません。しかし、少なくともこれはあなたの質問に対する答えになります。
sudoersでの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 - user1 -c "" <<< "$(gpg -q -d ~/pwd.txt.gpg 2>/dev/null)" &>/dev/null