<,> Y >> se utilizan para la redirección de entrada / salida para comandos, que es una característica proporcionada por el shell (por ejemplo, bash). Entonces, si escribe un comando como sudo cat > /var/www/info.phpentonces, el shell que lo recibe como entrada intenta abrir el archivo /var/www/info.phpy proporciona ese archivo como salida estándar para el sudocomando. El sudocomando ni siquiera sabe si su salida se dirige a una consola o se redirige a un archivo, porque el shell que lo invoca se ocupa de esto.
Si el shell en el que escribió su comando es su shell de inicio de sesión u otro shell que se ejecuta en una terminal con su ID de usuario, entonces tiene los mismos privilegios que su ID de usuario, no los de root.
Entonces, en su caso, mientras que el comando cat se ejecuta como root, la copia de su salida /var/www/info.phpse intenta mediante el shell que se ejecuta como un usuario normal, que, como se esperaba, falla.
Una solución para tales situaciones es usar el teecomando:
sudo tee /var/www/info.php
Eso tendrá el efecto deseado de poner todo el texto ingresado en la consola hasta ^ D en el archivo especificado como parámetro.
Un efecto secundario quizás comprensible es que teetambién hará eco de la salida a la salida estándar, por lo que después de escribir cada línea y presionar enter tee, se devolverá una copia. Para evitar esto, puede usar la siguiente variante.
sudo tee /var/www/info.php > /dev/null
Los detalles se teepueden obtener a través info teede una terminal.