Ubuntu

sudo echo 'bla' >> /etc/sysctl.conf權限被拒絕

  • January 31, 2019

免責聲明:我是系統管理員的新手。

我正在嘗試在 AWS EC2 實例中設置埠轉發,這必須在命令行中完成,因為我不想進入並編輯任何內容,它必須是自動的(它是建構過程的一部分)。

sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

沒有權限

奇怪的是,我已經(成功地)使用sudo了幾乎所有需要su特權的命令。如果我sudo su在命令之前執行(在ssh會話中手動嘗試),那麼它可以工作。

這背後的原因是什麼?不涉及sudo su或手動編輯的可能解決方案?

你不能sudo用來影響輸出重定向;>>>(並且,為了完整起見,<)受呼叫使用者的權限影響,因為重定向是由呼叫 shell 完成的,而不是被呼叫的子程序。

要麼做

cp /etc/sysctl.conf /tmp/
echo "net.ipv4.ip_forward = 1" >> /tmp/sysctl.conf
sudo cp /tmp/sysctl.conf /etc/

或者

sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"

您可能會發現使用此命令更簡單:

echo net.ipv4.ip_forward = 1 | sudo tee -a /etc/sysctl.conf

引用自:https://serverfault.com/questions/540492