web-dev-qa-db-ja.com

Sudoとsuによるログインの自動化

私はセキュリティのリスクを知っていますが、この実験/演習を、家の周りに敷設している、あまり使用されていない古い* nixマシンで実行しています。そのため、この演習を行っても、私のマシンにセキュリティ上のリスクはありません。とはいえ、セキュリティに関するコメントは投稿しないでください。

また、sudoersを変更してパスワードプロンプトを無効にできることも知っていますが、そのことに興味はありません。

コマンドを見つけました:

echo "password" | Sudo -S su

しかし、それは非常に奇妙に機能します。入力しても、ドメインは同じままです。ルートに変更しません。他に何か足りないものはありますか、これを行うより良い方法はありますか?


私がやったこと:

  1. パスワードの最後に\nを追加しました:パスワードが正しく検証されません。
  2. suの省略:Sudoの正しい使用法の使用法を出力します
6
Zchpyvr

奇妙ですが、これは私にとってうまくいきます:

% 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回だけ入力する必要がある制限時間内であるためと考えられます。

2
Michael Kopp

私は以下を使用しました

echo password | Sudo -S su - user_to_switch_to

次に実行します

Sudo -S su - user_to_switch_to

パスワードを手動で入力せずに、目的のユーザーに切り替える。

(注:passwordとuser_to_switch_toをpwdとユーザーに置き換えてください)

1
Teddy

私は、i/oリダイレクションを実行しているときに、対話型のシェルフォームsu(およびその友達)を実行しようとしていると感じています。私はそれがうまくいくとは思いませんecho passwd|は、パスワードの後に​​eof(ファイルの終わり)を提供します。期待やダイヤルスクリプトユーティリティなどが必要になると思います。 expectには、スクリプトの最後に呼び出すことができるパススルーモードがあります。コマンドがxtermのようにインタラクティブでない場合は、これは必要ありません(完全なインタラクティブは標準入力を必要としませんが、標準エラーから読み取られるパスワードに注意してください。/oリダイレクトがパスワードプロンプトに干渉する可能性が低くなります)

1
hildred