拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限。且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。
一、权限对于目录的意义
1、首先要明白的是目录主要的内容是记录文件名列表和子目录列表,而不是实际存放数据的地方。
2、r权限:拥有此权限表示可以读取目录结构列表,也就是说可以查看目录下的文件名和子目录名,注意:仅仅指的是名字。
3、w权限:拥有此权限表示具有更改该目录结构列表的权限,总之,目录的w权限与该目录下的文件名或子目录名的变动有关,注意:指的是名字。具体如下:
1)在该目录下新建新的文件或子目录。
2)删除该目录下已经存在的文件或子目录(不论该文件或子目录的权限如何),注意:这点很重要,用户能否删除一个文件或目录,看的是该用户是否具有该文件或目录所在的目录的w权限(配合x权限,因为要进入目录)。
3)将该目录下已经存在的文件或子目录进行重命名。
4)转移该目录内的文件或子目录的位置。
4、x权限:拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限。且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。
二、权限对于文件的意义
1、也应该明白的是文件是实际含有数据的地方,所以r、w、x权限对文件来说是与其内容有关的。
2、r权限:用于此权限表示可以读取此文件的实际内容。
3、w权限:拥有此权限表示可以编辑、添加或者是修改该文件的内容。但是不包含删除该文件,因为由上面权限对于目录的意义得知删除文件或目录的条件是什么。
4、x权限:表示该文件具有可以被系统执行的权限。文件是否能被执行就是由该权限来决定的,跟文件名没有绝对的关系。
要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给!
因为:如果A用户对某文件没有任何权限,但是对该文件所在目录拥有w权限的话,那么A用户依然可以删除该文件。
三、测试部分:
用户能否进入一个目录只与x权限有关:
[root@master /]# ll
total 28
-rw-r--r--. 1 root root 0 Mar 16 11:49 1
lrwxrwxrwx. 1 root root 7 Mar 16 11:43 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Mar 16 12:05 boot
drwxr-xr-x. 20 root root 3280 Mar 23 14:32 dev
drwxr-xr-x. 138 root root 8192 Mar 23 14:32 etc
drwxr-xr-x. 9 root root 104 Mar 19 10:57 home
lrwxrwxrwx. 1 root root 7 Mar 16 11:43 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Mar 16 11:43 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Nov 5 11:38 media
drwxr-xr-x. 2 root root 6 Nov 5 11:38 mnt
drwxr-xr-x. 4 root root 28 Mar 17 03:27 opt
dr-xr-xr-x. 181 root root 0 Mar 23 14:31 proc
dr-xr-x---. 7 root root 4096 Mar 23 14:35 root
drwxr-xr-x. 38 root root 1140 Mar 23 14:32 run
lrwxrwxrwx. 1 root root 8 Mar 16 11:43 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 5 11:38 srv
dr-xr-xr-x. 13 root root 0 Mar 23 14:31 sys
drwxr-x--x. 3 root root 16 Mar 23 11:41 testperm
drwxrwxrwt. 42 root root 4096 Mar 23 14:38 tmp
drwxr-xr-x. 13 root root 155 Mar 16 11:43 usr
drwxr-xr-x. 21 root root 4096 Mar 23 14:31 var
[hdfs@master /]$ ls testperm
ls: cannot open directory testperm: Permission denied
[hdfs@master /]$ cd testperm
[hdfs@master testperm]$
只有r权限时,不能进入目录,只能使用ls命令得知目录下的文件和文件夹列表,仅限于名字
[root@master /]# ll
total 28
-rw-r--r--. 1 root root 0 Mar 16 11:49 1
lrwxrwxrwx. 1 root root 7 Mar 16 11:43 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Mar 16 12:05 boot
drwxr-xr-x. 20 root root 3280 Mar 23 14:32 dev
drwxr-xr-x. 138 root root 8192 Mar 23 14:32 etc
drwxr-xr-x. 9 root root 104 Mar 19 10:57 home
lrwxrwxrwx. 1 root root 7 Mar 16 11:43 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Mar 16 11:43 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Nov 5 11:38 media
drwxr-xr-x. 2 root root 6 Nov 5 11:38 mnt
drwxr-xr-x. 4 root root 28 Mar 17 03:27 opt
dr-xr-xr-x. 182 root root 0 Mar 23 14:31 proc
dr-xr-x---. 7 root root 4096 Mar 23 14:35 root
drwxr-xr-x. 38 root root 1140 Mar 23 14:32 run
lrwxrwxrwx. 1 root root 8 Mar 16 11:43 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Nov 5 11:38 srv
dr-xr-xr-x. 13 root root 0 Mar 23 14:31 sys
drwxr-xr--. 3 root root 16 Mar 23 11:41 testperm
drwxrwxrwt. 42 root root 4096 Mar 23 14:40 tmp
drwxr-xr-x. 13 root root 155 Mar 16 11:43 usr
drwxr-xr-x. 21 root root 4096 Mar 23 14:31 var
[hdfs@master /]$ cd testperm
bash: cd: testperm: Permission denied
[hdfs@master /]$ ls testperm
ls: cannot access testperm/d1: Permission denied
ls: cannot access testperm/a.txt: Permission denied
a.txt d1
为其他用户组赋予rx权限后,发现删除其中的文件或目录都失败,尽管拥有对文件或目录的w权限:
[hdfs@master testperm]$ ll
total 0
-rw-r--rw-. 1 root root 0 Mar 23 14:55 a.txt
drwxrwxrwx. 2 hdfs hdfs 6 Mar 23 11:41 d1
[hdfs@master testperm]$ rm a.txt
rm: cannot remove ‘a.txt’: Permission denied
[hdfs@master /]$ rm -r testperm/d1
rm: cannot remove ‘testperm/d1’: Permission denied
当对目录赋予w权限后,即使用户对其中的文件没有w权限,依然可以删除文件:
[hdfs@master testperm2]$ rm 1.txt
rm: remove write-protected regular empty file ‘1.txt’?
[hdfs@master testperm2]$ rm -f 1.txt
[hdfs@master testperm2]$