Linux目录与文件权限的意义是否相同?

Linux目录与文件权限的意义是不相同的。

1.权限对于文件的意义

  • r:可读取文件内容;如cat,vim
  • w:可修改或者新增文件内容,但是不具备删除权限!
  • x:文件可以被执行;

关于文件的w权限,单独强调一下。

当文件的所有者只有w权限时,只能修改或者新增文件内容;

并不能读取和删除!!!

这时候你可能有疑问,文件都能写入为什么不能读取;我们正常思维可能都认为修改文件内容必须需要先打开文件(读取文件),再进行修改,其实并不然,我们可以直接修改文件内容而不需要打开文件。

举个例子:

使用root账户创建一个权限为200,所有者为user1的文件1.txt

[root@Ansible dir_test]# ls -l 1.txt
--w-------. 1 user1 user1 4 Nov 4 20:07 1.txt
[root@Ansible dir_test]# cat 1.txt
123

另一终端登录用户user1

[user1@Ansible dir_test]$ ls -l
total 4
--w-r--r--. 1 user1 user1 8 Nov 4 19:35 1.txt
[user1@Ansible dir_test]$ cat 1.txt
cat: 1.txt: Permission denied   #无权限读取
[user1@Ansible dir_test]$ echo 456 > 1.txt   #可以写入
[user1@Ansible dir_test]$ rm 1.txt
rm: cannot remove ‘1.txt’: Permission denied   #无法删除

对于文件的rwx来说,主要是针对文件的内容而言,与文件本身并没有关系!

2.权限对于目录的意义

  • r:可读取目录结构列表
  • w:可改动目录结构列表
    • 创建新的目录与文件
    • 删除已经存在的文件和目录
    • 文件或目录更名
    • 移动文件或目录
  • x:决定用户是否能进入该目录

关于目录的x权限,单独强调一下。

不管目录所有者拥有什么权限,只要没有x权限就不能进入该目录,或者说只要拥有x权限就能进入该目录。

举个例子:

使用root账户创建一个权限为600,所有者为user1的目录dir_test

[user1@Ansible ~]$ ls -ald dir_test/
drw-------. 2 user1 root 19 Nov 4 19:31 dir_test/
[user1@Ansible ~]$ cd dir_test/
-bash: cd: dir_test/: Permission denied   #不能进入

使用root账户将目录权限更改为100

[user1@Ansible ~]$ ls -ald dir_test/
d--x------. 2 user1 root 19 Nov 4 19:31 dir_test/
[user1@Ansible ~]$ cd dir_test/   #可以进入
[user1@Ansible dir_test]$

综合举个例子:

使用root账户创建一个目录dir_test,权限为744,所属用户为root;在此目录下新建一个文件,1.txt,权限为600,所属用户为user1;

[root@Ansible user1]# ls -ald dir_test/ dir_test/1.txt
drwxr--r--. 2 root root 19 Nov 4 19:31 dir_test/
--w-------. 1 user1 user1 4 Nov 4 20:10 dir_test/1.txt

另一终端登录用户user1

[user1@Ansible ~]$ ls -l dir_test/
ls: cannot access dir_test/1.txt: Permission denied
total 0
-????????? ? ? ? ? ? 1.txt
#由于目录dir_test,other用户具有读(r)权限,所以可以读取文件名,但是不具有x权限,所以会有一堆问号,即使你拥有文件权限。

如果此时目录dir_test属于user1,文件权限属于root,那么情况又是怎么样的?

[root@Ansible user1]# ls -ald dir_test/ dir_test/1.txt
drwxr--r--. 2 user1 root 19 Nov 4 19:31 dir_test/
--w-------. 1 root root 4 Nov 4 20:10 dir_test/1.txt
[user1@Ansible ~]$ cd dir_test/
[user1@Ansible dir_test]$ ls -l
total 4
--w-------. 1 root root 4 Nov 4 20:10 1.txt
[user1@Ansible dir_test]$ rm 1.txt
rm: remove write-protected regular file ‘1.txt’? y
[user1@Ansible dir_test]$

那么user1也可以删除文件,即使文件没有权限;所以说删除权限只和目录权限有关。


「 文章如果对你有帮助,请点个赞哦^^ 」 

3+