我刚刚注意到,在我的 Ubuntu 机器(ext3 文件系统)上,删除文件的写权限并不会阻止 root 对其进行写入。
这是 UNIX 文件权限的一般规则吗?还是 Ubuntu 独有的?还是我的机器配置错误?
# 触摸 abc # chmod ugo-w abc # Python Python 2.6.4(r264:75706,2009 年 12 月 7 日,18:45:15) linux2 上的 [GCC 4.4.1] 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> open('abc','w').write('AAA\n') >>> # 猫 abc AAA
如果我从我的普通用户帐户执行此操作,则写入文件会失败(正如预期的那样)。
这是正常行为吗?
有没有办法防止 root 意外写入文件?(最好使用正常的文件系统机制,而不是 AppArmor 等)
请教我一些我绝对不明白的事情。
笔记:我明白那个root 可以完全控制系统例如,改变任何文件的权限。我的问题是当前设置的权限强制以 root 身份运行代码. 这个想法是防止 root 用户自己意外地写入文件。
笔记:我也明白不应以 root 身份登录正常操作。我刚刚注意到了这种行为,并向您询问。
答案1
1)这是正常行为。root 始终对所有文件拥有 rw 访问权限。
2)你可以使用以下命令保护文件,即使该文件无法被 root 用户使用(不是故意的,但无论如何是意外的)
chattr +i filename.ext
即“更改属性添加不可变”。要删除保护:
chattr -i filename.ext
了解man chattr
更多信息
答案2
是的,这是正常的。 根就是神。
是的,有办法可以防止 root 覆盖文件。
chattr
使用(+i
sets, unsets)设置不可变位-i
。需要 root 访问权限,仅适用于 ext2/ext3(可能也适用于 ext4),但除此之外很实用。- 不要以 root 身份运行应用程序。无 root 权限,无覆盖文件。用于
sudo
访问系统功能。 - 卸载文件系统。没有挂载文件系统,没有覆盖文件。[*]
- 关掉电脑。没有电,没有覆盖文件。
这些方法从逻辑上遵循了第一种方法。如您所见,后两种方法通常没有用,就像通过拔掉网络来保护 Windows 免受病毒侵害通常没有用一样。这就是 root 很危险的原因。[+]
[*] 当然,不考虑“意外”直接写入块设备的可能性。是的,root 可以这样做。是的,您可以防止这种情况:断开设备连接。
[+] 这也是那些 BOfH 神话的来源。它们并不全是神话。
答案3
您还可以使用 Linux 内核“功能”来限制 root 用户的文件访问:http://www.securityfocus.com/infocus/1400
还可以使用 SE-Linux 或其他内核补丁来使某些文件即使对于 root 来说也是不可变的。
答案4
我认为只要 root 是超级用户,他就可以做任何事情,你就不能删除他的任何权限,即使你是 root。阻止自己执行或不执行操作(例如写入文件或打开应用程序)应该是 root 的意愿。
所以不,您很可能只会停用 root 帐户,以防止其被滥用。
问候
[提醒自己:你应该谦虚...也许你错了]