Не удается изменить файл "/etc / network / interfaces" с помощью сценария bash в Ubuntu [дубликат]


Возможные Дубликаты:

sudo разрешение отклонено

мне нужно отредактировать /etc / network / interfaces через bash script, я делаю что-то вроде ниже...

sudo echo something > /etc/network/interfaces

когда эта строка выполняется, я получаю ошибку, указанную ниже:
bash: /etc/network/interfaces: Permission denied

но если я редактирую тот же файл с помощью какого-то редактора, он работает безупречно...то есть

sudo nano /etc/network/interfaces

выше позвольте мне редактирование этого файла.

5
задан Community
источник

1 ответов

на этот вопрос уже дан ответ где-то на этом сайте, хотя я его не нашел.

но в основном все сводится к следующему:

sudo nano /etc/network/interfaces начинается nano/etc / network / interfaces как uid 0. Так как nano работает под uid 0 и имеет разрешение на запись в /etc/network/interfaces.

sudo echo something > /etc/network/interfaces начинается Эхо что-то как uid 0. Эта часть удалась. Вывод перенаправляется с помощью > в /etc / network / interfaces`. Однако этот редирект делается с вашей учетной записи. И у этого человека нет разрешения писать в это место.



Попробуйте это вместо:

sudo bash -c "echo something > /etc/network/interfaces"

это должно запустить bash как uid 0, и позволить bash выполнить всю команду как uid 0.

или просто su - для root. Работает все время как корень не рекомендуется, однако бывают случаи, когда вы просто хотите иметь достаточные права без ввода команды sudo-команда перед каждым одна строка. Просто не используйте root в качестве основного пользователя. Его можно использовать для установки и настройки системы.

4
отвечен Hennes 2012-12-29 18:44:23
источник

Другие вопросы bash bash-scripting command-line linux