為何 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 開發網路設備的人,應該很常使用下面的這命令:
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"
這就不用說明了吧
留言
張貼留言