我尝试编辑以下文件(ls -alstr
输出):0 -rw-r--r-- 1 root root 0 Apr 15 17:07 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
不幸的是,如果我尝试使用vim
或简单地使用类似的内容 来编辑它
sudo echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
,我会收到
-bash: /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts: Permission denied
错误。以下这个帖子我能够
sudo bash -c 'echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts’
成功执行并编辑文件。如果我以 身份登录root
,我可以成功执行
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
,但我仍然无法使用 编辑文件vim
。尝试chmod
和chown
该文件也失败了。
我的问题是(问题 1 和 2 已经在这里回答但为了完整性我将其陈述如下):
- 为什么我不能以普通用户身份使用 编辑文件
sudo
?>
(因为>
先被评估,因此在 之前sudo
) - 为什么这个
sudo bash -c 'echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts’
命令会起作用?(它会调用下面的新终端root
并执行后面的命令) - 当我以普通用户身份使用and/或 as
vim
登录时,为什么无法使用 编辑文件?sudo
root
- 为什么即使我是 root 也无法编辑文件权限和/或所有者?
- 我怎样才能使更改永久生效,以便即使在重启后它仍然保留?
答案1
通常你会编辑/etc/sysctl.conf
并做出这些调整(而不是直接编辑)
看:http://www.cyberciti.biz/faq/linux-kernel-etcsysctl-conf-security-hardening/
/proc 是内核使用的“虚拟文件系统”,“文件”中的信息由内核管理,并通过编辑系统配置文件(而不是 /proc 内的文件)进行调整/配置。回答问题 #3 - 5