Как добавить текст в защищённый файл с помощью sudo

Потребовалось в скрипте автоматически генериующем инфрасруктуру домена (директории в httpd, имя домена, алиас в вебсервере, ..) выполнить подобный скрипт

echo echo $d IN  A 192.168.80.76 >> /etc/bind/xxx.hosts

ну и разумеется получаю

bash: /etc/bind/xxx.hosts: Permission denied

Немножечко усложняем команду и получаем нужный результат

echo "echo $d IN  A 192.168.80.76 >> /etc/bind/xxx.hosts" |sudo sh
ffsdmad@ffsdmad:~$

тут на лету генерируется скрипт добавляющий A запись в зону, который передаётся на выполнение оболочке запущенной с правами root

 

похожие страницы

  1. Squid ограничение доступа по времени
  2. Установка VirtulaBox на Ubuntu с нестандартным ядром
  3. Обновление Gimp до 2.6
  4. Динамическое добавление swap в Linux
  5. apache генерация списка файлов в utf-8

#1:

Автоматически генерирующий скрипт (для которого необходимы права суперпользователя) должен запускаться с правами рута, и тогда таких костылей возникать не будет.

ответить  2009-07-28 02:51:11 

#2:

Ммм... А как насчет echo "something" | sudo tee -a /some/file.txt ?

ответить  2009-07-28 03:43:57 

#3:

можно еще sudo sh -c 'echo "bla-bla" /etc/bumbum'

ответить  2009-07-28 10:40:25 

#4:  Басманов:

sudo sh -c 'echo "bla-bla" /etc/bumbum'
в моём случае не работало, так как ' не давали вычислить $d

ответить  2009-07-28 10:50:47 

#5:

в моём случае не работало, так как ' не давали вычислить $d
sudo sh -c "echo $d IN A 192.168.80.76 /etc/bind/xxx.hosts"
;)

ответить  2009-07-29 09:17:20 

#6:

движок жрет угловые скобки :(

ответить  2009-07-29 09:20:57 

#7:

"в моём случае не работало, так как ' не давали вычислить $d"
используйте eval

ответить  2009-08-22 02:43:04