登录后,我可以执行以下操作:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
然后,我可以打开vim(而不是root
),进行编辑bar
,使用强制写入w!
,然后修改文件。
如何使操作系统不允许任何文件修改?
更新2017年3月2日
chmod 500 foo
是一个红色鲱鱼:目录的写权限与修改文件内容的能力无关,而与创建和删除文件的能力无关。chmod 400 foo/bar
实际上确实阻止了文件内容的更改。但是,它并不能阻止改变文件的权限-文件的所有者可以随时更改自己的文件的权限(假设他们可以访问该文件即对所有祖先目录的执行权限)。实际上,strace(1)揭示了vim(7.4.576 Debian Jessie)所做的工作-vim调用chmod(2)来临时添加文件所有者的写许可权,修改文件,然后调用chmod( 2)再次删除写权限。这就是使用chattr +i
Works的原因-只有root可以调用chattr -i
。从理论上讲,如果以root身份运行,vim(或任何程序)对chattr的作用与对不可变文件的chmod的作用相同。
你不以
—
Alvin Wong
root
吗?
Alvin,我以非root用户身份进行此操作。我已编辑帖子以澄清。
—
user2141130 2013年
vim
实际上是在更改权限,然后再放回去。