购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3.3 用户与文件的关系

文件在Linux系统中的权限等级非常严格,在日常的维护中,通常需要对这些文件进行操作,而文件的操作离不开来自用户的权限。接下来将对系统的文件类型、文件权限与用户和组的关系以及文件权限的应用管理进行介绍。

1.系统的文件类型

Linux系统提供一种通用的文件处理方式,它将所有的软件、硬件都视为文件来管理,并将映射成文件的不同物理设备放在层次相同或不同的目录下,再通过文件的方式来管理所有的设备,从而简化对物理设备的管理和访问。

Linux系统中的一切设备都被映射成不同类型的文件,并按照一定的组织结构分布在系统的各个层次中,比较常见的文件类型有普通文件、目录文件、字符设备文件、块设备文件和符号链接文件等。接下来对这些文件进行介绍。

(1)普通文件

普通文件是一种出现在路径末端且不能继续往下延伸的文件,这种文件是以“_”为标识的文本文件和二进制文件,是Linux系统下最为常见、数量最多的文件,系统大多数的配置文件、代码文件都是以普通文件的形式存在的。

(2)目录文件

目录文件通常称为目录,根目录是所有目录和文件的起点,系统中所有的目录都是根目录的子目录。

目录是一种特殊类型的文件,包括一系列文件名及信息节点号。目录的标识符是“d”,每个目录中都包含两个特殊的目录,即父目录(以“..”来表示)和当前目录(以“.”来表示)。当前目录也称工作目录,是登录到系统的字符界面所处的目录,而父目录则是当前目录的上层目录。

(3)链接文件

链接文件分为硬链接文件和软链接文件两类。

硬链接是指源文件名与链接文件名指向相同的物理地址,硬链接文件不能跨文件系统(不能跨越不同的分区),主要作用是防止不必要的误删除,原因是删除文件时,该文件要在同一个索引节点且属于唯一的链接才被删除。

软链接又称符号链接,是一种以“l”为标识符,采用不同的文件名引用同一数据或程序的文件(类似于快捷方式),这类文件本身并未保存数据,只是占用一个索引节点,以及拥有属于自己的索引节点编号。软链接文件的最大好处是能够确保目录文件结构的兼容性,实现在不改变原有目录结构或文件位置的情况下指向任何路径。

(4)特殊文件

特殊文件包括块设备文件、套接字文件、字符设备文件及命名管道文件,这类文件不包含任何数据,而是提供一种用于在文件系统中建立一个物理设备与文件名之间映射的机制,系统必须支持每个设备且每个设备至少与一个特殊的文件相关联。

系统利用特殊文件作为用户与I/O设备间的接口,使用户能够像读写普通文件一样通过打开、读写的方式来实现对外部设备的I/O处理。另外,还有/dev/null设备,这是一个被称为“黑洞”的空设备文件,任何进入该设备的数据都被“吞并”且基本读不出来。

对特殊设备与标识符的说明如下:

●c:表示字符设备文件。

●b:表示块设备文件。

●p:表示管道文件。

●s:表示套接字文件。

2.文件权限与用户和组的关系

Linux系统具有非常严格的权限等级,这种严格的权限等级的一种体现就是对文件的控制。系统通过文件的可读(r,对应数值是4)、可写(w,对应数值是2)和可执行(x,对应数值是1)来限制用户对文件的操作。

关于文件的权限,先了解文件的基本组成。通常,每个文件由7部分组成,通过这7部分的信息可以了解文件的类型、权限组成、链接数、文件所属的用户和组、文件的大小、文件创建的日期和文件的名称,具体的相关说明如下:

其中,文件中的“rw-r--x--”和“root ytuser”是接下来重点介绍的内容。

对于“rw-r--r--”,实际上是由“rw-”“r--”和“x--”三部分组成的,它们分别对应用户、同组用户和其他组用户的权限,无论是哪种类型的用户,他们对文件拥有的权限都可以是w、r和x三类,但也可以没有(权限为空时使用“_”来表示,此时权限数值用0来表示)。

用户以u来表示,是指文件的所有者(root用户);同组用户以g来表示,是指与root在同一个组的用户(ytuser组);其他用户以o来表示,是指既不属于root用户,也与root不在一个组的用户(不属于ytuser组)。

3.文件权限的应用管理

文件的权限决定用户是否能够对其进行编辑,但在日常的管理工作中,有时需要对文件的权限、所属用户和组进行更改,否则会影响系统的正常运行。

更改文件的权限、所属用户和组可使用chmod和chown命令,在更改时可以使用权限的字符,也可以使用数值,先通过简单的例子来说明。


[root@centos-8 ~]# chmod +x anaconda-ks.cfg 
[root@centos-8 ~]# chmod o+x anaconda-ks.cfg 
[root@centos-8 ~]# chmod -x anaconda-ks.cfg

以上命令中,“+”是授权,“?”是取消权限。其中,“+x”是给文件的全部用户添加可执行权,“o+x”是给文件中的同组用户添加可执行权,“?x”是把文件的全部可执行权取消。

另外,还存在一种比较常见的文件授权操作,即使用数值来表示权限符号,如下:


[root@centos-8 ~]# chmod 603 anaconda-ks.cfg

其中,603中的每个数字代表一个组的权限值,其中6表示4+2(r+w),它是u的权限值;0表示没有权限,即g没有权限值;3表示2+1(w+x),它是o的权限值。

chown命令用于更改文件的用户和组,先看以下例子:


[root@centos-8 ~]# chown ytuser.ytgroup postgresql

该命令中将postgresql的用户和组更改为ytuser和ytgroup。当然,前提是用户和组要存在。

关于这两个命令,chmod命令在编程中常用于授权给脚本可执行权限,而chown命令常用于更改文件的用户和组。另外,chown命令在更改目录的用户和组时常使用-R选项来实现递归式的权限更改,示例如下: H2pnS4fkmdSVoNMHLM5EjlTUgaoH391EPj5d5juHQ8huWpkf0KT8Ff7BVqqiXwjO


[root@centos-8 ~]# chown -R ytuser.ytgroup postgresql

点击中间区域
呼出菜单
上一章
目录
下一章
×