文件是有名字的一组相关信息的集合,在Linux 系统中,文件的准确定义是不包含有任何其他结构的字符流。通俗地说,就是文件中的字符与字符之间除了同属于一个文件之外,不存在任何其他的关系。文件中字符的关系,是由使用文件的应用程序来建立和解释的。
每一个文件都具有特定的属性。Linux 系统的文件属性比较复杂,主要包括文件类型和文件权限两个方面。
1.文件类型
Linux下的文件可以分为5 种不同的类型。它们是普通文件、目录文件、链接文件、设备文件和管道文件。下面给出它们的具体介绍。
(1)普通文件
普通文件也称正规文件,是最常见的一类文件,也是最常使用到的一类文件。其特点是不包含有文件系统的结构信息。通常所接触到的文件,包括图形文件、数据文件、文档文件、声音文件等等都属于普通文件。这种类型的文件按其内部结构又可细分为两个文件类型:文本文件和二进制文件。
文本文件:文本文件是以字符(通常是ASCII 码)表示的,是以行为基本结构的信息存储方式。
二进制文件:二进制文件是按信息在内存中的格式表示的,它通常不能直接查看,而必须使用相应的软件。
(2)目录文件
目录文件是用于存放文件名及其相关信息的文件。是内核组织文件系统的基本节点。目录文件可以包含下一级目录文件或普通文件。
注:在Linux 中,目录文件是一种文件。但Linux 的目录文件和其他操作系统中的“目录”的概念不同,它是Linux 文件的一种。当然,在实际使用时也可以不仔细区分这两种说法,甚至在本书的具体叙述中,有时就将目录文件简称为目录,但要注意它们在概念上的不同。
(3)链接文件
链接文件是一种特殊的文件。它实际上是指向一个真实存在的文件的链接。比如用户要在一个目录文件中使用其他目录文件下的文件时,并不需要将其复制过来,而只需在此目录中建立一个链接文件指向所要调用的文件。在具体使用时,并不会感觉到它们有什么不同。根据链接对象的不同,链接文件又可以细分为硬链接文件和符号链接文件。
(4)设备文件
设备文件是Linux 中最特殊的文件。正是由于它的存在,使得Linux 系统可以十分方便的访问外部设备。Linux 系统为外部设备提供一种标准接口,将外部设备视为一种特殊的文件。用户可以像访问普通文件一样访问外部设备。这就使Linux 系统可以很方便的适应不断发展的外部设备。通常Linux 系统将设备文件放在/dev 目录下。设备文件使用设备的主设备号和次设备号来指定某外部设备。主设备号用于说明设备类型,次设备号用于说明具体设备。例如,以IDE 硬盘为第一主盘,它的第三个分区的设备文件就是/dev/hda3。其中hd 是主设备号,a3 是次设备号。根据访问数据方式的不同,设备文件又可以细分为两种类型:块设备文件和字符设备文件。
块设备文件:块设备文件是以固定长度的块访问数据的。
字符设备文件:字符设备文件是以指定字符(通常是一个字符)访问数据的。
大多数外部设备都提供两种访问方式。但对每一种设备来说,都有其最佳的访问方式。
注:在设备文件中有一个极其特殊的文件/dev/null。所有放入这一设备的数据都将不再存在。
可以将它看成是删除操作。
(5)管道文件
管道文件也是一种很特殊的文件。主要用于不同进程间的信息传递。当两个进程间需要进行数据或信息传递时,可以通过管道文件。一个进程将需传递的数据或信息写入管道的一端,另一进程则从管道的另一端取得所需的数据或信息。通常管道是建立在高速缓存中的。采用先进先出的规定处理其中的数据。可以细分为有名管道和无名管道两种。
2.文件权限
Linux系统是一个典型的多用户系统,不同的用户处于不同的地位。为了保护系统的安全性,Linux 系统对不同用户访问同一文件的权限做了不同的规定。对于一个Linux 系统中的文件来说,它的权限可以分为三种:读的权限、写的权限和执行的权限。分别用r、w 和x 表示。不同的用户具有不同的读、写和执行权限。对于一个文件来说,它都有一个特定的所有者,也就是对文件具有所有权的用户。同时,由于在Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。所以文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此Linux 系统按文件所有者、文件所有者同组用户和其他用户三类规定不同的文件访问权限。