<,> І >> використовуються для перенаправлення вводу / виводу для команд, що є функцією, наданою оболонкою (наприклад, bash). Отже, якщо ви введете таку команду, як sudo cat > /var/www/info.phpтоді оболонка, яка отримує це як вхід, намагається відкрити файл /var/www/info.phpі надає цей файл як стандартний вихід для sudoкоманди. sudoКоманда навіть не знає , чи буде його вихід відбувається на консоль або перенаправлений в файл, так як це подбають оболонки , що викликає його.
Якщо оболонкою, в яку ви ввели свою команду, є ваша оболонка для входу або інша оболонка, що працює в терміналі з вашим ідентифікатором користувача, то вона має ті ж привілеї, що і ваш ідентифікатор користувача - не ті, що мають root.
Отже, у вашому випадку, тоді як команда cat виконується як корінь, копіювання її виводу в /var/www/info.phpспробує оболонка, що працює як звичайний користувач, що, як очікується, не вдається.
Вирішенням таких ситуацій є використання teeкоманди:
sudo tee /var/www/info.php
Це матиме намічений ефект від розміщення всього тексту, введеного на консолі до ^ D, у файл, вказаний як параметр.
Один, можливо, небажаний побічний ефект - це те tee, що також буде відлунювати вихід у stdout, тому після набору кожного рядка та натискання клавіші enter teeвиведете його копію назад. Щоб уникнути цього, можна скористатися наступним варіантом.
sudo tee /var/www/info.php > /dev/null
Деталі про те teeможна отримати info teeна терміналі.