文件权限讨论

2021-05-27 14:31:13 浏览数 (2)

问题背景:

注:owner:所有者 group:所属组

root在qin用户家目录下创建一个文件,文件的owner和group都是root,权限是644,没有ACL、隐藏权限、特殊权限,在普通用户qin的家目录下,qin目录有针对其他用户的ACL,权限是rwx。 

问题起因:

为什么其他用户和qin用户依然可以通过强制保存(wq!)来修改文件,而且修改后owner和group都变成了修改者的。 /etc/passwd 文件755的权限 但是其他用户修改不了。


讨论:

大神A: 你给qin用户这个目录读写执行 那它就可以操纵里面的东西。

大神A:因为qin用户可以管理qin这个目录 那如果不可以操作它里面东西 它如果删除qin这个目录? 不让删除吗? 如果让 ,那就是可以将qin目录里面文件删除。

小白:问题这是目录啊 !目录的权限只是可以创建和新建文件的 ,修改文件内容的权限不是在它自身?

大神A:目录如果是rwx 里面文件也是rwx的    不然删除目录 难道不让删除文件吗? 逻辑就复杂 并且不对了。

 小白:所以文件的权限只能是大于等于目录权限的?

大神A:

  1. [root@localhost qin]# echo "1" >> a.txt 
  2. [root@localhost qin]# su qin
  3. [qin@localhost ~]$ ls -l /home/qin/
  4. total 4
  5. -rw-r--r--. 1 root root 2 Jun 15 17:51 a.txt
  6. [qin@localhost ~]$ rm -rf a.txt 
  7. [qin@localhost ~]$ ls
  8. [qin@localhost ~]$ 

小白:但是我设置rwx目录权限的时候,不给文件r权限,他是无法看到文件内容的。

大神A:linux逻辑就是这样 如果你对一个目录有rwx 里面文件就是rwx,目录啥权限 里面文件就啥权限。

大神A:我觉得 如果对目录有rwx 对里面文件却没有权限 那我删除这个目录 里面文件还在吗?,不在算咋回事 算在咋回事

路人甲:对目录有权限是能够进入目录,并有一定的操作,目录下的文件也是一样要有相同的权限的

小白:

  1. [qin@localhost ~]$ ll -d
  2. drwxrw-r-- 2 qin qin 106 Jun 15 17:54 .
  3. [qin@localhost ~]$ ll
  4. total 0
  5. -rw-r-----. 1 root root 0 Jun 15 17:54 a.txt
  6. [qin@localhost ~]$ cat a.txt 
  7. cat: a.txt: Permission denied
  8. [qin@localhost ~]$ 

小白:可不可以删除文件是目录的问题与自身权限无关吧。

大神A:owner和group都是root,其他人没有权限,你把权限给再高,qin用户也没有权限的。

大神A:它可以看不了 但是一定可以删除,原因我说了,目录我可以删除,里面删除不了,这是逻辑问题了。

大神B:@小白 你的存放的文件目录有写权限。

小白:那我删除目录写权限试试,

  1. [qin@localhost ~]$ chmod a-w /home/qin/
  2. [qin@localhost ~]$ cd /home/qin/
  3. [qin@localhost ~]$ ll
  4. total 0
  5. -rw-r-----. 1 root root 0 Jun 15 17:54 a.txt
  6. [qin@localhost ~]$ vi a.txt 

可以 果然目录不能有写权限。

  1. "a.txt"
  2. "a.txt" E212: Can't open file for writing
  3. Press ENTER or type command to continue

问题解决。

总结:

  qin用户之所以能在文件owner和group都是root,权限是rw-r--r--的情况下来修改文件,是因为qin目录有写权限,并且目录owner和group都是qin,而其他用户也能进入该目录下修改文件,是因为该目录针对其他用户设置了ACL为rwx,去除该ACL写权限其他用户就没法强制修改文件了。   当文件是在owner和group都是qin用户的目录时,需要去除所有的w权限或者修改qin目录的owner和group,qin用户才不能修改qin目录下的其他属主和属组的文件。

为什么/etc/passwd 文件只能root修改?

0 人点赞