将文件所有权更改为 root 但原始用户仍然可以编辑文件?

Changed file ownership to root but original user can still edit the file?

我运行以下命令:

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

如果编辑器使用 "erase old file + write new file" 而不是 "modify existing file",这就完美了。如果是这样,则必须更改包含目录的权限以防止用户删除该文件。

删除文件不依赖于文件的权限!

在 shell 中试用:

> touch bla
> chmod 000 bla
> sudo chown root:root bla
> rm bla
... maybe a warning ...

但是文件会被删除!

因为这个 chownchmod 对文件没有帮助,但对包含的目录有帮助。

在 ext2、ext3 和最常见的较新文件系统上,您可以使用 chattr 来保护更多属性。

> sudo chattr +i bla 
> lsattr bla

来自 chattr 手册页:

A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.