スクリプトを作成しています。私はこのスクリプトが次のタスクであるrootとしてログインを実行したいと思います。 (1行を使用しようとしています。)パスワードを自動的に入力するスクリプトはどのように書きますか?
#echo "Hello Admin"
#su root@admin
パスワードを入力せずにbashスクリプトを実行したいと思います。私のパスワードを尋ねるのはなぜですか?
答え1
それは不可能です!そのコマンドは機能しませんが、を使用してsudoユーザーを作成できます。オンラインでsudoユーザーを作成して、パスワードなしでコマンドを実行するALL ALL: NO Password
方法を検索します。sudo
答え2
su
パスワードを使用しないことが目標である場合は、ユーザーがパスワードなしで使用できるように許可を使用することをお勧めしますsudo su
。su
/etc/sudoers
[username] ALL=(ALL) NOPASSWD: /bin/su
または
[username] ALL=(ALL) NOPASSWD: ALL
ユーザーはすでにルートアクセスを介して必要なすべての操作を実行できるためです。スクリプトでプレーンテキストのパスワードを渡すよりも利点は、root
パスワードが漏洩しないことです。スクリプトを削除した後でもパスワードを読むことができることに注意してください。
編集:以下の解決策は最終的には機能しません。コマンドとして処理し、実行後に終了しますsu
。ほとんどのコマンドで動作しますが、それを使用している場合は、パスワードを要求しない限り、タイムスタンプはまだ最新であるため、パスワードがまだ残っていることに注意してください。まず、パスワードクエリを強制するために使用できます。 。しかし、で使用する方が良いです。stdin
echo 'passwd'|sudo -S [command]
su
stdin
sudo
sudo -k
sudo -k && echo 'passwd'|sudo -S [cmd]
NOPASSWD
/etc/sudoers
NOPASSWD:
編集:また、sudo -S
読み取りsudo
パスワードを使用しstdin
、代わりに同様のものを使用することもできますecho [password]|sudo -S su
。sudo
ユーザーパスワードを取得し、上記のように/bin/su
実行権限が必要です。ALL
すべてのコマンドと同様に、予想されるパスワードは「非」sudo
ユーザーのパスワードです。root