Назад | Перейти на главную страницу

Почему я могу обновить файл, принадлежащий пользователю root, с помощью sudo vi, но не добавить к нему строку с sudo echo «Thing» >> file?

Я хотел бы иметь сценарий, который выполняет автоматическую миграцию веб-сайтов с другого, чтобы иметь возможность добавлять Includes в файл /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 файл, чтобы сохранить и закрыть его.

Что мне не хватает?

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