谁可以删除文件?

use*_*637 8 ubuntu bash

我创建了一个文件,对它执行了 chmod 000,然后将所有者和组更改为 root:root。我仍然能够以它的原始创建者(不是 root)的身份删除该文件。

谁有权删除文件?

cyb*_*x86 18

包含目录的权限决定了重命名和删除文件的能力。

具体来说,要删除/重命名文件,用户需要对包含的目录具有写入执行(即遍历)权限,并且相关文件不能是不可变的。(在这种情况下,非特权用户甚至可以删除 root 拥有的文件。)

限制删除:

通过使用以下命令在包含目录上设置“粘滞位”(也称为“限制删除标志”),可以将文件删除仅限于文件的所有者(和特权用户):chmod +t directory。设置了粘滞位的目录在最后一个位置显示“t”(例如drwxr-xr-t) - 这也可以通过在 3 位八进制代码前加上“1”(例如chmod 1755 directory)来设置为“八进制”形式。(Linux 忽略文件上的粘性位 - 尽管其他一些操作系统确实为它分配了含义。)

读取权限:

您应该注意,不需要对包含目录的读取权限。没有它,您仍然可以删除文件,如果您知道它的名称,尽管您将无法“读取”目录的内容(例如,没有读取权限,您将无法运行ls)。

不可变文件:

顺便说一句,通过使文件不可变(即chattr +i)所有者和其他用户(包括特权用户)都不能删除(或重命名、链接或修改)该文件,即使他们对该文件具有写权限目录(只有超级用户可以删除它)。


Mat*_*erg 5

文件所在文件夹的所有者,如果他们对该文件夹具有写权限,则能够删除该文件,即使它的掩码为 000 或该文件为其他用户所有。如果你真的想创建一个没有人可以触摸/删除的​​文件,你应该查看命令chattr及其不可变标志。

文档

具有 i 属性的文件无法修改:无法删除或重命名,无法创建指向此文件的链接,也无法将数据写入文件。只有超级用户或拥有该CAP_LINUX_IMMUTABLE能力的进程才能设置或清除该属性。