第396集用户权限-Linux系统基本权限
用户权限 - Linux系统基本权限
1. 权限概述
Linux中的文件或目录的权限和用户及用户组关联很大,Linux中每个文件或目录都有一组共9个基础权限位,每三个字符被分为一组,他们分别是属主权限位(占三个字符)、属组权限位(占三个字符)、其他用户权限位(占三个字符)
比如rwxr-xr-x,linux中正是这9个权限位来控制文件属主(User)、属组(Group)、其他用户(Other)基础权限。
1.1 用户对资源的三种角色
| 角色 | 符号 | 说明 |
|---|---|---|
| User(u) | 属主用户 | 文件所有者 |
| Group(g) | 属组用户 | 包含组成员 |
| Other(o) | 匿名用户 | 其他人 |
1.2 用户访问文件流程
一个用户访问文件流程如下:
- 判断用户是否为文件的所有者,如果是,按所有者的权限进行访问
- 判断是否为文件的所有组成员,如果是,就按组的权限去访问
- 最终用户就是文件的其他的人,按其他人的权限去访问
1 | rwx, rwx, r-x |
1.3 权限与属主属组
文件权限对应表:
如果权限位不可读、不可写、不可执行,则用-来表示。
| 权限 | 符号 | 二进制 | 八进制 |
|---|---|---|---|
| 读 | r | 100 | 4 |
| 写 | w | 010 | 2 |
| 执行 | x | 001 | 1 |
| 无权限 | - | 000 | 0 |
权限组合:
| 权限组合 | 二进制 | 八进制 | 说明 |
|---|---|---|---|
| rwx | 111 | 7 | 读、写、执行 |
| rw- | 110 | 6 | 读、写 |
| r-x | 101 | 5 | 读、执行 |
| r– | 100 | 4 | 只读 |
| -wx | 011 | 3 | 写、执行 |
| -w- | 010 | 2 | 只写 |
| –x | 001 | 1 | 只执行 |
| — | 000 | 0 | 无权限 |
1.4 权限与属主属组作用示例
- chown: Linux中用来改变某个文件属主的命令, 如漫画中所示, 将某个”资源”(门)的访问权限给予别人。(卖房)
- chmod: Linux中用来改变某个文件的访问模式的命令, 如漫画中所示, chmod 777会将大门敞开, 谁都可以进出。(租房)
2. 权限修改命令chmod
chmod用于修改文件目录权限rwx,-R参数可以级联修改。
2.1 chmod命令语法
1 | chmod [选项] 权限 文件/目录 |
2.2 chmod权限设置方式
方式1: 数字方式
1 | chmod 777 dir/ # 修改dir目录权限为777 |
方式2: 字符方式
1 | # 添加权限 |
2.3 chmod示例
示例1: 修改目录权限
1 | mkdir dir # 建立目录 |
示例2: 修改文件权限
1 | touch dir/file # 建立文件 |
示例3: 递归修改权限
1 | chmod -R 766 dir/ # 修改目录及子目录权限 |
2.4 chmod常用选项
| 选项 | 功能 |
|---|---|
-R |
递归修改目录及子目录权限 |
-v |
显示详细过程 |
-c |
只显示被修改的文件 |
3. 属主属组修改命令chown
chown用于更改属主以及属组,-R参数可以级联修改。
3.1 chown命令语法
1 | chown [选项] 属主:属组 文件/目录 |
3.2 chown示例
示例1: 修改所属主
1 | mkdir dir # 创建目录 |
示例2: 修改所属组
1 | chown .adm dir/ # 修改所属组为adm |
示例3: 同时修改属主和属组
1 | touch dir/file_test # 创建文件 |
3.3 chown常用选项
| 选项 | 功能 |
|---|---|
-R |
递归修改目录及子目录 |
-v |
显示详细过程 |
-c |
只显示被修改的文件 |
4. 基础权限设置案例
4.1 文件权限实验案例
实验环境准备
1 | # 默认文件匿名用户仅有读权限 |
测试读权限
1 | # 测试读权限(无法执行或删除) |
增加执行权限
1 | # 增加x执行权限 |
增加写权限
1 | # 增加w执行权限 |
4.2 rwx对文件的影响
读取权限(r)
文件只有r权限: 具有读取\阅读文件内容权限
可以执行的操作:
- 能使用查看类命令
cat、head、tail、less、more
不能执行的操作:
- 不能复制、不能移动、不能编辑,不能删除
写入权限(w)
如果文件只有w权限: 具有新增、修改文件内容的权限
可以执行的操作:
- 使用
vim编辑会提示权限拒绝, 但可强制保存,会覆盖文件的所有内容 - 使用
echo、cat命令重定向或追加重定向技术可以往文件内写入数据
不能执行的操作:
- 不能复制、不能移动、不能删除,(删除需要看上级目录w的权限)
执行权限(x)
文件只有x权限,具有执行文件的权限。
注意: 普通用户需要有r权限,管理员不需要
不能执行的操作:
- 不能执行、查看、编辑、复制、移动、删除
4.3 目录权限实验案例
实战案例1: 对目录没有w,对文件有rwx
1 | [root@liyanzhao ~]# mkdir /dirname |
结论: 即使文件有rwx权限,如果目录没有w权限,也无法删除文件。
实战案例2: 对目录有w,对文件没有任何权限
1 | [root@liyanzhao ~]# chmod 777 /dirname/ |
结论: 如果目录有w权限, 可以在目录内创建文件, 删除文件(跟文件本身权限无关)。
4.4 rwx对目录的影响
读取权限(r)
目录只有r权限: 具有浏览目录及子目录权限
可以执行的操作:
- 能使用
ls命令浏览目录及子目录, 同时会提示权限拒绝 - 能使用
ls -l命令浏览目录及子目录, 会带问号,同时只能看到文件名
总结: 目录只有r权限,仅仅只能浏览内的文件名,无其他操作权限
写入权限(w)
如果目录只有w权限: 具有增加、删除或修改目录内文件名权限(需要x配合)
注意: 如果目录有w权限, 可以在目录内创建文件, 删除文件(跟文件本身权限无关)
不能执行的操作:
- 不能进入目录、不能复制目录、不能删除目录、不能移动目录
执行权限(x)
目录只有x权限
可以执行的操作:
- 只能进入目录
不能执行的操作:
- 不能浏览、复制、移动、删除
5. 权限小结
5.1 文件权限总结
| 权限组合 | 说明 | 可执行操作 |
|---|---|---|
| rw | 读、写 | 可以查看和编辑文件内容 |
| rx | 读、执行 | 只能查看和执行文件、不能编辑、复制、移动、删除 |
| r | 只读 | 只能查看文件内容 |
| w | 只写 | 可以写入,但需要配合其他权限 |
| x | 只执行 | 可以执行,但普通用户需要r权限 |
5.2 目录权限总结
| 权限组合 | 说明 | 可执行操作 |
|---|---|---|
| rx | 读、执行 | 允许浏览目录内文件以及子目录、并允许在目录内新建文件, 不允许创建、删除文件和目录 |
| rwx | 读、写、执行 | 完全控制,可以浏览、创建、删除文件 |
| r | 只读 | 只能浏览文件名,无其他操作 |
| w | 只写 | 需要配合x权限使用 |
| x | 只执行 | 只能进入目录 |
5.3 注意事项
文件权限:
- x权限小心给予,建议赋予r或rw即可
- 可执行文件才需要x权限
目录权限:
- w权限小心给予,建议无特殊需求赋予rx即可
- 目录通常需要rx权限才能正常使用
6. 实战实验
6.1 实验需求
- 创建andy,alice用户为ateam组, 用户统一使用password为密码
- 要求ateam组的成员可以访问
/home/ateam-text目录, 并且可以在目录下创建,删除文件 - 在目录下andy创建的文件可以让alice修改
6.2 实验步骤
步骤1: 创建用户和组
1 | # 创建ateam组 |
步骤2: 创建共享目录
1 | # 创建共享目录 |
步骤3: 设置SGID位(可选,确保新建文件属于ateam组)
1 | # 设置SGID位,确保在目录下创建的文件属于ateam组 |
步骤4: 测试权限
测试1: andy创建文件
1 | # 切换到andy用户 |
测试2: alice修改andy创建的文件
1 | # 切换到alice用户 |
测试3: alice创建和删除文件
1 | # alice创建文件 |
步骤5: 优化配置(确保文件可被组内成员修改)
如果希望ateam组成员创建的文件默认可以被其他组成员修改,可以设置umask:
1 | # 在/etc/profile或~/.bashrc中添加 |
6.3 完整实验脚本
1 |
|
7. 权限最佳实践
7.1 文件权限建议
| 文件类型 | 建议权限 | 说明 |
|---|---|---|
| 配置文件 | 644 (rw-r–r–) | 所有者可读写,其他用户只读 |
| 可执行文件 | 755 (rwxr-xr-x) | 所有者可执行,其他用户可执行 |
| 脚本文件 | 755 (rwxr-xr-x) | 需要执行权限 |
| 日志文件 | 644 (rw-r–r–) | 所有者可读写 |
| 敏感文件 | 600 (rw——-) | 只有所有者可读写 |
7.2 目录权限建议
| 目录类型 | 建议权限 | 说明 |
|---|---|---|
| 用户家目录 | 755 (rwxr-xr-x) | 所有者完全控制,其他用户可进入 |
| 共享目录 | 775 (rwxrwxr-x) | 组内成员可读写 |
| 临时目录 | 777 (rwxrwxrwx) | 所有用户可读写(谨慎使用) |
| 系统目录 | 755 (rwxr-xr-x) | 标准系统目录权限 |
7.3 特殊权限位
| 权限位 | 符号 | 说明 | 示例 |
|---|---|---|---|
| SUID | s | 执行时以文件所有者身份运行 | chmod u+s file |
| SGID | s | 执行时以文件属组身份运行,目录中新建文件继承属组 | chmod g+s dir |
| Sticky | t | 目录中只有文件所有者可以删除自己的文件 | chmod o+t dir |
8. 命令总结
8.1 权限管理命令
| 命令 | 功能 | 常用选项 |
|---|---|---|
chmod |
修改文件/目录权限 | -R 递归修改 |
chown |
修改文件/目录属主和属组 | -R 递归修改 |
chgrp |
修改文件/目录属组 | -R 递归修改 |
umask |
设置默认权限掩码 |
8.2 权限查看命令
| 命令 | 功能 |
|---|---|
ls -l |
查看文件详细权限 |
ls -ld |
查看目录详细权限 |
stat |
查看文件完整属性信息 |
getfacl |
查看文件ACL权限 |


