su
コマンドにパスワードを渡すことができるスクリプトを作成したいと思います。その理由は、ルートではなくアカウントからルートにログインするプロセスを自動化するためです。セキュリティの基本的な理解を通して、私はこのタスクの危険性を知っています。ファイルからパスワードを読み取ってrootユーザーのパスワードを復号化するには、この情報がまだ必要です。
インタラクションを自動化するためにこのコマンドを使用するという話を聞いたことがありますが、このexpect
コマンドがどのように機能するのか、この場合でも機能するのかはわかりません。使い方に関する情報をexpect
いただきありがとうございます。
sudo
私のユーザーがsudoerリストにないので、これはオプションではありません。
試み - パイプを使用してパスワードを渡すことは、誤ったタイプのために機能しません"su must be used from terminal"
。 - エコーされた内容を使用してパスワードを渡すと、echo
パスワードを入力した後にのみ表示されます。
答え1
「一行スタイル」を行います。
expect -c 'spawn su - ;expect Password:;send "your-password\n";interact'
出力を確認して、su -
パスワードをキャプチャするために使用する正しいフレーズであることを確認してください。ここではLinux翻訳を使用しているため、単語は「Password:」ではなく「Senha:」でなければなりません。
expect -c ''
処置: このコマンドに対して以下を実行してください。spawn su -
: このコマンドを実行expect Password:
パスワードという言葉が何かをすると予想send "your-password\n"
:パスワードを入力してEnterを押します。interact
:コマンドを対話的に準備されたままにします。
答え2
expect
あなたはあなたのために仕事をするために使用することができます。以下をファイルに保存し、実行可能にしてから実行します。
#!/usr/bin/expect
spawn su
expect "Password:"
send "YOUR_PASS\n"
interact
(もちろん正しいパスを指定する必要がありますexpect
。/usr/bin/expect
これを例として使用しています。)
ルートパスワードが正しい場合は、YOUR_PASS
ルートシェルが作成された可能性があります。そうでない場合は、認証に失敗したメッセージが表示されます。
interact
このコマンドは、完全に自動化されたスクリプトコンテキストでは必要ない場合があります。プロセス制御権をユーザーに渡すからです。つまり、現在のプロセスにキーストロークを送信し、stderrとstderrを返します。
man expect
spawn
、、、expect
およびsend
その他のいくつかのコマンドinteract
の詳細については、参考資料を参照してください。