在Linux中,删除一个文件需要什么权限?

  昨天面试被问到了这个问题,思考了十几秒,认为是rw权限。面试结束后我查了一些说法和资料才知道我的理解太浅,也不够准确。今天就来好好复习一下权限的知识,也通过记录的方式强化记忆。

  

1、文件权限简单梳理

  假设在Linux中,使用ls命令查看到某文件的权限为:-rw-r--r--,那么它们分别代表什么?

  首位可能的字符有三,- 代表文件,d代表目录,| 代表软链接文件。

  后九位可能出现的字符有r(读)w(写)x(执行)。其中每3位代表一个权限组所拥有的的权限,分别是该文件的所有者(u),所有者所在的组(g)和其他人(o)。

  因此我们可以得知它是一个文件,其所有者可以读写,所在组和非同组的其他用户都只能读取。

  可以用chmod命令来修改文件权限:

  Usage:chmod [ugoa][+-=][mode=xxx]

  这三个方括号代表分组指定和数字权限修改两种方式。使用例:

  chmod g+w,o+w a.file   的作用是为组和其他用户添加写权限;

  chmod u-x,g-w,o-w a.file   的作用是删除拥有者的执行权限,删除组合其他用户的写权限。

  数字权限是用 3 位二进制表示的,将rwx权限的是否授予看成二进制数的1和0,那么我们就可以得到权限的数字表示

  r--  100 = 4
  -w- 010 = 2
  --x  001 = 1

  因此数字权限的修改方式也很好理解了,例如常见的权限:

 

  777 --- 代表所有人都对该文件拥有完全的权限
  755 --- 可执行文件的常用权限
  644 --- 普通文件的常用权限

2、权限对目录和文件的作用

  (1)目录

  • r: 可以查询目录下文件名(如ls)
  • w: 具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切,复制等(touch、rm、mv、cp)
  • x: 可以进入(应当看做是“执行”)目录(如cd)

  (2)文件

  • r: 读取文件内容(cat、more、head、tail)
  • w: 编辑、新增、修改文件内容(vi、echo),但不包括删除本文件。
  • x: 可执行

  (3)删除一个文件到底需要什么权限?

  啰嗦了这么多,有了以上的基础知识,咱就能回答这个问题了。Linux下,对于某个目录或文件拥有的权限,针对的是该文件的内容,而不是文件本身,所以应该着重考虑该文件的父文件夹。

  删除文件a时,必须拥有a的父文件夹的rwx权限。因为你在浏览文件夹内容时,“执行”了这个文件夹(cd),且“读取”了文件夹的内容,浏览目录里的文件(ls);删除文件a,是对该目录内容的“写”(rm)。

  总而言之,要想删除a,需要其父文件夹的rwx权限,而无需获取文件a的rwx权限。

  因为a作为其父文件夹的内容而存在,已经由父文件夹的权限所控制。而a的内容则是由a本身的权限所控制。只要不读写执行a,就无需a的任何权限。

 

  转载请注明出处。

posted @ 2021-08-26 15:16  Coder01  阅读(8163)  评论(0编辑  收藏  举报