我创建了用户small,将他添加到组kek中,并允许该组只读取用户主目录中的文件。然后我把所有的文件都交给了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/*然后,当我尝试删除文件时:
$ 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为什么会发生这种事?
发布于 2018-06-23 06:36:22
是否可以删除文件不是文件的属性,而是文件所在的目录的属性。用户不能删除位于他们无法写入的目录中的文件。
文件(和子目录)是目录节点中的条目。若要删除文件,则需要从目录节点断开它的链接,因此必须对该目录具有写权限才能删除其中的文件。
相关信息:
发布于 2018-06-23 09:24:48
在Unix上,不删除文件,而是将其从目录列表中删除。当一个文件不再有任何目录列表(它可以有很多),并且不再被进程打开时,它就会被删除。
如果对目录具有写权限,则可以删除文件目录列表。
chmod +t «directory-name»)中。这样,只有所有者和根(实际上有能力CAP_FOWNER)才能删除文件。当您需要写权限时使用它,以便用户可以添加文件。https://unix.stackexchange.com/questions/451426
复制相似问题