在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)⽂件
修改文件权限的linux命令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的任何权限。
  转载请注明出处。