villiwalla
@villiwalla
HTML-верстка

Почему не хватает прав для перенаправления вывода?

Хочу одной командой добавить хост в hosts:
sudo echo "121.0.0.1 test.dev" >> /etc/hosts
// Permission denied
sudo sh -c echo "121.0.0.1 test.dev" >> /etc/hosts
// Permission denied
sudo sed -e 's/test/dev/' ./etc/apache2/sites-available/test.conf
// Permission denied


Почему?
  • Вопрос задан
  • 641 просмотр
Решения вопроса 2
@pfg21
ex-турист
sudo echo "121.0.0.1 test.dev" >> /etc/hosts
sudo применяется только к вызову команды echo, запись в файл выполняется от имени обычного пользователя
правильно сделать так
echo "121.0.0.1 test.dev" | sudo tee -a /etc/hosts
echo выполняется от обычного пользователя, ее вывод перенаправляется на вход команды tee, запущенной от имени рута, она входной поток дописывает (-a опция) в конец файла, ну и дублирует в stdout.
получается запись в файл от имени рута.
Ответ написан
Комментировать
DevMan
@DevMan
ибо
sudo sh -c 'echo "127.0.0.1\texample.com\n" >> /etc/hosts'

по крайней мере в макоси.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы