Linux文件系统(Ext2)以及 目录与文件的权限意义

一、文件系统(Ext2)

文件系统通常会将权限、属性与实际数据分别存放在不同的块,权限与属性放置在inode中,实际数据则放置在data block块中。另外,还有一个超级快(super block)会记录整个文件的整体信息,包括inode与block的总量、使用量、剩余量等。

 super block:记录文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。

 inode:记录文件权限与属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码。

block:实际记录文件的内容,若文件太大时,会占用多个block。

data block(数据块)

data block是用来放置文件内容的地方,在Ext2文件系统中所支持的block大小有1KB、2KB、4KB三种,在格式化时block的大小就固定了,且每个block都有编号,以方便inode的记录。由于block大小的区别,会导致该文件系统能够支持的最大磁盘容量与最大单一文件容量并不相同。

原则上,block的大小与数量在格式化完就不能够再改变了(除非重新格式化);

每个block内最多只能放置一个文件的数据;

承上,如果文件大于block的大小,则一个文件会占用多个block数量;

承上,如果文件小于block的大小,则该block的剩余空间就不能再被使用了(磁盘空间会浪费)。

inode table (inode表格 )

  inode记录的文件数据至少有下面这些:

  • 该文件的访问模式(read/write/excute);
  • 该文件的所有者与组(owner/group);
  • 该文件的大小;
  • 该文件创建或状态改变的时间(ctime);
  • 最近一次的读取时间(atime);
  • 最近修改的时间(mtime);
  • 定义文件特性的标志(flag),如SetUID等;
  • 该文件真正内容的指向(pointer);

inode数量与大小也是在格式化时就已经固定了:

  • 每个inode大小均固定为128bytes;
  • 每个文件都仅会占用一个inode而已;
  • 承上,因此文件系统能够创建的文件数量与inode数量有关;
  • 系统读取文件时需要先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能够开始实际读取block的内容。

二、目录与文件

 目录:在Linux下的ext2文件系统新建一个目录时,ext2会分配一个inode与至少一块block给该目录。其中,inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;而block则是记录在这个目录下的文件名与该文件名占用的inode号码数据。

 文件:在Linux下的ext2新建一个一般文件时,ext2会分配一个inode与相对于该文件大小的block数量给该文件。

目录树:文件名的记录是在目录的block当中,因此新增、删除、重命名文件名与目录的w权限有关。因为文件名是记录在目录的block当中,因此当我们要读取某个文件时,就务必会经过目录的inode与block,然后才能够找到那个待读取文件的inode号码,最终才会读到正确的文件的block内的数据。

三、目录与文件的权限意义

 1、文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件等。因此权限对文件来说,它的意义如下:

  r:可读取此文件的实际内容,如读取文本文件的文字内容等;

  w:可编辑、新增或者是修改该文件的内容(但不含删除文件);

  x:该文件具有被系统执行的权限;

  对于文件的r、w、x来说,主要都是针对“文件的内容”而言,与文件名的存在与否没有关系的,因为文件记录的是实际的数据。

2、权限对于目录的重要性

  文件是存放实际数据的所在,目录主要的内容是记录文件名列表,文件名与目录有强烈的关联。

  r(read contents in directory) :表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以你可以利用ls这个命令将该目录的内容列显示出来。

 w(modify contents of directory):它表示你具有更改该目录结构列表的权限,也就是下面这些权限:

  1. 新建新的文件与目录
  2. 删除已经存在的文件与目录(不论该文件的权限为何)
  3. 将已存在的文件或目录进行重命名
  4. 转移该目录内的文件、目录位置

     总之,目录的w权限就与该目录下面的文件名变动有关就对了。

 x(access directory) :目录的x代表的是用户能否进入该目录成为工作目录的用途,所谓的工作目录(work directory)就是你目前所在目录。可以使用命令cd切换到该目录下。

*  能不能进入某目录下,只与该目录的x权限有关,此外,工作目录对于命令的执行时非常重要的,如果你在某目录下不具有x的权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你具有该目录的r权限。

 * 要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给。

你可能感兴趣的:(Linux)