
Мне бы хотелось, чтобы скрипт, выполняющий автоматическую миграцию веб-сайтов с другого сайта, мог добавлять include в файл /etc/httpd/conf.d/vhosts.conf.
Однако когда я пытаюсь использовать echo для добавления строки в конец файла, я получаю следующее:
$ sudo echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf
-bash: /etc/httpd/conf.d/vhosts.conf: Permission denied
и все же я могу vi /etc/httpd/conf.d/vhosts.conf, добавить строку и :wq файл, чтобы сохранить и закрыть его.
Что я упускаю?
решение1
Sudo повышает уровень вызываемого им процесса, но не повышает уровень какой-либо текущей обработки оболочки, такой как перенаправление, подстановка и т. д.
Перенаправление файла >> /etc/httpd/conf.d/vhosts.conf
обрабатывается вашимтекущийshell, которая все еще работает под вашими текущими привилегиями.
Вы можете попробовать что-то вроде этого.
sudo bash -c 'echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf'
Или
echo "Include thing" | sudo tee -a /etc/httpd/conf.d/vhosts.conf