用户只能删除具有读取权限的文件

nik*_*000 0 users permissions group

我创建了 user small,将他添加到组kek并允许该组仅读取用户主目录中的文件。然后我将所有文件 chown 到root:kek. 但是,small仍然可以删除他家目录中的文件。

我运行的命令:

useradd -ms /bin/bash small
groupadd kek
usermod -a -G kek small
chown -R root:kek /home/small/*
chmod -R g=r  /home/small/*
Run Code Online (Sandbox Code Playgroud)

然后当我尝试删除文件时:

$ ls -l
total 16
-rw-r--r-- 1 root kek  240 Jun 23 06:17 Dockerfile
-rw-r--r-- 1 root kek   39 Jun 21 09:17 flag.txt
-rw-r--r-- 1 root kek 2336 Jun 22 14:19 server.py
-rw-r--r-- 1 root kek   24 Jun 22 08:16 small.py

$ rm flag.txt

$ ls -l
total 12
-rw-r--r-- 1 root kek  240 Jun 23 06:17 Dockerfile
-rw-r--r-- 1 root kek 2336 Jun 22 14:19 server.py
-rw-r--r-- 1 root kek   24 Jun 22 08:16 small.py

$ whoami
small
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

Kus*_*nda 5

是否可以删除文件不是文件的属性,而是文件所在目录的属性。用户不能删除位于他们无法写入的目录中的文件。

文件(和子目录)是目录节点中的条目。要删除文件,需要将其与目录节点断开链接,因此必须具有对该目录的写权限才能删除其中的文件。

  • 文件的写权限决定了是否允许更改文件的内容。
  • 目录的写权限决定了是否允许更改目录的内容。

有关的: