ubuntu – “sudo echo”bla“>> / etc / sysctl.conf`权限被拒绝

免责声明:我是sysadmin的新手.

我正在尝试在AWS EC2实例中设置端口转发,这必须在命令行中完成,因为我不想进入并编辑任何内容,它必须是自动的(它是构建过程的一部分) ).

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

Permission denied

奇怪的是我已经(成功)使用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"

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...