為何 sudo 無法用來設定 ip_forward

這是一個在網路上很常見的問題,因為自己碰到了,所以就留下紀錄囉。

用 Linux 開發網路設備的人,應該很常使用下面的這命令:

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

想當然,這是 root 才能做的事情,那麼,在 ubuntu 裏面,很自然就會用下面的指令執行:

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

實際執行結果居然是 Permission Denied??

其實會出現這個問題,主要的原因在於 shell 在執行 redirect 的流程。上面的指令對 shell 來說其實等於下面兩個指令:

"sudo echo 1" 以及
redirect to "/proc/sys/net/ipv4/ip_forward"

很明顯,真正需要 root 權限的第二個步驟反而沒有 root 的權限。所以系統當然會說 Permission Denied。解決的方法如下:

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

這就不用說明了吧

留言

這個網誌中的熱門文章

我弟家的新居感恩禮拜分享:善頌善禱

如何將Linux打造成OpenFlow Switch:Openvswitch

Openssl 範例程式:建立SSL連線