Re: [Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 CHUN ZHANG
谢谢!这个解释很清楚。


在 2012年12月17日下午3:13,huntxu 写道:

> On Mon, 17 Dec 2012 10:39:44 +0800, CHUN ZHANG 
> 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
>
-- 下一部分 --
一个HTML附件被移除...
URL: 

-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh


Re: [Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 huntxu

On Mon, 17 Dec 2012 10:39:44 +0800, CHUN ZHANG  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


Re: [Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 xb fs
具体点就是目录的x表示可搜索和可进入。文件的表示可执行。

MildC 编写:

>目录的x表示能cd进去
>文件的x表示能执行
>
>
>--  
>MildC
>
>
>On Sunday, 16 December, 2012 at 7:13 PM, CHUN ZHANG wrote:
>
>> 你的解释等于没解释
>>  
>>  
>> 在 2012年12月17日上午10:54,huntxu mailto:mhun...@gmail.com)>写道:
>>  
>> > On Mon, 17 Dec 2012 10:39:44 +0800, CHUN ZHANG > > (mailto:m...@zhang-chun.org)>
>> > wrote:
>> >  
>> > 最近备考需要系统的复习下Linux,在复习到inode/**block/权限等概念的时候,遇到了如下疑问:
>> > > 已知:
>> > > # 对于目录这种特殊文件来说,权限的意义是:
>> > > r:读取目录结构,就是可以获取目录下的文件名/**子目录名等数据,即可以用ls列出来。
>> > > w:更改目录结构,可以在目录下新增、删除文件、修改文件名、**子目录名等。
>> > > x:可以进入目录成为当前目录。
>> > > # 目录的结构数据存在block里,inode里只存放属性、**权限以及存放数据的block号。结合上面的权限,可知:
>> > > r:可以读取目录的block里的数据,**自然就可以获取目录的结构列表。
>> > > w:可以修改目录block里的数据,**自然就可以更改目录的结构。
>> > > x:我目前的理解貌似跟block没啥关系。
>> > >  
>> > > man chmod:
>> >  
>> > ...
>> > The letters rwxXst select file mode bits for the affected users: read (r),
>> > write (w), execute (or search for directories) (x), ...
>> >  
>> > 目錄的 x 與文件的 x 不一樣
>> >  
>> >  
>> > --
>> > regards,
>> > hunt
>> > --
>> > ubuntu-zh mailing list
>> > ubuntu-zh@lists.ubuntu.com (mailto:ubuntu-zh@lists.ubuntu.com)
>> > https://lists.ubuntu.com/**mailman/listinfo/ubuntu-zh
>> >  
>>  
>> -- 下一部分 --
>> 一个HTML附件被移除...
>> URL: 
>> 
>> --  
>> ubuntu-zh mailing list
>> ubuntu-zh@lists.ubuntu.com (mailto:ubuntu-zh@lists.ubuntu.com)
>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
>>  
>>  
>
>
>-- 下一部分 --
>一个HTML附件被移除...
>URL: 
>
>-- 
>ubuntu-zh mailing list
>ubuntu-zh@lists.ubuntu.com
>https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh


Re: [Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 CHUN ZHANG
你连我的疑问是什么都没看清楚吧。麻烦给别人解答问题時抱着负责任的态度好吧?


在 2012年12月17日下午12:06,MildC 写道:

> 目录的x表示能cd进去
> 文件的x表示能执行
>
>
> --
> MildC
>
>
> On Sunday, 16 December, 2012 at 7:13 PM, CHUN ZHANG wrote:
>
> > 你的解释等于没解释
> >
> >
> > 在 2012年12月17日上午10:54,huntxu mailto: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没啥关系。
> > > >
> > > > man chmod:
> > >
> > > ...
> > > The letters rwxXst select file mode bits for the affected users: read
> (r),
> > > write (w), execute (or search for directories) (x), ...
> > >
> > > 目錄的 x 與文件的 x 不一樣
> > >
> > >
> > > --
> > > regards,
> > > hunt
> > > --
> > > ubuntu-zh mailing list
> > > ubuntu-zh@lists.ubuntu.com (mailto: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/d8df41f3/attachment.html
> >
> > --
> > ubuntu-zh mailing list
> > ubuntu-zh@lists.ubuntu.com (mailto:ubuntu-zh@lists.ubuntu.com)
> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
> >
> >
>
>
> -- 下一部分 --
> 一个HTML附件被移除...
> URL: <
> https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20121216/d7f15237/attachment.html
> >
> --
> ubuntu-zh mailing list
> ubuntu-zh@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
>
-- 下一部分 --
一个HTML附件被移除...
URL: 

-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh


Re: [Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 MildC
目录的x表示能cd进去
文件的x表示能执行


--  
MildC


On Sunday, 16 December, 2012 at 7:13 PM, CHUN ZHANG wrote:

> 你的解释等于没解释
>  
>  
> 在 2012年12月17日上午10:54,huntxu mailto:mhun...@gmail.com)>写道:
>  
> > On Mon, 17 Dec 2012 10:39:44 +0800, CHUN ZHANG  > (mailto:m...@zhang-chun.org)>
> > wrote:
> >  
> > 最近备考需要系统的复习下Linux,在复习到inode/**block/权限等概念的时候,遇到了如下疑问:
> > > 已知:
> > > # 对于目录这种特殊文件来说,权限的意义是:
> > > r:读取目录结构,就是可以获取目录下的文件名/**子目录名等数据,即可以用ls列出来。
> > > w:更改目录结构,可以在目录下新增、删除文件、修改文件名、**子目录名等。
> > > x:可以进入目录成为当前目录。
> > > # 目录的结构数据存在block里,inode里只存放属性、**权限以及存放数据的block号。结合上面的权限,可知:
> > > r:可以读取目录的block里的数据,**自然就可以获取目录的结构列表。
> > > w:可以修改目录block里的数据,**自然就可以更改目录的结构。
> > > x:我目前的理解貌似跟block没啥关系。
> > >  
> > > man chmod:
> >  
> > ...
> > The letters rwxXst select file mode bits for the affected users: read (r),
> > write (w), execute (or search for directories) (x), ...
> >  
> > 目錄的 x 與文件的 x 不一樣
> >  
> >  
> > --
> > regards,
> > hunt
> > --
> > ubuntu-zh mailing list
> > ubuntu-zh@lists.ubuntu.com (mailto:ubuntu-zh@lists.ubuntu.com)
> > https://lists.ubuntu.com/**mailman/listinfo/ubuntu-zh
> >  
>  
> -- 下一部分 --
> 一个HTML附件被移除...
> URL: 
> 
> --  
> ubuntu-zh mailing list
> ubuntu-zh@lists.ubuntu.com (mailto:ubuntu-zh@lists.ubuntu.com)
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
>  
>  


-- 下一部分 --
一个HTML附件被移除...
URL: 

-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh


Re: [Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 CHUN ZHANG
你的解释等于没解释


在 2012年12月17日上午10:54,huntxu 写道:

> On Mon, 17 Dec 2012 10:39:44 +0800, CHUN ZHANG 
> wrote:
>
>  最近备考需要系统的复习下Linux,在复习到inode/**block/权限等概念的时候,遇到了如下疑问:
>> 已知:
>> # 对于目录这种特殊文件来说,权限的意义是:
>> r:读取目录结构,就是可以获取目录下的文件名/**子目录名等数据,即可以用ls列出来。
>> w:更改目录结构,可以在目录下新增、删除文件、修改文件名、**子目录名等。
>> x:可以进入目录成为当前目录。
>> # 目录的结构数据存在block里,inode里只存放属性、**权限以及存放数据的block号。结合上面的权限,可知:
>> r:可以读取目录的block里的数据,**自然就可以获取目录的结构列表。
>> w:可以修改目录block里的数据,**自然就可以更改目录的结构。
>> x:我目前的理解貌似跟block没啥关系。
>>
>>  man chmod:
>
> ...
> The letters rwxXst select file mode bits for the affected users: read (r),
> write (w), execute (or search for directories) (x), ...
>
> 目錄的 x 與文件的 x 不一樣
>
>
> --
> regards,
> hunt
> --
> ubuntu-zh mailing list
> ubuntu-zh@lists.ubuntu.com
> https://lists.ubuntu.com/**mailman/listinfo/ubuntu-zh
>
-- 下一部分 --
一个HTML附件被移除...
URL: 

-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh


Re: [Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 huntxu

On Mon, 17 Dec 2012 10:39:44 +0800, CHUN ZHANG  wrote:


最近备考需要系统的复习下Linux,在复习到inode/block/权限等概念的时候,遇到了如下疑问:
已知:
# 对于目录这种特殊文件来说,权限的意义是:
r:读取目录结构,就是可以获取目录下的文件名/子目录名等数据,即可以用ls列出来。
w:更改目录结构,可以在目录下新增、删除文件、修改文件名、子目录名等。
x:可以进入目录成为当前目录。
#  
目录的结构数据存在block里,inode里只存放属性、权限以及存放数据的block号。结合上面的权限,可知:

r:可以读取目录的block里的数据,自然就可以获取目录的结构列表。
w:可以修改目录block里的数据,自然就可以更改目录的结构。
x:我目前的理解貌似跟block没啥关系。


man chmod:

...
The letters rwxXst select file mode bits for the affected users: read (r),  
write (w), execute (or search for directories) (x), ...


目錄的 x 與文件的 x 不一樣


--
regards,
hunt
--
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh


[Ubuntu-zh] [Ubuntu-Zh] Linux目录树与inode/block权限的疑问

2012-12-16 文章 CHUN ZHANG
最近备考需要系统的复习下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能否成为当前目录的吗?跟读取里面的文件有啥关系呢?
-- 下一部分 --
一个HTML附件被移除...
URL: 

-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh