Os <,> e >> são usados para o redirecionamento de entrada / saída para comandos - que é um recurso fornecido pelo shell (por exemplo, bash). Portanto, se você digitar um comando como esse sudo cat > /var/www/info.php, o shell que recebe isso como entrada tenta abrir o arquivo /var/www/info.phpe fornece esse arquivo como saída padrão para o sudocomando. O sudocomando nem sabe se sua saída está indo para um console ou redirecionada para um arquivo, porque isso é resolvido pelo shell que o invoca.
Se o shell em que você digitou seu comando for o seu shell de login ou outro shell em execução em um terminal com seu ID de usuário, ele terá os mesmos privilégios que o seu ID de usuário - não os do root.
Portanto, no seu caso, enquanto o comando cat é executado como root, a cópia de sua saída /var/www/info.phpé tentada pelo shell em execução como um usuário normal, o que, como esperado, falha.
Uma solução alternativa para essas situações é usar o teecomando:
sudo tee /var/www/info.php
Isso terá o efeito pretendido de colocar todo o texto digitado no console até ^ D no arquivo especificado como parâmetro.
Um efeito colateral talvez indesejável é que teetambém fará eco da saída para o stdout; portanto, depois que você digitar cada linha e pressionar enter tee, imprimirá uma cópia dela de volta. Para evitar isso, você pode usar a seguinte variante.
sudo tee /var/www/info.php > /dev/null
Detalhes sobre teepodem ser obtidos através de info teeum terminal.