谢谢!这个解释很清楚。

在 2012年12月17日下午3:13,huntxu <mhun...@gmail.com>写道:

> On Mon, 17 Dec 2012 10:39:44 +0800, CHUN ZHANG <m...@zhang-chun.org>
> wrote:
>
>  最近备考需要系统的复习下Linux,在复习到inode/**block/权限等概念的时候,遇到了如下疑问:
>> 已知:
>> # 对于目录这种特殊文件来说,权限的意义是:
>> r:读取目录结构,就是可以获取目录下的文件名/**子目录名等数据,即可以用ls列出来。
>> w:更改目录结构,可以在目录下新增、删除文件、修改文件名、**子目录名等。
>> x:可以进入目录成为当前目录。
>> # 目录的结构数据存在block里,inode里只存放属性、**权限以及存放数据的block号。结合上面的权限,可知:
>> r:可以读取目录的block里的数据,**自然就可以获取目录的结构列表。
>> w:可以修改目录block里的数据,**自然就可以更改目录的结构。
>> x:我目前的理解貌似跟block没啥关系。
>>
>> 但我的疑问就来了,为啥我把一个dir的权限设置的只剩下x,**还能读取目录里一个文件的内容?
>> i@laptop:/tmp/study$ ls -li ./ ./dir/
>> ./:
>> total 4
>> 659970 drwxr-xr-x 2 i i 4096 Dec 17 10:14 dir
>>
>> ./dir/:
>> total 4
>> 659971 -rw-r--r-- 1 i i 6 Dec 17 10:14 file
>> i@laptop:/tmp/study$ cat dir/file
>> 12345
>> i@laptop:/tmp/study$ chmod a=x dir/
>> i@laptop:/tmp/study$ ls -li ./ ./dir/
>> ./:
>> total 4
>> 659970 d--x--x--x 2 i i 4096 Dec 17 10:14 dir
>> ls: cannot open directory ./dir/: Permission denied
>> i@laptop:/tmp/study$ cat dir/file
>> 12345
>>
>> 按理说dir的r权限去掉了,根据目录树读取的顺序,**先用inode到inode表里取出了dir的权限,**
>> 发现没有r,就没法去block里读数据了啊。
>> 更奇怪的是,我把x也去掉,才不能读文件:
>> i@laptop:/tmp/study$ chmod a= dir/
>> i@laptop:/tmp/study$ ls -li ./ ./dir/
>> ./:
>> total 4
>> 659970 d--------- 2 i i 4096 Dec 17 10:14 dir
>> ls: cannot open directory ./dir/: Permission denied
>> i@laptop:/tmp/study$ cat dir/file
>> cat: dir/file: Permission denied
>>
>> 真是百思不得其解,**这个x不是只控制dir能否成为当前目录的吗?**跟读取里面的文件有啥关系呢?
>>
>
> 這麽理解是有偏差的,r 位控制的是讀權限,對應的系統調用是 read(), opendir(), readdir(),而通常所說的
> x 位控制 dir 能否成為工作目錄的原因是 chdir() 調用需要對應 dir 有 x 權限。
>
> 除此之外,x 權限還控制另外一個系統調用 stat(),stat() 用以獲取文件 inode 中的信息(open/delete 之前),
> 并且 stat() 需要文件所在的路徑上所有目錄都有 x 權限,通常叫做 search permission,就和 man chmod 中的
> 說法一致。
>
> 所以你要打開一個文件,或者刪除一個文件,**必須要求它所在的目錄有 x 權限。
> 而目錄的 r 權限,只在你需要列出目錄內容的時候才需要,**與能否讀取該目錄下的文件無關。
>
>
> --
> regards,
> hunt
> --
> ubuntu-zh mailing list
> ubuntu-zh@lists.ubuntu.com
> https://lists.ubuntu.com/**mailman/listinfo/ubuntu-zh<https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh>
>
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: 
<https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20121217/89a8063b/attachment.html>
-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh

回复