我运行了以下命令:
chown root:root file.php
chmod 0644 file.php
键入ls -l
:时,设置似乎已应用
-rw-r--r-- 1 root root 310 Jul 26 01:25 file.php
但是,原始用户仍然可以通过Cpanel文件管理器编辑文件,保存后,文件所有权将归原始用户所有。例如,
-rw-r--r-- 1 orig_user orig_user 310 Jul 26 01:25 file.php
如何防止用户编辑root用户已经拥有的文件?
对文件使用chattr
使其不可变。
sudo chattr +i file.php
如果编辑器使用"擦除旧文件+写入新文件"而不是"修改现有文件",这将非常有效。如果是,则必须更改包含目录的权限,以防止用户擦除该文件。
删除文件不取决于该文件的权限!
在外壳中试用:
> touch bla
> chmod 000 bla
> sudo chown root:root bla
> rm bla
... maybe a warning ...
但是文件会被删除!
因为chown
和chmod
对文件没有帮助,但对包含目录没有帮助。
在像ext2、ext3和最常见的更新文件系统上,您可以使用chattr
来保护更多的属性。
> sudo chattr +i bla
> lsattr bla
来自chattr
手册页:
不能修改具有"i"属性的文件:不能删除或重命名该文件,不能创建指向该文件的链接,也不能向该文件写入数据。只有拥有CAP_LNUX_IMMUTABLE功能的超级用户或进程才能设置或清除此属性。