linux目录权限中,r(浏览目录)和x(进入目录)的区别?

您所在的位置:网站首页 什么是CD-R linux目录权限中,r(浏览目录)和x(进入目录)的区别?

linux目录权限中,r(浏览目录)和x(进入目录)的区别?

#linux目录权限中,r(浏览目录)和x(进入目录)的区别?| 来源: 网络整理| 查看: 265

首先说目录的r和w。

1,linux下,目录是文件,这种文件的特殊在于,他的格式是固定的,既,存的是我这个目录下到底有哪些文件和子目录,可以把他的数据看成一个list结构,r的意思是目录这个文件可读,你想,什么程序需要读目录这个文件?没错,ls这样的命令需要,其实ls,就是读取了目录这个文件,把他做成某种美观的格式给你看而已,和cat意思是一样的。

2,目录的w权限顾名思义,就是修改目录这个文件,你想,什么操作需要直接修改目录这个文件?没错,就是给文件改名、删除文件和子目录这些操作。

3,目录的x权限是难点,其实他就是个开关。比如我们读取一个文件:

/test1/test2/test3/file1

并不是说,我们有file1的r权限,就可以读文件了,而是在这条路径上的任何目录,你都必须打开x这个开关,你才可以读file1。

可以想象,他是为了方便系统管理的,否则你为了避免file1、file2、file3等被访问,你就必须逐个消除r权限,这个太累了,而且很可能某个时间,你又想给他们r或者w权限。

有了x,就简单了,直接在file1的上层目录上除掉x权限,整个目录都不能被访问了。

严格意义上来说,x权限的意思是“询问这个目录是否存在”的权利。

你打开x,你可以cd进入这个目录,什么是cd?cd其实不是文件的权限,linux为每个进程设置一个属性,叫工作目录(working directory)。意思是,当进程操作文件时,只给了文件名,没给路径,那么,实际文件的路径就是:工作目录+文件名,可见,工作目录是为了方便编程而设置的一个功能。他不是实际的文件的某种权限。

但是,cd命令会检查这个目录是否存在,因为目录不存在,你设为工作目录,没有意义。所以,为了cd不管这个目录下的文件我们是否有权限,但是我们首先要有询问这个目录是否存在的权利,也就是打开x。

但是为什么关闭目录的x,目录下的文件都不能访问了呢?同理,你访问任何一个文件,你都要询问这个文件路径上的任何目录是否存在,不存在,当然不能访问。所以,我们关闭x,即便文件存在而且我们有读写权利,由于文件的上层目录,我们连询问是否存在的权利都没有,自然不管文件我们是否有权利,我们都无法访问。

P.S. linux文件权限设计很晦涩,正交不明显。但很难说linux的文件权限设计,是否是个败笔。毕竟suid, sgid, sticky bit,这些特殊的处理,都不是ken thompson本人设计的,而是和所有软件开发一样,在后记的使用中,发现了一些需求,逐步加入的:

The setuid bit was invented by

Dennis Ritchie[8]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3