12

I try to change ip_forward from 0 to 1 but fail, even with root permission in Xubuntu 11.10. I don't have such similar problem while using Ubuntu 11.10

chiaki@chiaki:~$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward 
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

any idea?

conandor
  • 293
  • 1
  • 3
  • 7

4 Answers4

21

You can not re-direct so easily with sudo. There are several potential solutions, including tee.

You can re-direct to files you own as the user calling sudo, such as files in your home directory, but not system files.

Example

# it works when re-direction to a location / file the user has permission to access
ubuntu@ubuntu:~$sudo echo "it works" > ~/file
ubuntu@ubuntu:~$cat file
it works

# But NOT if you do not have permission to access the target
ubuntu@ubuntu:~$sudo echo "it works" > /root/file
-bash: /root/file: Permission denied

Option one

use sudo bash -c and quote the entire command

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

Option two

Use tee

echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward
enzotib
  • 93,831
Panther
  • 102,067
  • This completely worked for me! Just a couple of extra questions though: i) can I make those changes somehow persist through reboots and ii) why do those two commands even work?! and iii) why can't I even change the permission or the owner of that file, even when logged in as root? – George Apr 15 '14 at 21:11
  • @George - see http://askubuntu.com/questions/311053/how-to-make-ip-forwarding-permanent . As to your other questions, best ask a question rather then ask in the comments. Good luck to you. – Panther Apr 15 '14 at 22:59
3

If you want to change parameters in /proc/sys, the best thing to do is edit /etc/sysctl.conf and then run sysctl -p. That way your changes will persist across reboots.

tumbleweed
  • 8,026
0

you can use this:

user@ubuntu:~sudo -s 
enter password for sudo:
root@ubuntu:~echo 1 >/proc/sys/net/ipv4/ip_forward :)
  • While this probably will solve the problem, it would certainly be useful to know why this works in contrast to the use of sudo in the question. Namely, while echo will be run with superuser permissions, the output redirecton > will still run with the current shells permissions. – Adaephon May 19 '14 at 09:06
0

If you enter the following command, it will works if you don't reboot your computer.

echo 1 >/proc/sys/net/ipv4/ip_forward

once rebooted, the parameter will back to "0"

Try the following command, and it will work even after you reboot.

vim /proc/sysctrl.conf ' - uncommen "net.ipv4.ip_forward=1"

sysctl -p 

now, even, when you reboot your machine, IP forwarding will be always enabled.

Tim
  • 32,861
  • 27
  • 118
  • 178