1-2_基本概念_用户和组&目录、链接及文件
用户
系统的每个用户都拥有唯一的登录名(用户名)和与之相对应的整数型用户ID(UID)。系统密码文件/etc/passwd为每个用户都定义有一行记录,除了上述两项信息外,该记录还包含如下信息:
1、组ID:用户所属第一个组的整数型组ID
2、主目录:用户登录后所居于的初始目录
3、登录shell:执行以解释用户命令的程序名称。
该记录还能以加密形式保存用户密码。然而,出于安全考虑,用户密码往往存储于单独的shadow密码文件中,仅供特权用户阅读。
组
出于管理目的,尤其是为了控制对文件和其他资源的访问,将多个用户分组是非常实用的做法。每个用户组都对应着系统组文件/etc/group中的一行记录,该记录包含如下信息:
1、组名:(唯一的)组名称
2、组ID(GID):与组相关的整数型ID。
3、用户列表:隶属于该组的用户登录名列表(通过密码文件记录的group ID字段未能标识出的该组其他成员,也在此列),以逗号分隔。
超级用户
超级用户在系统中享有特权。超级用户账号的用户ID为0,通常登录名为root。超级用户凌驾于系统的权限检查之上。因此,无论对文件施以何种访问权限限制,超级用户都可以访问系统中的任何文件,也能发送信号干预系统运行的所有用户进程。系统管理员可以使用超级用户账号来执行各种系统管理任务。
文件类型
在文件系统内,会对文件类型进行标记,以表示其种类。其中一种来表示普通数据文件,人们常称之为“普通文件”或“纯文本文件”,以表示与其他种类的文件有所区别。其他文件类型包括设备、管道、套接字、目录以及符号链接。
术语“文件”常用来指代任意类型的文件,不仅仅指普通文件。
路径和链接
目录是一种特殊类型的文件,内容采用表格形式,数据项包括文件名以及对相应文件的引用。这一“文件名+引用”的组合被称为链接。每隔文件都可以有多条连接,因此也可以有多个名称,在相同或不同的目录中出现。
目录可包含指向文件或其他目录的链接。每个目录至少包含两条记录:.和..,前者是指向目录自身的链接,后者是指向其上级目录——父目录的链接。除根目录外,每个目录都有父目录。对于根目录而言,..是指向根目录自身的链接。
符号链接
类似于普通链接,符号链接给文件起了一个“别号(alternative name)”。在目录列表中,普通链接内容为“文件名+指针”的一条记录,而符号链接则是经过特殊标记的文件,内容包含了另一文件的名称。
通常,人们会分别使用硬链接(hard link)或软连接(soft link)这样的术语来指代正常连接和符号链接。
路径名
路径名是由一系列文件名组成的字符串,彼此以“/”分隔,首字符可以为“/”(非强制)。
除却最后一个文件名外,该系列文件名均为目录名称(或为之项目路的符号链接)。路径名的尾部可以标识任意类型的文件,包括路在内。有时将字符串中最后一个“/”字符之前的部分称为路径名的目录部分,将其之后的部分称为路径名的文件部分或基础部分。
绝对路径名:以“/”开始,指明文件相对于根目录的位置。
相对路径名:定义了相对于进程当前工作目录的文件位置,与绝对路径名相比,相对路径名缺少了起始的“/”。
当前工作目录
每个进程都有一个当前工作目录(有时简称为进程工作目录或当前目录)。这就是当根目录层级下进程的“当前位置”,也是进程解释相对路径名的参照点。
进程的当前工作目录继承自其父进程。对登录shell来说,其初始当前工作目录,是依据密码文件中该组用户记录的主目录字段来设置。可使用cd命令来改变shell的当前工作目录。
文件的所有权和权限
每个文件都有一个与之相关的用户ID和组ID,分别定义文件的属主和属组。系统根据文件的所有权来判定用户对文件的访问权限。
为了访问文件,系统把用户分成3类:文件的属主(有时,也称为文件的用户)、与文件组(group)ID相匹配的属组成员用户以及其他用户。