文章目录
引入
在Linux操作系统中,我们想查看我们对文件拥有哪些权限时,可以在终端键入ls -l
或ll
命令,终端会输出当前路径下的文件信息,如文件名称、权限信息、文件所有者和所属组等信息。例如:
图中类似 -rw-r--r--
的字符串清晰地展示了对应文件的权限信息,包括用户、组和其他用户的读、写和执行权限。因此,理解这些权限的含义以及如何进行管理,我们就可以通过控制文件的访问权限来确保数据的安全性和完整性。
Linux文件权限模型
Linux系统中的文件权限主要分为三种:读取(Read)、写入(Write)、执行(Execute) 。每个文件都有一个所有者,称为用户(User) ,用户对其文件拥有特定的权限,能够决定其他人(Others)可以访问或修改这些文件;用户也可以被组织成组,组内的成员可以共享特定的文件访问权限,每个用户可以属于一个或多个用户组(Group)。
每种类型的用户都有读(r)、写(w)和执行(x)三种文件权限。文件所有者是创建文件或目录的用户,拥有完全的控制权;文件所属组是一组用户的集合,共享相同的权限;其他用户则是系统中除文件所有者和所属组之外的所有用户。
查看文件权限
我们可以使用ls -l
或ll
命令查看文件和目录的详细信息,包括文件权限:
-
查看指定文件
file.txt
的详细信息:shellls -l file.txt
-
使用
ls -l
命令查看当前目录下所有文件的信息:shellls -l
-
使用
ll
命令查看当前目录下所有文件的信息:shellll
权限信息解析
Linux系统文件的读取、写入、执行三种权限分别使用r
,w
,x
表示:
权限类型 | 符号表示 | 描述 |
---|---|---|
读取 | r |
允许用户查看文件内容或列出目录中的文件 |
写入 | w |
允许用户修改文件内容或在目录中添加、删除文件 |
执行 | x |
允许用户执行文件(如果是可执行程序)或访问目录 |
Linux 使用10位字符表示文件的权限信息:
第1位用于标识文件类型(如普通文件、目录);后9位表示文件权限,分为三组,每组三个字符,从左到右依次对应所有者、用户组及其他用户对文件所拥有的操作权限。详细解析对应如下表:
下标 | 含义 | 值 | 说明 |
---|---|---|---|
1 | 文件类型 | - | d | l |
文件类型(- :普通文件,d :目录,l :符号链接) |
2 | 所有者权限 | r | - |
r :所有者拥有读取权限;- :所有者无读取权限 |
3 | 所有者权限 | w | - |
w :所有者拥有写入权限;- :所有者无写入权限 |
4 | 所有者权限 | x | - |
x :所有者拥有执行权限;- :所有者无执行权限 |
5 | 组用户权限 | r | - |
r :组用户拥有读取权限;- :组用户无读取权限 |
6 | 组用户权限 | w | - |
w :组用户拥有写入权限;- :组用户无写入权限 |
7 | 组用户权限 | x | - |
x :组用户拥有执行权限;- :组用户无执行权限 |
8 | 其他用户权限 | r | - |
r :其他用户拥有读取权限;- :其他用户无读取权限 |
9 | 其他用户权限 | w | - |
w :其他用户拥有写入权限;- :其他用户无写入权限 |
10 | 其他用户权限 | x | - |
x :其他用户拥有执行权限;- :其他用户无执行权限 |
执行 ll
命令后,终端输出结果的格式通常如下:
从左到右,这一行信息可以分解为以下几个部分:
属性 | 值 | 说明 |
---|---|---|
文件类型和权限 | -rw-rw-rw- |
表示这是一个普通文件,拥有读、写、执行权限 |
硬链接数 | 1 |
表示链接到该文件的硬链接数量为1 |
文件所有者 | root |
表示文件的创建者或所有者为 root 用户 |
文件所属组 | root |
表示与该文件关联的用户组为 root 组 |
文件大小 | 664 |
以字节为单位显示文件的大小 |
最后修改时间 | 10月 8 14:06 |
表示文件最后一次修改的日期和时间 |
文件名 | compara_card.sh |
表示该文件的名称为compara_card.sh |
上述示例中的 -rw-rw-rw-
的含义如下:
- 第一个字符
-
表示这是一个普通文件(如果是d
则表示目录)。 - 接下来的三个字符
rw-
表示文件所有者的权限:r
表示可读,w
表示可写,-
表示没有执行权限。 - 中间的三个字符
rw-
表示同组用户的权限,意义与所有者相同。 - 最后三个字符
rw-
表示其他用户的权限,也同样表示可读和可写,但没有执行权限。
即该文件允许所有用户读取和写入,但不允许执行。
修改文件权限
Linux 修改文件和目录的权限需要使用 chmod
命令。而权限的设置有两种方式:符号模式 、八进制数字模式。
符号模式
符号模式使用用户类型(u、g、o、a)和权限(r、w、x)来修改文件和目录的权限,格式为:
bash
chmod [ugoa][+-=][rwx] file
-
[ugoa]:用户类别
用户类型 符号表示 说明 所有者 u
文件的创建者 用户组 g
与文件所有者同组的用户 其他用户 o
不属于文件所有者或同组用户的所有其他用户 所有用户 a
u, g, o 的组合,即系统中的所有用户 -
[±=]:操作符
操作符 描述 +
增加权限 -
删除权限 =
设置权限(仅指定的权限有效) -
[rwx]:权限类型
符号表示 描述 r
读取权限 w
写入权限 x
执行权限
修改用户权限示例如下:
-
给文件所有者增加执行权限:
bashchmod u+x file
-
从同组用户中删除写权限:
bashchmod g-w file
-
将其他用户的权限设置为只读:
chmod o=r file
八进制数字模式
八进制数字模式的权限数值由三位八进制数字组成,每位分别代表不同的用户类别。即:
- 第一位:文件所有者的权限
- 第二位:同组用户的权限
- 第三位:其他用户的权限
每一位八进制数字又拆分为三个二进制数字表示对应的权限(r、w、x),三位二进制数字可以表示不同的权限组合:
权限组合 | 二进制 | 八进制 | 权限描述 |
---|---|---|---|
无权限 | 000 | 0 | 不允许任何操作 |
只执行(x) | 001 | 1 | 仅允许执行 |
只写(w) | 010 | 2 | 仅允许修改 |
写+执行(wx) | 011 | 3 | 允许修改和执行 |
只读(r) | 100 | 4 | 仅允许读取 |
读+执行(rx) | 101 | 5 | 允许读取和执行 |
读+写(rw) | 110 | 6 | 允许读取和修改 |
读+写+执行(rwx) | 111 | 7 | 允许读取、修改和执行 |
例如,运行以下命令将权限设置为754
:
bash
chmod 754 example.txt
- 第一位
7
(二进制111
):文件所有者具有读、写和执行权限。 - 第二位
5
(二进制101
):同组用户具有读和执行权限。 - 第三位
4
(二进制100
):其他用户具有读权限。