<、>、および>>は、コマンドの入力/出力のリダイレクトに使用されます。これは、シェル(bashなど)によって提供される機能です。したがって、コマンドsudo cat > /var/www/info.phpを入力すると、これを入力として受け取るシェルはファイルを開こう/var/www/info.phpとし、そのファイルをsudoコマンドへの標準出力として提供します。sudoコマンドは、出力がコンソールに送られるのか、ファイルにリダイレクトされるのかを認識しません。これは、コマンドを呼び出すシェルによって処理されるためです。
コマンドを入力したシェルがログインシェルまたはユーザーIDを持つ端末で実行されている別のシェルである場合、ルートの特権ではなく、ユーザーIDと同じ特権があります。
そのため、あなたの場合、catコマンドはrootとして実行されますが、その出力のコピーは/var/www/info.php通常のユーザーとして実行されているシェルによって試行されますが、予想通り失敗します。
このような状況の回避策は、tee次のコマンドを使用することです:
sudo tee /var/www/info.php
これにより、コンソールに入力されたすべてのテキストを^ Dまで入力して、パラメーターとして指定されたファイルに入れるという効果が得られます。
おそらく望ましくない副作用の1つはtee、出力をstdoutにエコーすることです。そのため、各行を入力してEnterキーを押すteeと、そのコピーが出力されます。これを回避するには、次のバリアントを使用できます。
sudo tee /var/www/info.php > /dev/null
詳細についてteeはinfo tee、ターミナルで入手できます。