对于文件,rwx三种权限的功能分别为读取文档(复制)、写入文档和执行程序。对于目录而言,rwx三种权限的功能有所不同,具体如下:
r:允许ls命令显示目录下的内容。
w:允许在目录下创建、修改和删除子目录或文件,要求同时有x权限。
x:允许使用cd命令进入目录。
r-x:允许进入目录,但是不能创建、修改和删除目录中的文件或子目录
rwx:允许进入目录,同时能够创建、修改和删除目录中的文件或子目录
可参考如下实验加以验证,下面的实验使用普通用户zhang对其家目录/home/zhang下的test目录进行测试。首先创建zhang用户,再切换至zhang用户,然后在其家目录中创建test目录,最后在该目录中创建t01.txt、t02.txt和t03.txt三个空文件,操作步骤如下:
[root@host01 ~]# useradd zhang
[root@host01 ~]# su - zhang
[zhang@host01 ~]$ mkdir test
[zhang@host01 ~]$ cd test
[zhang@host01 test]$ touch t01.txt t02.txt t03.txt
[zhang@host01 test]$ ls -l
total 0
-rw-rw-r-- 1 zhang zhang 0 Dec 25 10:35 t01.txt
-rw-rw-r-- 1 zhang zhang 0 Dec 25 10:35 t02.txt
-rw-rw-r-- 1 zhang zhang 0 Dec 25 10:35 t03.txt
实验1:zhang用户对test目录仅有r权限场景
操作步骤如下所示:
[zhang@host01 ~]$ pwd
/home/zhang
[zhang@host01 ~]$ chmod u=r test
[zhang@host01 ~]$ ls -dl test
dr--rwxr-x 2 zhang zhang 4096 Dec 25 10:35 test
尝试进入test目录:
[zhang@host01 ~]$ cd test
-bash: cd: test: Permission denied
可见zhang用户不能进入test目录,然后尝试列出test目录中的内容,操作步骤如下:
[zhang@host01 ~]$ ls test
ls: cannot access test/t03.txt: Permission denied
ls: cannot access test/t02.txt: Permission denied
ls: cannot access test/t01.txt: Permission denied
t01.txt t02.txt t03.txt
可见zhang用户仅可以看到目录中的文件,即t01.txt、t02.txt和t03.txt,但是系统提示“Permission denied”,即不可以访问这些文件。
实验2:zhang用户对test目录仅有x权限场景
操作步骤如下所示:
[zhang@host01 ~]$ pwd
/home/zhang
[zhang@host01 ~]$ chmod u=x test
[zhang@host01 ~]$ ls -ld test
d--xrwxr-x 2 zhang zhang 4096 Dec 25 10:35 test
尝试进入test目录:
[zhang@host01 ~]$ cd test
可见zhang用户能够进入test目录,然后尝试列出test目录中的内容,操作步骤如下:
[zhang@host01 test]$ ls
ls: cannot open directory .: Permission denied
可见zhang用户虽然能够进入test目录,但不可以看到目录中的文件。
实验3:zhang用户对test目录仅有w权限场景
操作步骤如下所示:
[zhang@host01 ~]$ pwd
/home/zhang
[zhang@host01 ~]$ chmod u=w test
[zhang@host01 ~]$ ls -ld test
d-w-rwxr-x 2 zhang zhang 4096 Dec 25 10:35 test
尝试进入test目录和列出该目录中的内容:
[zhang@host01 ~]$ cd test
-bash: cd: test: Permission denied
[zhang@host01 ~]$ ls test
ls: cannot open directory test: Permission denied
可见zhang用户不能够进入test目录,也不可以列出test目录中的内容,然后尝试在test目录中创建文件t04.txt,操作步骤如下:
[zhang@host01 ~]$ touch test/t04.txt
touch: cannot touch ‘test/t04.txt’: Permission denied
可见仅有w权限时,zhang用户不可以在test目录中创建文件,此时给test目录添加x权限,然后再次创建文件t04.txt,操作步骤如下:
[zhang@host01 ~]$ chmod u+x test
[zhang@host01 ~]$ ls -ld test
d-wxrwxr-x 2 zhang zhang 4096 Dec 25 10:35 test
[zhang@host01 ~]$ touch test/t04.txt
可见当目录同时具有w和x权限时,用户张就可以执行创建新文件t04.txt命令了,系统没有报错,只是当前不可以列出目录中的内容看不到创建的结果,如下所示:
[zhang@host01 ~]$ ls test
ls: cannot open directory test: Permission denied
此时,将r权限也授予test目录,然后查看目录中的内容,操作步骤如下:
[zhang@host01 ~]$ chmod u+r test
[zhang@host01 ~]$ ls -ld test
drwxrwxr-x 2 zhang zhang 4096 Dec 25 11:08 test
[zhang@host01 ~]$ ls test
t01.txt t02.txt t03.txt t04.txt
现在就可以看到刚才创建的新文件t04.txt了。当一个用户对一个目录同时具有r、w和x权限时,该用户就可以完全控制此目录了,可以在目录中创建、修改和删除文件。至于该用户能否查看、复制或修改文件的内容要看该用户对于文件是否有读或写的权限,如果都没有用户就无法查看或修改文件的内容,但是此时该用户确可以将此文件删除。
实验4:zhang用户对test目录仅有r和x权限场景
操作步骤如下所示:
[zhang@host01 ~]$ chmod u=rx test
[zhang@host01 ~]$ ls -ld test
dr-xrwxr-x 2 zhang zhang 4096 Dec 25 11:08 test
然后尝试进入test目录并列出目录中的内容,操作步骤如下:
[zhang@host01 ~]$ cd test
[zhang@host01 test]$ ls
t01.txt t02.txt t03.txt t04.txt
可见在同时具有r和x权限时,zhang用户可以顺利地进入目录并能够列出文件中的内容,但是由于没有w权限,zhang用户不可以在test目录中创建,修改和删除文件,测试操作步骤如下所示:
[zhang@host01 test]$ pwd
/home/zhang/test
[zhang@host01 test]$ mkdir abc
mkdir: cannot create directory ‘abc’: Permission denied
[zhang@host01 test]$ touch t05.txt
touch: cannot touch ‘t05.txt’: Permission denied
[zhang@host01 test]$ rm t04.txt
rm: cannot remove ‘t04.txt’: Permission denied
[zhang@host01 test]$ mv t04.txt t04.txt.bak
mv: cannot move ‘t04.txt’ to ‘t04.txt.bak’: Permission denied
可见没有当没有w权限时,zhang用户新建目录、新建文件、删除文件、文件改名等相关操作都不可以做。