unable to edit /proc/sys/net/ipv4/ip_forward in Xubuntu

38,237

Solution 1

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

Solution 2

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.

Share:
38,237

Related videos on Youtube

conandor
Author by

conandor

Updated on September 18, 2022

Comments

  • conandor
    conandor almost 2 years

    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?

  • George
    George about 10 years
    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?
  • Panther
    Panther about 10 years
    @George - see askubuntu.com/questions/311053/… . As to your other questions, best ask a question rather then ask in the comments. Good luck to you.
  • Adaephon
    Adaephon about 10 years
    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.