问题背景:
注: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:
[root@localhost qin]# echo "1"
>> a.txt
[root@localhost qin]# su qin
[qin@localhost ~]$ ls -l /home/qin/
total 4
-rw-r--r--.
1 root root 2
Jun
15
17:51 a.txt
[qin@localhost ~]$ rm -rf a.txt
[qin@localhost ~]$ ls
[qin@localhost ~]$
小白:但是我设置rwx目录权限的时候,不给文件r权限,他是无法看到文件内容的。
大神A:linux逻辑就是这样 如果你对一个目录有rwx 里面文件就是rwx,目录啥权限 里面文件就啥权限。
大神A:我觉得 如果对目录有rwx 对里面文件却没有权限 那我删除这个目录 里面文件还在吗?,不在算咋回事 算在咋回事
路人甲:对目录有权限是能够进入目录,并有一定的操作,目录下的文件也是一样要有相同的权限的
小白:
[qin@localhost ~]$ ll -d
drwxrw-r--
2 qin qin 106
Jun
15
17:54
.
[qin@localhost ~]$ ll
total 0
-rw-r-----.
1 root root 0
Jun
15
17:54 a.txt
[qin@localhost ~]$ cat a.txt
cat: a.txt:
Permission denied
[qin@localhost ~]$
小白:可不可以删除文件是目录的问题与自身权限无关吧。
大神A:owner和group都是root,其他人没有权限,你把权限给再高,qin用户也没有权限的。
大神A:它可以看不了 但是一定可以删除,原因我说了,目录我可以删除,里面删除不了,这是逻辑问题了。
大神B:@小白 你的存放的文件目录有写权限。
小白:那我删除目录写权限试试,
[qin@localhost ~]$ chmod a-w /home/qin/
[qin@localhost ~]$ cd /home/qin/
[qin@localhost ~]$ ll
total 0
-rw-r-----.
1 root root 0
Jun
15
17:54 a.txt
[qin@localhost ~]$ vi a.txt
可以 果然目录不能有写权限。
"a.txt"
"a.txt" E212:
Can't open file for writing
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修改?