删除写权限不会阻止 root 写入文件

删除写权限不会阻止 root 写入文件

我刚刚注意到,在我的 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

如果我从我的普通用户帐户执行此操作,则写入文件会失败(正如预期的那样)。

  1. 这是正常行为吗?

  2. 有没有办法防止 root 意外写入文件?(最好使用正常的文件系统机制,而不是 AppArmor 等)

请教我一些我绝对不明白的事情。

笔记:我明白那个root 可以完全控制系统例如,改变任何文件的权限。我的问题是当前设置的权限强制以 root 身份运行代码. 这个想法是防止 root 用户自己意外地写入文件。

笔记:我也明白不应以 root 身份登录正常操作。我刚刚注意到了这种行为,并向您询问。

答案1

1)这是正常行为。root 始终对所有文件拥有 rw 访问权限。

2)你可以使用以下命令保护文件,即使该文件无法被 root 用户使用(不是故意的,但无论如何是意外的)

chattr +i filename.ext

即“更改属性添加不可变”。要删除保护:

chattr -i filename.ext

了解man chattr更多信息

答案2

  1. 是的,这是正常的。 根就是神。

  2. 是的,有办法可以防止 root 覆盖文件。

    • chattr使用( +isets, 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 帐户,以防止其被滥用。

问候

[提醒自己:你应该谦虚...也许你错了]

相关内容