Bash / proc / sys / net / ipv4 / ip_forward:权限被拒绝


11

我试着跑

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

它说访问被bash拒绝了,然后我做了:

sudo chmod 1+x /proc/sys/net/ipv4/ip_forward

现在说“不允许操作”。

如何获得访问权限?


4
试试这个:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Doug Smythies

那行得通,您能解释一下T恤做什么吗?
凯文·埃尔南德斯

3
问题sudo echo 1 > /proc/sys/net/ipv4/ip_forward在于输出的重定向未按进行sudo,因此它不起作用。从手册页:中tee - read from standard input and write to standard output and files,如果这样做,sudo它确实具有足够的特权来写入文件。
Doug Smythies'6

Answers:


15

该文件的权限位/proc/sys/net/ipv4/ip_forward是:

-rw-r--r-- 

owner:grouproot:root

因此只能root写入文件。

当您这样做时:

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

作为普通用户,由于权限不足,您将无法写入文件。

你可以做:

  • 使用sudobash

    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
  • 用途tee

    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

注意,您应该/etc/sysctl.conf/proc/sys子目录使用持久性操作。

简而言之,要启用IP转发,您只需将以下内容放入/etc/sysctl.conf

net.ipv4.ip_forward = 1

然后运行:

sudo sysctl -p

立即生效。

这与/proc/sys/net/ipv4/ip_forward 直接编辑文件具有相同的效果,更不用说更清晰了,当然是持久性的。


做回声1 | sudo tee / proc / sys / net / ipv4 / ip_forward为我工作,您能解释一下什么是tee吗?
凯文·埃尔南德斯

1
@ChrisEthanFox tee是将收到的所有内容发送到标准输出和文件的命令。检查man tee
heemayl

我以root用户身份登录,但仍然无法使用rm命令(rm /proc/sys/net/ipv4/icmp_echo_ignore_all)删除该文件!我什至检查了不可变位,并且未在该文件上设置该位……我收到相同的错误“ rm:无法删除'/ proc / sys / net / ipv4 / icmp_echo_ignore_all':权限被拒绝”。但是神奇的是我可以按照您的描述编辑文件!我不知道出什么问题了rm
Mojtaba Rezaeian

@MojtabaRezaeian是阻止删除的内核。/procprocfs生活在内存中,并由内核公开。因此,您可以了解内核,而无论内核允许您对此类FS上的文件执行任何操作,都完全取决于内核。
heemayl

@heemayl所以我该如何删除该文件,因为创建该文件是永久禁用向服务器发送icmp ping请求的选项,但是现在创建该文件后,我改变了主意,但是无法删除该选项(尽管现在不是它的选项)当无法更改时!)您是否知道该怎么做?还是需要提出另一个问题?
Mojtaba Rezaeian
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.