【一】文件类型
在 Linux 系统中,文件是用户频繁访问的重要资源,学习 Linux 的人常说“Linux 系统中的一切皆文件”。那么,在 Linux 系统中,文件是如何分类的呢?在 Linux 系统中,文件主要分为两大类:普通文件和特殊文件。普通文件主要包括可执行文件、文本文件、网页文件等。特殊文件则包括目录文件、链接文件、块设备文件、字符设备文件、管道文件和安全套接字文件。可以通过 `ls` 命令查看指定目录下的文件信息,其中第一列的信息表示文件类型,如图所示:
文件类型的含义如表所示:
首字符 | 文件类型 | 说明 |
- | 普通文件 | 文本文件、网页文件、可执行文件 |
d | 目录文件 | 文件夹或目录 |
l | 链接文件 | 软链接,相当于 Windows 的快捷方式 |
b | 块设备文件 | 指硬盘或光驱 |
c | 字符设备文件 | 虚拟终端 |
p | 管道文件 | 实现进程间通信的文件 |
s | 套接字文件 | 用于网络通信的介质文件 |
【二】文件权限
在 Linux 系统中,通过设置文件权限来限制用户对系统资源的访问,文件的权限决定了用户是否可以操作该文件,从而提高了系统的安全性。Linux 对文件权限的划分主要有三种,即读、写、执行。由于文件的权限与用户相关,所以在 Linux 系统中,文件权限按照属主、属组和其他用户进行控制。文件的读、写权限比较容易理解,这里重点介绍执行权限。对于文件来说,执行权限是最高权限。为用户或用户组设置权限时,是否赋予执行权限需要慎重考虑,否则会对系统安全造成严重影响。如果设置的对象是目录,给目录赋予读权限仅允许用户查看目录结构,但无法正常进入目录,必须赋予执行权限,才能正常使用该目录。
通常,一个用户可以访问自己创建的目录或文件,也可以访问同组用户共享的文件或目录,但不能访问非同组用户的文件。超级管理员 root 用户则没有这些限制,因此在使用 root 用户操作各种资源时需要特别小心。
【三】查看文件权限
查看某个文件的权限,可以通过 `ls` 命令显示文件列表,在列表中有详细的文件权限信息。使用 root 用户登录,在 root 用户的主目录显示文件列表,如图所示:
第一列显示的是文件类型,第二至第十列显示的是文件权限。文件列表的每一行的前十个字符显示的是文件类型和文件权限。如何正确解读文件权限,如表所示:
列值 | 内容 | 说明 |
第1列 | - | 普通文件 |
第2~4列 | rw- | 对 root 用户可读、可写、不可执行 |
第5~7列 | --- | 对 root 组不可读、不可写、不可执行 |
第8~10列 | --- | 对其他用户不可读、不可写、不可执行 |
【四】操作文件权限
由于权限既可以限制用户,也可以限制文件,因此修改文件的访问权限时,要么修改用户的权限,要么修改文件的属性。与此相关的命令主要有三个,分别是 `chmod` 命令,用于设置文件的访问权限;`chown` 命令,用于更改文件拥有者;`chgrp` 命令,用于更改文件所属组。
在该语法中,选项参数有四个取值,如表所示:
选项值 | 说明 |
-c | 若该文件权限确实已经更改,则显示其更改动作 |
-f | 若该文件权限无法被更改,则不显示错误信息 |
-v | 显示权限变更的详细信息 |
-R | 对当前目录下的所有文件与子目录进行相同的权限变更 |
在该语法中,模式参数主要有三类,分别是用户类型符号、操作符号和权限符号,其取值说明如以下表格所示:
①用户类型符号取值说明:
用户类型符号 | 说明 |
u | User,文件所有者 |
g | Group,文件所有者所在组 |
o | Others,所有其他用户 |
a | All,所有用户,相当于 ugo |
②操作符符号取值说明:
操作符 | 说明 |
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 重新设置用户类型的所有权限 |
③权限符号取值说明:
权限符号 | 说明 |
r | 设置为可读权限 |
w | 设置为可写权限 |
x | 设置为可执行权限 |
X | 如果是目录和文件,或者其他类型的用户有可执行权限时,才将文件权限设置为可执行 |
s | 当文件被执行时,根据指定的用户类型设置文件的 setuid 或者 setgid 权限 |
t | 将粘贴位进行设置是超级用户的权限,并且只有文件的所有者u才有权利使用该位。 |
使用 `chmod` 命令时,可以通过八进制数来定义权限。文件或目录的权限位由9个权限位组成,每3个位一组,如表所示:
权限数值 | 权限说明 |
7 | rwx = 读 + 写 + 执行 |
6 | rw- = 读 + 写 |
5 | r-x = 读 + 执行 |
4 | r-- = 只读 |
3 | -wx = 写 + 执行 |
2 | -w- = 只写 |
1 | --x = 只执行 |
0 | --- = 无权限 |
【例】设置文件权限为所有用户都可读取:
进入root用户的主目录,以root用户主目录下的 `anaconda-ks.cfg` 文件为例,通过参数 `a=r` 设置文件用户权限,使所有用户都能读取该文件。具体操作如图所示,可以看到权限设置前后的变化。
【例】设置多个文件的权限组合:
进入root用户的主目录,设置文件 `mrkj_3` 和 `mrkj_5` 的所有者和同组用户可执行,但其他用户组无法执行。当为多个用户组设置不同权限时,使用逗号分隔。具体操作如图所示:
【例】使用数字设定法设置权限:
进入root用户的主目录,设置文件 `mrkj_5` 的权限为所有人可读、可写、可执行,具体操作如图所示: