文章目录
- Ⅰ 权限概念
- Ⅱ 权限管理
-
- 1. 文件访问者分类 (角色)
- 2. 文件类型和访问权限 (事物属性)
- 3. 文件权限值表示方法
- Ⅲ 权限修改
-
- 1. chmod 设置文件访问权限
- 2. chown 修改文件拥有者
- 3. chgrp 修改文件或目录的所属组
- Ⅳ 权限掩码
-
- 1. 默认权限
- 2. umask 查看或修改文件掩码
- Ⅴ 目录权限
-
Ⅰ 权限概念
1. 权限的概念
- 通过一定条件,拦住和给予一部分人权力来访问某种资源,权限与人相关。
2. 权限的本质
- 权限和角色有关:权限限定的是一种角色,限定该角色是否持有对应权限。
- 权限和事物的属性有关:限制角色的事物有什么属性,权限 = 角色 + 事物属性。
3. Linux 用户
Linux 中的角色就是 Linux 中的用户
- 超级用户:root,不受权限约束,命令提示符为 " # "。
- 普通用户:只能在 Linux 下做有限的事,命令提示符为 " $ "。
4. Linux 命令
-
命令:su [用户名]
-
功能:切换用户,root 用户可直接切换至系统中的任何用户,无需密码。
5. 指令提权
- 注意:使用 sudo 对指令提权时输入的是普通用户的密码,因为此前root 用户已经将该普通用户加入了白名单,所以普通用户使用 sudo 前还需要被 root 用户信任。
Ⅱ 权限管理
1. 文件访问者分类 (角色)
文件的访问者分为三类人 (角色)
- u – User 拥有者:文件和文件目录的所有者。
- g – Group 所属组:文件和文件目录的所有者所在的组的其他用户,多人任协作时更方便管理。
- o – Others 其他用户:不是上述两类人的就是其他用户了。
示例
- 查看 test.txt 文件的访问者。
- 默认情况下一般都是拥有者自成一组,文件访问者没有 Others 这一列,因为不是拥有者和所属组的都是其他用户,没必要单开一列去记录。
2. 文件类型和访问权限 (事物属性)
1. 文件属性
- 使用 ls -l 查看文件的详细属性。
- test.txt 文件的拥有者和所属组都是 root,所以普通用户 yxc 对该文件来说就属于 others,只有读权限。
2. 文件权限
- 第一个字符:是否拥有读权限 r;第二个字符:是否拥有写权限 w;第三个字符:是否拥有可执行权限 x。
- r:对文件而言,决定是否能读取文件的内容;对目录而言,决定是否能浏览该目录的信息。
- w:对文件而言,决定是否能修改文件的内容;对目录而言,决定是否能在该目录下进行 增删改 文件的操作。
- x:对文件而言,决定是否能执行该文件;对目录而言,决定是否能进入该目录。
- 描述一个文件的权限时一般都是说 拥有者、所属组、others 分别拥有 rwx 的什么权限,权限 = 用户角色 + 文件权限属性。
3. 文件类型
- 如何区分文件类型:Windows 通过后缀名, Linux 通过文件属性的第一个字符。
类型 |
说明 |
d |
目录文件 |
- |
普通文件 (文本文件、可执行程序、库等) |
l |
链接文件 (类似 Windows 的快捷方式) |
b |
块设备文件 (硬盘、光盘等) |
p |
管道文件 |
c |
字符设备文件 (屏幕等串口设备) |
s |
套接口文件 |
3. 文件权限值表示方法
1. 字符表示法
Linux 表示 |
说明 |
- - - |
无权限 |
r - - |
仅可读 |
- w - |
仅可写 |
- - x |
仅可执行 |
r w - |
可读可写 |
r - x |
可读可执行 |
- w x |
可写可执行 |
r w x |
可读可写可执行 |
2. 八进制表示法
- 可读 r、可写 w、可执行 x 的顺序是 r w x,如果某个文件有对应权限,则对应二进制位上的值为 1。
- 如:test 文件有读写权限 rw-,则二进制的值为 110。
权限符号 |
二进制 |
八进制 |
- - - |
000 |
0 |
- - x |
001 |
1 |
- w - |
010 |
2 |
- w x |
011 |
3 |
r - - |
100 |
4 |
r - x |
101 |
5 |
r w - |
110 |
6 |
r w x |
111 |
7 |
Ⅲ 权限修改
能修改文件权限的角色
- root 用户
- 文件的拥有者
1. chmod 设置文件访问权限
语法:chmod [选项] 权限 文件名
选项:-R,递归修改目录文件以及目录文件下的所有文件权限。
chmod 修改权限的格式
- 使用字符表示法修改权限:用户符号 + - 权限字符
- 权限修改:+ 增加权限;- 减少权限。
- 用户符号:u 拥有者;g 拥有者同组用户;o 其他用户;a 所有用户。
- 使用三位八进制表示法修改字符
- 已知八进制表示法中八进制的值对应的是什么权限,那么只要用上 3 个八进制的数字就能修改 拥有者、所属组和其他用户对该文件的权限了。
2. chown 修改文件拥有者
语法:chown [选项] 用户名 文件名
选项:-R,递归修改目录文件以及目录文件下的所有文件权限。
示例:chown yxc file.txt,将拥有者为 root 的 file.txt 文件的拥有者改成 yxc。
注意:普通用户想要修改文件拥有者需要使用 sudo 提权。
3. chgrp 修改文件或目录的所属组
格式:chgrp [选项] 所属组名 文件名
选项:-R,递归修改目录文件以及目录文件下的所有文件权限。
示例:chgrp yxc file.txt,将所属组为 root 的 file.txt 文件的所属组改成 yxc。
注意:普通用户想要修改文件所属组需要使用 sudo 提权。
Ⅳ 权限掩码
1. 默认权限
- Linux 对于创建的普通文件和目录文件自带默认权限。
- 普通文件:默认权限是 0666,去掉 x 的。
- 目录文件:默认权限是 0777,包含 x 的。
- 但是实际上显示出来的普通文件和目录文件的默认权限分别是 0664 和 0775,默认权限不能完全决定文件最终的权限,这情况就和权限掩码有关了。
2. umask 查看或修改文件掩码
- 创建文件或目录时还要受到 掩码 umask 的影响,假设默认权限是 mask,则文件的实际权限则是 用 默认权限mask 去过滤 默认掩码umask。
umask 格式
- umask:查看当前用户的默认掩码。
- umask 权限值:设置当前用户的掩码值。
umask 说明
- 用现有的 默认权限mask 去过滤掉 掩码umask 中出现的权限 (不是做减法)。
- 超级用户默认掩码 umask 为 0022,普通用户则是 0002。
- 在 root 中,umask 拥有的权限是所属组的写权限 w,和 others 的写权限 w。
- 在普通用户中,umask 拥有的权限是 others 的 写权限 w。
- umask 有的权限不能出现在文件的最终实际权限中。
解释为何目录和普通文件的实际权限变成了 775 和 664
- 目录文件 catalog 默认权限 0777 对应的权限 rwx rwx rwx 过滤掉掩码 umask 拥有的 others 的 w 权限后实际权限就成了 rwx rwx r-x,也就是 0775。
- 普通文件 file.txt 默认权限 0666 对应的权限 rw- rw- rw- 过滤掉 umask 拥有的 others 的 w 权限后实际权限就成了 rw- rw- r–,也就是 0664。
umask 示例
- 查看当前用户的默认掩码 umask。
- 更改当前用户的默认掩码为 0015,此时的 umask 拥有的权限是所属组的 - - x 权限和 others 的 r - x 权限。
- 使用更改后的掩码创建新文件,利用目录文件和普通文件的默认权限去过滤 umask 拥有的 0015 权限。
Ⅴ 目录权限
1. 目录权限问题引入
目录的权限
- 可读权限 r:如果目录没有可读权限,则无法使用 ls 等命令查看该目录中的文件内容。
- 可写权限 w:如果目录没有可写权限,则无法在该目录中对文件进行 增删改 操作。
- 可执行权限:如果目录没有可执行权限,则无法进入到该目录中。
存在的问题
- 只要某个用户具有该目录的写权限,就能够直接删除该目录中的文件,与这个文件无关。
- 也就是说,只要对某个目录具有写权限,则是不是该目录下文件的创建者都可以删除该文件。
解决的办法
- 对该目录去掉写权限:解决了可能会被外人删除目录下文件的同时又出现了一个新的问题,无法在该目录下进行 增加和修改 文件操作,所以不推荐这个。
- 比较推荐的是使用粘滞位。
2. 粘滞位
格式:chmod +t 目录,对目录加上粘滞位。
功能:即使其他用户对目录具有写权限,也使得除了以下三种用户外都无法删除目录下的文件:
- 超级用户 root
- 该目录的所有者
- 该目录下文件的所有者
示例
- 现有一个由 root 创建的目录 study 且已经将该目录 拥有者、所属组、others 的权限都设置为 rwx。
- 使用 chmod -t study 对 root 创建的 study 目录添加粘滞位。
- 再切换成普通用户 yxc 删除 study 目录下的 test.txt 文件 (yxc 用户是 study 目录的 others)。
- 可以看到 yxc 就算拥有 study 目录的写权限,也是无法删除该目录下的文件。