首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户可以删除仅具有读取权限的文件

问用户可以删除仅具有读取权限的文件
EN

Unix & Linux用户
提问于 2018-06-23 06:31:18
回答 2查看 2.9K关注 0票数 0

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

我运行的命令:

代码语言:javascript
复制
useradd -ms /bin/bash small
groupadd kek
usermod -a -G kek small
chown -R root:kek /home/small/*
chmod -R g=r  /home/small/*

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

代码语言:javascript
复制
$ 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

为什么会发生这种事?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-06-23 06:36:22

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

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

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

相关信息:

票数 5
EN

Unix & Linux用户

发布于 2018-06-23 09:24:48

在Unix上,不删除文件,而是将其从目录列表中删除。当一个文件不再有任何目录列表(它可以有很多),并且不再被进程打开时,它就会被删除。

如果对目录具有写权限,则可以删除文件目录列表。

如何处理

  • 选项1从目录中删除写权限。
  • 选项2将粘性位添加到目录(chmod +t «directory-name»)中。这样,只有所有者和根(实际上有能力CAP_FOWNER)才能删除文件。当您需要写权限时使用它,以便用户可以添加文件。
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/451426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档