本文是《Linux 入门指南》的第七篇文章,以 Ubuntu 21.10 为例,介绍了 Linux 权限管理。

前言

Linux 对文件的权限有着严格的控制,某个用户想要对某个 文件/目录 执行某种操作,需要有相应的权限才能执行。

Linux 权限的级别分为:所有者(Owner)、所属群组(Group)、其他用户(Others),可以对不同的级别设置不同的权限。

Linux 权限的类型分为:Read(读)、Write(写)、Execute(执行),对应的符号分别是 r、w、x,对应的数字分别是 4、2、1。

Linux 通过 chmod 设置 文件/目录 的权限,通过 chown 设置 文件/目录 的 所有者/所属群组。

数字

Linux 通过 chmod 设置 文件/目录 的权限,通过 八进制数字 表示 文件/目录 的权限。

Linux 权限的级别分为:所有者(Owner)、所属群组(Group)、其他用户(Others),每个级别上的 八进制数字之和 表示该级别所拥有的权限。

数字 权限 符号
7 读+写+执行 rwx
6 读+写 rw-
5 读+执行 r-x
4 r--
3 写+执行 -wx
2 -w-
1 执行 --x
0 ---

符号

除了 八进制数字,Linux 还可以通过符号组合表示 文件/目录 的权限。

通过符号组合,对 文件/目录 增加、减少、重置权限。

符号 用户类型 描述
u user 文件/目录 的所有者
g group 文件/目录 的所属群组
o others 其他用户
a all 全部用户
操作符 描述
+ 对指定的用户类型增加权限
- 对指定的用户类型减少权限
= 对指定的用户类型重置权限
符号 权限 数字
r 4
w 2
x 执行 1
0

chmod(设置 文件/目录 的权限)

描述:

"change mode(改变模式)" 的缩写,设置 文件/目录 的权限。

普通用户无法设置权限,只有 root 用户和 文件/目录 的所有者才能设置权限。

用法:

      chmod [选项] [模式] [文件名]/[目录名]

选项:

      -c, --changes          类似 verbose 选项,但仅在做出修改时进行报告

  -f, --silent, --quiet      不显示大多数错误消息

  -v, --verbose              输出各个处理的文件的诊断信息

      --no-preserve-root     不特殊对待“/”(默认行为)

      --preserve-root        不允许在“/”上递归操作

      --reference=参考文件    使用参考文件的模式而非给定模式的值

  -R, --recursive            递归修改文件和目录

      --help		         显示此帮助信息并退出

      --version		         显示版本信息并退出

实例:

设置 文件/目录 的权限(文件 rat 的所有者增加可执行的权限)

chmod u+x rat

设置 文件/目录 的权限(文件 rat 的所有者、所属群组、其他用户都有读、写、执行的权限)

chmod 777 rat

设置 文件/目录 的权限(等同于 chmod 777 rat

chmod a=rwx rat

设置 文件/目录 的权限(文件 rat 的所有者有读、写、执行的权限,所属群组有读、执行的权限,其他用户有读的权限)

chmod 754 rat

设置 文件/目录 的权限(等同于 chmod 754 rat

chmod u=rwx,g=rx,o=r rat

chown(设置 文件/目录 的 所有者/所属群组 )

描述:

"change owner(改变所有者)" 的缩写,设置 文件/目录 的 所有者/所属群组。

普通用户无法设置 所有者/所属群组,只有 root 用户和 文件/目录 的所有者才能设置 所有者/所属群组。

用法:

      chown [选项] [用户名] [:用户组名] [文件名]/[目录名]

选项:

    -c, --changes                       类似 verbose 选项,但仅在做出修改时进行报告

  -f, --silent, --quiet                 不显示大多数错误消息

  -v, --verbose                         输出各个处理的文件的诊断信息

      --dereference                     影响每个符号链接的原始引用文件(这是默认行为),而非符号链接本身

  -h, --no-dereference                  只影响符号链接,而非被引用的任何文件(仅当系统支持更改符号链接的所有者时,该选项才有用)

      --from=当前所有者:当前所属组       只当每个文件的所有者和组符合选项所指定时才更改所有者和组。其中一个可以省略,这时已省略的属性就不需要符合原有的属性。

      --no-preserve-root                不特殊对待“/”(默认行为)

      --preserve-root                   不允许在“/”上递归操作

      --reference=<参考文件>             使用指定<参考文件>的所有者和所属组信息,而非手工指定 所有者:组 的值

  -R, --recursive                       递归操作文件和目录


以下选项是在指定了 -R 选项时被用于设置如何遍历目录结构体系。如果您指定了多于一个选项,那么只有最后一个会生效。


  -H                                    如果命令行参数是一个指向目录的符号链接,则对其进行遍历

  -L                                    遍历每一个遇到的指向目录的符号链接

  -P                                    不遍历任何符号链接(默认)

      --help		                    显示此帮助信息并退出

      --version		                    显示版本信息并退出


如果没有指定所有者,则不会更改所有者信息。若所属组若没有指定也不会对其更改,但当加上 ':' 时 GROUP 会更改为指定所有者的主要组。所有者和所属组可以是数字或名称。

实例:

设置 文件/目录 的所有者(文件 rat 的所有者 root→jianrry)

chown jianrry rat

设置 文件/目录 的所属群组(文件 rat 的所属群组 root→jianrry)

chown :jianrry rat

设置 文件/目录 的所有者和所属群组(文件 rat 的所有者 jianrry→root,所属群组 jianrry→root)

chown root:root rat