sudo echo "что-то" >> / etc / privilegedFile не работает - PullRequest
528 голосов
/ 17 сентября 2008

Это довольно простой вопрос, по крайней мере, так кажется, о разрешениях sudo в Linux.

Часто я просто хочу добавить что-то в /etc/hosts или подобный файл, но в итоге не могу, потому что и >, и >> не разрешены, даже с root.

Есть ли способ заставить это работать без необходимости su или sudo su в root?

Ответы [ 13 ]

0 голосов
/ 24 апреля 2018

Используя sed -i с $ a , вы можете добавить текст, содержащий как переменные, так и специальные символы, после последней строки.

Например, добавление $ NEW_HOST с $ NEW_IP в / etc / hosts:

sudo sed -i "\$ a $NEW_IP\t\t$NEW_HOST.domain.local\t$NEW_HOST" /etc/hosts

Опции опций объяснены:

  • -i на месте
  • $ для последней строки
  • a для добавления
0 голосов
/ 16 сентября 2017

Это сработало для меня: оригинальная команда

echo "export CATALINA_HOME="/opt/tomcat9"" >> /etc/environment

Рабочая команда

echo "export CATALINA_HOME="/opt/tomcat9"" |sudo tee /etc/environment
0 голосов
/ 22 января 2017

Можете ли вы изменить владельца файла, а затем изменить его после использования cat >> для добавления?

sudo chown youruser /etc/hosts  
sudo cat /downloaded/hostsadditions >> /etc/hosts  
sudo chown root /etc/hosts  

Что-то вроде этой работы для вас?

...