目录权限

[oracle@localhost ~]$ lsb_release  -a 
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.7 (Final)
Release: 6.7
Codename: Final

Linux中目录权限十分重要, 往往一点的疏忽会造成错误。

首先用root用户在公共可用的目录tmp下建目录a,然后再建文件b:
[root@localhost ~]# cd /tmp 
[root@localhost tmp]# mkdir a 
[root@localhost tmp]# chmod  700 a    赋予权限700
[root@localhost tmp]# cd a   
[root@localhost a]# touch  b 
[root@localhost a]# chmod 700 b        赋予文件权限是700

此时切换到oracle用户,但是oracle用户不在root用户组

[root@localhost a]# su - oracle 
[oracle@localhost tmp]$ id oracle 
uid=501(oracle) gid=503(oinstall) 组=503(oinstall),502(dba)
[oracle@localhost ~]$ cd /tmp 
[oracle@localhost tmp]$ cd a 
-bash: cd: a: 权限不够
[oracle@localhost tmp]$ ls  -al a     此时oracle用户不能进入目录a,和我们预想的一样
ls: 无法打开目录a: 权限不够


[oracle@localhost tmp]$ exit
logout
[root@localhost a]# cd ..  
[root@localhost tmp]# chmod 704 a      此时切换到root用户并授予该目录704权限
[root@localhost tmp]# su - oracle 
[oracle@localhost ~]$ cd /tmp
[oracle@localhost tmp]$ ls -al a      此时oracle用户还是对该目录没有访问权限
ls: 无法访问a/b: 权限不够                          
ls: 无法访问a/..: 权限不够
ls: 无法访问a/.: 权限不够
总用量 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..             但是可以罗列出该目录下文件的目录名字 ,其他内容都是?????表示
-????????? ? ? ? ?            ? b



[root@localhost tmp]# chmod 706 a            切换到root授予a706权限
[root@localhost tmp]# exit
logout
[root@localhost 桌面]# su - oracle 
[oracle@localhost ~]$ cd /tmp 
[oracle@localhost tmp]$ ls  -al   a/         此时还是无法进入目录a
ls: 无法访问a/b: 权限不够
ls: 无法访问a/..: 权限不够
ls: 无法访问a/.: 权限不够
总用量 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? b



root@localhost 桌面]# cd /tmp           
[root@localhost tmp]# chmod  705  a     此时授予a 705权限,可以进入该目录,说明进入该目录必须有X权限
[root@localhost tmp]# su - oracle 
[oracle@localhost ~]$ ls -al /tmp/a/
总用量 8
drwx---r-x.  2 root root 4096 9月  13 13:02 .
drwxrwxrwt. 29 root root 4096 9月  13 13:22 ..
-rwx------.  1 root root    0 9月  13 13:02 b


[root@localhost tmp]# chmod 703 /tmp/a          此时授予703权限,不能进入
[root@localhost tmp]# su - oracle 
[oracle@localhost ~]$ ls  -al /tmp/a/
ls: 无法打开目录/tmp/a/: 权限不够

从上面总结一下:
r (read contents in directory):

表示具有读取目录结构列表的权限,所以当你具有读取一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!


w (modify contents of directory):
这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:
建立新的文件与目录;
删除已经存在的文件与目录(不论该文件的权限为何!)
将已存在的文件或目录进行更名;
搬移该目录内的文件、目录位置。

x (access directory):

目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途!如果在某目录下不具有x的权限, 那么就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r的权限。

你可能感兴趣的:(目录权限)