在Linux文件系统模型中,每个文件都有一组9个权限位(rwxrwxrwx)用来控制谁能够读写和执行该文件的内容。普通文件大家都了解,这里说说目录的情况。
r : 读权限,浏览目录下文件及子目录的权限
w : 写权限,增加、更新、删除目录内文件的权限
x : 执行权限,进入目录的权限
对于目录来说,x执行位的作用是控制能否进入或者通过该目录,而不是控制能否列出它的内容。r读取位和x执行位的组合的作用才是控制是否列出目录中的内容。w写入位和x执行位的组合则是允许在目录中创建,删除,修改和重命名文件。
linux系统创建一个新目录
[tu11@kvm98036 ~]$ mkdir test
[tu11@kvm98036 ~]$ ll
总用量 4
drwxrwxr-x 2 tu11 tu11 4096 1月 10 14:45 test
[tu11@kvm98036 ~]$ cd test/
[tu11@kvm98036 test]$
权限信息中有10个字符,第一个是标记不同类型
第1位:d表示是目录;- 表示文件;字母l 表示链接
第2~4权限位:文件所有者的权限
第5~7权限位:与文件所有者同一组的用户的权限
第8~10权限位:不与文件所有者同组的其他用户的权限
新目录默认是都有x的权限,也就是任何用户都可进入目录。
尝试把所有者的x权限去掉,看看还能进入目录吗?
[tu11@kvm98036 ~]$ chmod u-x test/
[tu11@kvm98036 ~]$ cd test/
-bash: cd: test/: Permission denied
[tu11@kvm98036 ~]$ ll
总用量 4
drw-rwxr-x 2 tu11 tu11 4096 1月 10 14:45 test
[tu11@kvm98036 ~]$ ll test/
ls: cannot access test/old.file: Permission denied
total 0
-????????? ? ? ? ? ? old.file
[tu11@kvm98036 ~]$ touch test/a
touch: cannot touch 'test/a': Permission denied
[tu11@kvm98036 ~]$
rwx变成rw-之后没有了x执行权限,所有者tu11也无法进入目录,无法在目录里创建文件(在目录里创建文件也需要透过目录),也无法查看目录中的内容。
如果要对目录中的内容进行读r/写w,必须和x执行权限配合使用。
总结下,给目录赋权限,需要和x配合使用
想读取目录内的内容:rx
想更新目录内的内容:wx