セキュリティ上のリスクがあることを知っていますが、家庭でほとんど使用されていない古い* nixシステムでこの実験/練習を行っています。したがって、この練習を実行しても、コンピュータにセキュリティリスクは発生しません。しかし、安全については言及しないでください。
また、パスワードプロンプトを無効にするように変更できることもわかっていますが、sudoers
そこには興味がありません。
次のコマンドが見つかりました。
echo "password" | sudo -S su
ところで効果が変です。ドメイン名を入力すると、ルートになりません。私が何かを見逃しているのでしょうか?それとももっと良い方法がありますか?
私がしたこと:
\n
追加:パスワードの末尾に無効なパスワードの確認があります。- 省略
su
:sudo
正しい使用法を印刷して記載してください。
答え1
奇妙ですが、これは私にとって効果的です。
% echo -e "password\n" | sudo -S su
<myusername>'s password:HOSTNAME: Undefined variable.
% sudo -S su
したがって、最初の実行ではパスワードが渡されsudo
(-e
フラグがエコーされて\n
実際に改行されます)、2番目の実行ではパスワードを要求せずに認証が行われます。
(2行目の戻りは、不適切なシステム設定によるものです。)
sudo -S <command>
編集:そのxtermセッションでは、好きなだけ何度でも呼び出すことができます。これは、sudoパスワードを1回入力するだけの時間制限内にあるためです。
答え2
私は以下を使用しました
echo password | sudo -S su - user_to_switch_to
その後実行
sudo -S su - user_to_switch_to
パスワードを直接入力せずに希望のユーザーに切り替えます。
(passwordとuser_to_switch_toをあなたのパスワードとユーザーに置き換えてください。)
答え3
I / Oリダイレクトを実行している間、su(および友達)の対話型シェルを実行しようとしていると感じます。私はこれがうまくいかないと思います。echo passwd|
つまり、パスワードの後にeof(ファイルの終わり)が表示されます。私の考えでは、Expectやダイヤルアップスクリプトユーティリティのようなものが必要だと思います。 Expectには、スクリプトの最後で呼び出すことができるパススルーモードがあります。コマンドがxterm(完全にインタラクティブであるが標準入力を必要としない)のようにインタラクティブでない場合は、必要ありません。また、標準エラーで読んだいくつかのパスワードに注意してください。これはいくら言っても面白いことではありません。 (これにより、i/oリダイレクトがパスワードプロンプトを妨げる可能性が低くなります。)