suとリダイレクト

suとリダイレクト

次の行は、Red Hat 5.5で利用可能なコンストラクタを示しています。

$ echo "foo" | ssh myhost "echo \"cat <&1\" | su --login"
foo

実際、私はcatがFD#1を読むことができる理由をまったく理解していませんでしたが、うまくいきます。

Red Hat 6.3はもう機能しません。

$ echo "foo" | ssh myhost "echo \"cat <&1\" | su --login"
cat: -: Bad file descriptor

最初の質問:なぜこれがもう機能しないのですか? 2番目の質問:Red Hat 6.3で動作するソリューションを知っている人はいますか?

すべてのアイデアを高く評価します。

アルミン

答え1

psしばらく、デフォルトでmyhostにsshを送信してからパスワードを求めるプロンプトを表示せずに、rootとしてすぐにsuを試みます。それでは、ローカルコンピュータとリモートコンピュータの誰もが見ることができるように、出力にルートパスワードを入力する副作用がありますか?

うん、そうではありません。

どこでも動作し、ルートパスワードの漏洩を排除する3つの方法があります(私が好む順序で)。

  1. root@myhostでSSH経由でアクセスしてください。パスワードプロンプトを避けるには、公開鍵認証を使用してください。秘密鍵を暗号化するのが最善です(ただし、パスワードプロンプトを減らすには、SSHエージェントおよび/または接続の多重化を使用してください)。 rootPermitRootLogin yesまたは公開鍵でのみログインを許可するようにsshを設定できますPermitRootLogin without-password
  2. sudo -i今のようにSSHを使用しますが、root以外のユーザーがrootとしてすべてのコマンドを実行できるようにしてsu --loginsudoを設定しますvisudo(パスワードなしで可能ですが、セキュリティの観点からはroot以外のユーザーはrootと同じです)。
  3. su非ユーザーにパスワードの入力を求められないように、PAM設定を変更してください。セキュリティの観点から、ユーザーはルートと同じです。

関連情報