ユーザーを切り替え、必要な情報をスクリプトに背景として表示する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