1

Я пытаюсь поместить значение "1" в некоторый виртуальный файл /proc , и я получаю "разрешение запрещено", несмотря на использование sudo:

name@comp-name:/etc/dhcp$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward 
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

Я думаю, что команда echo запускается с правами root, но перенаправление (>) может выполняться без? Могу ли я запустить их обоих с правами root?

3 ответа3

4

В этом случае sudo будет применяться только к echo , как вы сказали.

Вместо этого вы можете запустить повышенную оболочку следующим образом:

sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Или даже короче

sudo -s 'echo 1 > /proc/sys/net/ipv4/ip_forward'
0

рекомендуемый способ сделать это трубопровод к программе tee

echo 1 | tee /proc/sys/net/ipv4/ip_forward

0

Проблема в том, что перенаправление выполняется вашей оболочкой, а не sudo . Обычно программа, которую вы запускаете, получает exec() ed после перенаправления. Поскольку у вас нет прав на запись в файл, перенаправление завершится неудачно. Как уже упоминалось выше, рекомендуется использовать tee , как в

echo stuff | sudo tee /some/file/path

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