私はセキュリティのリスクを知っていますが、この実験/演習を、家の周りに敷設している、あまり使用されていない古い* nixマシンで実行しています。そのため、この演習を行っても、私のマシンにセキュリティ上のリスクはありません。とはいえ、セキュリティに関するコメントは投稿しないでください。
また、sudoers
を変更してパスワードプロンプトを無効にできることも知っていますが、そのことに興味はありません。
コマンドを見つけました:
echo "password" | Sudo -S su
しかし、それは非常に奇妙に機能します。入力しても、ドメインは同じままです。ルートに変更しません。他に何か足りないものはありますか、これを行うより良い方法はありますか?
私がやったこと:
\n
を追加しました:パスワードが正しく検証されません。su
の省略:Sudo
の正しい使用法の使用法を出力します奇妙ですが、これは私にとってうまくいきます:
% echo -e "password\n" | Sudo -S su
<myusername>'s password:HOSTNAME: Undefined variable.
% Sudo -S su
したがって、最初のステップでは、パスワードがSudo
に渡され(-e
フラグを使用してエコーし、\n
が実際には改行になるようにします)、2回目の実行で認証が機能します。パスワードの入力を求められません。
(2行目の戻りは、おそらくシステムのセットアップが不適切なためです...)
編集:そのxtermセッションでは、何度でもSudo -S <command>
を呼び出すことができます...これは、Sudoパスワードを1回だけ入力する必要がある制限時間内であるためと考えられます。
私は以下を使用しました
echo password | Sudo -S su - user_to_switch_to
次に実行します
Sudo -S su - user_to_switch_to
パスワードを手動で入力せずに、目的のユーザーに切り替える。
(注:passwordとuser_to_switch_toをpwdとユーザーに置き換えてください)
私は、i/oリダイレクションを実行しているときに、対話型のシェルフォームsu(およびその友達)を実行しようとしていると感じています。私はそれがうまくいくとは思いませんecho passwd|
は、パスワードの後にeof(ファイルの終わり)を提供します。期待やダイヤルスクリプトユーティリティなどが必要になると思います。 expectには、スクリプトの最後に呼び出すことができるパススルーモードがあります。コマンドがxtermのようにインタラクティブでない場合は、これは必要ありません(完全なインタラクティブは標準入力を必要としませんが、標準エラーから読み取られるパスワードに注意してください。/oリダイレクトがパスワードプロンプトに干渉する可能性が低くなります)