本文是《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