欢迎访问我们的Linux内核之旅:http://www.kerneltravel.net/
网站及本博客中的文章,允许在不改变内容的前提下对其以任何形式复制和重新刊登,但必须 附有版权信息,并声明出处。
释义Linux内核(7)-文件系统概述(2)
上一篇 /
下一篇 2007-07-14 09:32:12
/ 个人分类:释义Linux内核
查看( 2360 ) /
评论( 0 )
文件类型
Unix文件可以是下列类型之一:
· 普通文件(regular file)
· 目录(directory)
· 符号链(symbolic link)
· 面向块的设备文件(block-oriented device file)
· 面向字符的设备文件(character-oriented device file)
· 管道(pipe)和命名管道(named pipe)(也叫FIFO)
· 套接字(socket)
前三种文件类型是任何Unix 文件系统的基本类型。其实现将在第十七章详细讨论。
设备文件与I/O设备以及集成到内核中的设备驱动程序相关。例如,当程序访问设备文件时,它直接访问与那个文件相关的设备(参见第十三章)。
管道和套接字是用于进程间通信的特殊文件(参见本章后面的 “同步和临界区”一节以及第十八章)。QUOTE:
想想为什么物以类聚人以群分,就明白文件为什么以文件类型来划分。
文件描述符与索引节点
Unix将文件的内容和描述文件的信息给出清楚的区分。除了设备文件和特殊文件,每个文件都由字符序列组成。文件内容不包含任何控制信息,如文件长度或文件结束符(EOF)。
文件系统处理文件需要的所有信息包含在一个叫做索引节点(inode)的数据结构中。每个文件都有自己的inode,文件系统用inode来标识文件。QUOTE:
所谓的索引节点,其实就是存放文件属性的地方,就像描述任何一个对象的属性一样
虽然文件系统及内核函数对inode的处理可能随Unix系统的不同有很大的差异,但它们必须至少提供在POSIX标准中指定的如下属性:
· 文件类型(参见前一节)。
· 与文件相关的硬链接个数。
· 以字节为单位的文件长度。
· 设备标识符(即包含文件所在设备的标识符)。
· 在文件系统中标识文件的inode号。
· 文件拥有者的UID。
· 文件的GID。
· 几个时间标记,表示inode状态改变的时间、最后访问时间及最后修改时间。
· 访问权限和文件模式(参见下一节)。QUOTE:
描述一个对象什么样的属性,因所处的环境决定而已
访问权限和文件模式
文件潜在的用户分为三种类型:
· 作为文件所有者的用户。
· 同组用户,不包括所有者。
· 所有剩下的用户(其他)。
QUOTE:
这种划分方法你同意吗,若不?你有什么好的建议?
有三种类型的访问权限:读、写及执行,每组用户都有这三种权限。因此,文件访问权限的组合就用九种不同的二进制来标记。还有三种附加的标记,即suid (Set User ID), sgid (Set Group ID),及sticky(用来定义文件模式)。当这些标记应用到可执行文件时有如下含义:
suid
进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件suid的标志位,进程就获得了该文件拥有者的UID。
sgid
进程执行一个文件时保持进程组的GID。然而,如果设置了可执行文件sgid的标志位,进程就获得了该文件组的ID。
sticky
设置了sticky 标志位的可执行文件相当于向内核发出一个请求,当程序执行结束以后,依然将它保留在内存(注9)。
当文件由一个进程创建时,文件拥有者的ID就是该进程的UID。而其组ID可以是进程创建者的GID,也可以是父目录的GID,这取决于父目录sgid标志位的值。
QUOTE:
Unix文件设计者,设计这几种标记的真正目的是什么?
[url=#_ftnref1]注[/url]9:这个标志已经过时,现在使用基于代码页共享的其他方法(参见第七章)。
[
本帖最后由 陈莉君 于 2007-7-14 09:13 编辑 ]
论坛模式
推荐
收藏
分享给好友
管理
TAG: