3

Я запустил этот код:

sudo cat <<EOF | sudo sed -e "s,%,$,g" >/etc/init.d/dropbox
  echo "Hello World"
EOF

Но даже при том, что я получаю "разрешение запрещено", потому что вы должны быть пользователем root, чтобы вносить изменения в каталог /etc/init.d. И почему-то моя команда выше не работает.

Есть ли способ решить это?

3 ответа3

7

Перенаправление в файл обрабатывается bash. Поэтому он не наследует разрешения, предоставленные sudo.

Используйте sudo tee для записи в файл как root.

Попробуй это:

cat | sed -e 's,%,$,g' | sudo tee /etc/init.d/dropbox << EOF
  echo "Hello World"
EOF

Обратите внимание, что $, внутри двойных кавычек может быть интерпретировано.

4

Вы можете предоставить себе постоянные права с
# sudo -s

затем ваша команда (больше не нужно sudo) и выход с
# exit

РЕДАКТИРОВАТЬ:
Я предполагаю, что вы спрашиваете об Ubuntu, потому что ваш вопрос помечен этим. В других дистрибутивах, таких как Suse, вы сможете использовать
# su
вместо # sudo -s

0

Эта часть: sudo sed -e "s,%,$,g" >/etc/init.d/dropbox cen будет выглядеть так:

sudo somecommand --put the result of the sudo command into--> /etc/init.d/dropbox

Точно так же как это:

ls somedirectory > filename
ls somedirectory --put the result of the ls command into--> filename

Это означает, что запись в файл будет выполняться как ваш текущий пользователь, а не как root.

Вы можете решить это, используя tee как показывает Бенуа в своем ответе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .