『Linux 』su 与sudo


    今天在看 arp,TCP劫持时,要修改ip_forward,但是在执行时发现:

border@ubuntu :~$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

但是通过 su切换到root就没有问题。

border@ubuntu:~$ su
Password:
root@ubuntu:/home/border# sudo echo 1 > /proc/sys/net/ipv4/ip_forward
root@ubuntu:/home/border# cat /proc/sys/net/ipv4/ip_forward
1
root@ubuntu:/home/border#

    比较疑惑,就查了查资料:
      在 这里也发现了同样的问题,刚开始 Marc以为是shell内置函数的问题,但是在评论的Jan否认了这个,并给了个例子:

sudo /bin/echo 1 > /root/test

doesn't work either while

sudo sh -c "/bin/echo 1 > /root/test"


      Jan认为是在重定向前有root的权限,但是在重定后就没有root的权限,所以出错。(感觉自己写的好绕)

源文:

I think the problem is not that echo is a shell builtin but rather that the file you're trying to redirect to is being opend by the shell before the sudo is executed and therefore the command fails because user "marc" doesn't have write permissions on the file.

sudo /bin/echo 1 > /root/test

doesn't work either while

sudo sh -c "/bin/echo 1 > /root/test"

does as you have already noted.


参考: http://marc.abramowitz.info/archives/2006/05/17/su-su-sudo-oh-no/
        http://www.worldofvishnu.com/tech/hack-the-computers-in-your-lan/

--
Blog:     www.borderj.cn
MSN:   borderj@live.com

  Border
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值