1

Возможный дубликат:
разрешение sudo отклонено

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

sudo echo something > /etc/network/interfaces

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

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

sudo nano /etc/network/interfaces

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

1 ответ1

4

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

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

sudo nano /etc/network/interfaces запускает nano /etc /network /interfaces как uid 0. Поскольку nano работает с uid 0 и имеет разрешение на запись в /etc /network /interfaces.

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


Попробуйте это вместо этого:
sudo bash -c "echo something > /etc/network/interfaces"

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

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

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