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

lar*_*els 32 linux unix root permissions

我刚刚在我的 Ubuntu 机器(ext3 文件系统)上注意到,从文件中删除写权限并不会阻止 root 写入它。

这是 UNIX 文件权限的一般规则吗?还是特定于 Ubuntu?还是我的机器上配置错误?

# 触摸 abc
# chmod ugo-w abc
# Python
Python 2.6.4(r264:75706,2009 年 12 月 7 日,18:45:15) 
[GCC 4.4.1] 在 linux2 上
输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
>>> open('abc','w').write('AAA\n')
>>> 
#猫abc
AAA

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

  1. 这是正常行为吗?

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

请教我一些我绝对不明白的东西。

注意:我知道root 可以完全控制系统,例如,可以更改任何文件的权限。我的问题是当前设置的权限是否对以 root 身份运行的代码强制执行。这个想法是 root 用户防止她/他自己意外写入文件。

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

bri*_*ice 46

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

2)您甚至可以通过使用来保护文件(不是故意的操作,而是意外的,无论如何)

chattr +i filename.ext
Run Code Online (Sandbox Code Playgroud)

那就是“更改属性添加不可变”。要取消保护:

chattr -i filename.ext
Run Code Online (Sandbox Code Playgroud)

查看man chattr更多信息

  • 更准确地说(无论如何,在 Linux 的情况下),root 具有`CAP_DAC_OVERRIDE` 能力,允许他忽略 ACL 和权限。 (4认同)
  • ...虽然这是对这个问题的一个很好的回答,“即使他不能删除它,`root` 也能很好地保护文件”! (2认同)