Linux文件系统inode、block解释权限(三)

  利用文件系统的inode和block来分析文件(目录)的权限问题。

  1. 为什么读取一个文件还要看该文件路径所有目录的权限?
  2. 为什么目录的w权限具有删除文件的能力,而文件w权限不行。

  inode:记录文件的属性,一个文件占用一个inode,同时记录了文件数据所在的block号码。Ext3文件系统inode大小为128B,Ext4文件系统inode大小为256B。

  block:记录了文件的内容,若文件太大会占用多个bolck块。一般大小为1k、2k、4k。

inode和block在文件系统里,均用号码标示。

如下:

hang@hang:/home$ ll -i
总用量 20
#inode号 #文件大小,这里是一个4k的block块的大小
24641537 drwxr-xr-x 5 root root 4096 11月 27 19:19 ./ 2 drwxr-xr-x 24 root root 4096 11月 26 19:55 ../ 24641538 drwxr-xr-x 23 hang hang 4096 11月 28 13:47 hang/ 24642065 drwxr-xr-x 2 zncu zncu 4096 11月 25 20:47 zncu/ 24647652 drwxrws--- 2 root znha 4096 11月 27 20:54 znha/

其他更多的文件系统相关不在介绍,总之inode记录了文件/目录的权限和block号码,block记录了文件的实际内容、目录下的文件名以及这些文件名的inode号

例子:想要读取/etc/passwd,经过了哪些流程。

root@hang:/# ll -di /  /etc  /etc/passwd
       2 drwxr-xr-x  24 root root  4096 11月 26 19:55 //
17301505 drwxr-xr-x 131 root root 12288 11月 27 13:18 /etc/
17304397 -rw-r--r--   1 root root  2350 11月 26 20:08 /etc/passwd

1./的inode: 通过挂载点信息,找到/目录的inode号(2),且该inode具有rwx权限,我们可以读取inode号(2)所记录的block块内容。

2./的block:  在/目录的block内容里找etc/目录的inode号(17301505)

3./etc的inode: /etc的inode(17301505)具有rwx权限,我们可以读取/etc的block块的具体内容。

4./etc的block: 在block块里找到passwd文件的inode(17304397)。

5.passwd的inode: 根据passwd文件的inode(17304397)得知具有读取权限。

6.passwd的block: 根据inode(173044397)所记录的block块读取passwd的具体内容。

可以看到,从根目录一步一步到passwd需要验证每一个目录的权限,如果其中一个目录不具有相应权限,那么这个操作就会失败,如果无法进入/etc目录,何谈读取passwd文件。

也可以得知为什么文件的删除等操作是被目录的w权限控制的,因为w权限可以具有修改block块的能力,目录的block记录了文件名和文件inode,删除文件就是block块存储的文件名和inode,而文件的block记录的是文件具体内容,所以w权限是对文件内容的修改,而不具备删除文件等权限。

 http://www.cnblogs.com/yuhanghzsd/p/6109513.html

posted @ 2016-11-28 14:51  夜の魅  阅读(2016)  评论(0编辑  收藏  举报