【Linux】关于权限的理解

Linux权限管理详解

目录

一、Linux用户的分类

1.Linux下的两种用户

2.两种用户提示符的区别

3.用户的切换方法

二、Linux的权限管理

1.文件访问者分类

2.常见文件类型

3.文件访问权限

4.权限检查逻辑

5.文件权限的表示方式

三、与文件访问权限相关的设置方法

1.前提:

2.如何修改文件或目录权限

指令:

①符号模式(字母表示)

②数字模式(八进制)

③常用选项

④特殊权限

⑤典型使用场景

⑥注意事项

3.修改文件或目录的所有者或所属组

指令:

①常用选项

②示例

③注意事项

④chmod和chown的区别

4.修改文件的所属组

指令

①常用选项

②示例

③注意事项

④chgrp和chown的区别

5.权限掩码umask

①umask作用

②如何查看当前umask

③如何修改umask

④常见umask

⑤注意事项

四、目录权限

1.目录各权限作用

2.粘滞位的作用

3.如何设置粘滞位

①符号模式(更推荐)

②数字模式(八进制)

4.如何查看粘滞位

①使用 ls -l 查看

②使用 stat 查看

5.粘滞位和 SUID/SGID 的区别

6.注意事项


一、Linux用户的分类

1.Linux下的两种用户

①超级用户(root):可以在Linux系统下作任何事,不受限制。

②普通用户:在Linux系统下只能做一定权限内的事,受到约束。

2.两种用户提示符的区别

超级用户(root)的命令提示符是“#”,普通用户的命令提示符是“$”

3.用户的切换方法

切换用户指令:su

①root用户切换到普通用户(无需输入普通用户口令)

su + 空格 + 普通用户名,即: su user

②普通用户切换到root用户

su + 空格 + root  (su之后都可以省略不写)

然后输入root用户口令

二、Linux的权限管理

1.文件访问者分类

①文件及文件目录的所有者:u(User)

②文件和文件目录的所有者所在的组的用户:g(Group)

③其他用户:o(other)

注:三种身份在进行认证时,只能选择一种身份。

2.常见文件类型

①-:普通文件(文本、可执行程序、库基本都属于普通文件)

②d:目录文件

③b:块设备文件(磁盘文件等)

④c:字符设备文件(键盘文件、显示器文件等)

⑤p:管道文件

⑥l:软连接

⑦s:套接口文件

注:Linux系统中文件后缀名没有直接意义(但不代表不用)

3.文件访问权限

r :可读权限

w :可写权限

x:可执行权限

- :表示所在权限位置没有权限

4.权限检查逻辑

当用户尝试访问文件时,系统按以下顺序匹配身份并应用对应权限:

  1. 拥有者(Owner)

    • 若用户是文件的所有者,直接应用 owner 权限,忽略后续检查

  2. 所属组(Group)

    • 若用户不是所有者,但属于文件的所属组,则应用 group 权限,忽略后续检查

  3. 其他用户(Others)

    • 若用户既不是所有者,也不在所属组中,则应用 others 权限。

注:

  • 优先级是单向的:一旦匹配到身份(如 owner),后续身份(group/others)的权限不会生效。

  • 组权限的局限性:即使用户属于多个组,系统仅检查文件所属组,而非用户的所有组。

5.文件权限的表示方式

①字符表示

r--:表示仅可读

-w-:表示仅可写

--x:表示仅可执行

rw-:表示仅可读可写

rwx:表示可读可写可执行

---:表示无权限

②八进制数值表示

    权限符号                二进制                八进制
        r                100                4
        w                010                2
        x                001                1
        rw                110                6
        rx                101                5
        wx                011                3
        rwx                111                7
        ---                000                0

三、与文件访问权限相关的设置方法

1.前提:

只有文件拥有者和 root 可以修改文件权限。

2.如何修改文件或目录权限

指令:

chmod——名称来源于change mode

基本语法:chmod [选项] 权限模式 文件/目录

①符号模式(字母表示)
  • 用户类别

    • u:所有者(user)

    • g:所属组(group)

    • o:其他用户(others)

    • a:所有用户(all,默认值)

  • 操作符

    • +:添加权限

    • -:移除权限

    • =:直接设置权限

  • 权限类型

    • r:读(4)

    • w:写(2)

    • x:执行(1)

示例:

②数字模式(八进制)
  • 权限用 3 位八进制数表示,分别对应 所有者其他用户

  • 权限值:

    • 4:读(r)——对应2进制:100

    • 2:写(w)——对应2进制:010

    • 1:执行(x)——对应2进制:001

    • 权限组合通过相加得到(如 rwx=4+2+1=7)。

示例:

③常用选项
选项作用
-R递归修改目录及其子内容的权限
-v显示权限变更的详细信息
-c类似 -v,但仅显示修改过的文件
--reference=FILE参照某个文件的权限设置目标文件

示例:

④特殊权限
  • SUID(Set User ID)

    • 用户执行文件时临时获得所有者权限。

    • 设置:chmod u+s file 或数字模式前缀 4(如 4755)。

  • SGID(Set Group ID)

    • 用户执行文件时临时获得所属组权限,或目录下新建文件继承组权限。

    • 设置:chmod g+s dir 或数字模式前缀 2(如 2755)。

  • Sticky Bit

    • 仅允许所有者删除/重命名目录下的文件(如 /tmp)。

    • 设置:chmod +t dir 或数字模式前缀 1(如 1777)。

示例:

⑤典型使用场景

⑥注意事项
  1. 权限顺序:符号模式下操作顺序为 用户类别→操作符→权限(如 u+rx)。

  2. 安全风险:谨慎使用 777 或 -R 777,避免过度开放权限。

3.修改文件或目录的所有者或所属组

指令:

chown——名称来源change owner

基本语法:chown [选项] 新所有者:新所属组 文件/目录

注:可以单独修改所有者或组,也可以同时修改

①常用选项
选项作用
-R递归修改目录及其子内容的所有者/组
-v显示修改的详细信息(verbose)
-c类似 -v,但仅显示修改过的文件
--reference=FILE参照某个文件的所有者/组设置目标文件
-h修改符号链接本身的所有者(默认修改链接指向的文件)
②示例

1. 修改文件的所有者

2. 修改目录的所有者及组(递归)

3. 参照另一个文件设置权限

4. 修改符号链接的所有者(默认修改链接指向的文件)

③注意事项

需要 root 权限

  • 普通用户只能修改自己拥有的文件,root 可以修改任何文件的所有者。

  • sudo 提权:这个需要用root用户将普通用户添加进白名单,操作并不复杂,感兴趣的可以自行了解

用户和组必须存在

  • 如果指定的用户或组不存在,chown 会报错

目录权限影响

  • 如果目录的权限不允许写入,即使是 root,也可能无法修改其子文件的所有者

④chmod和chown的区别

chown:修改 所有者/组(谁拥有文件)。

chmod:修改 权限(谁能读/写/执行文件)。

4.修改文件的所属组

指令

chgrp——名称来源于:change group

基本语法:chgrp [选项] 新组名 文件/目录

  • 新组名:可以是组名(如 developers)或 GID(如 1001)。

  • 可以同时修改多个文件或目录。

①常用选项
选项作用
-R递归修改目录及其子内容的所属组
-v显示修改的详细信息(verbose)
-c类似 -v,但仅显示修改过的文件
--reference=FILE参照某个文件的组设置目标文件
-h修改符号链接本身的组(默认修改链接指向的文件)
②示例

1. 修改文件的所属组

2. 递归修改目录的所属组

3. 参照另一个文件设置组

4. 修改符号链接的组(默认修改链接指向的文件)

③注意事项

需要权限

  • 普通用户只能修改自己拥有的文件的组,且必须是该组的成员

  • root 可以修改任何文件的组。

  • 使用 sudo 提权:感兴趣的自行了解

组必须存在

  • 如果组不存在,chgrp 会报错

④chgrp和chown的区别

chgrp:仅修改 (如 chgrp dev file)。

chown:可以同时修改 所有者和组(如 chown user:dev file)。

5.权限掩码umask

①umask作用
  • 文件/目录创建时,系统会使用 umask 值来屏蔽(去除)某些权限。

  • 默认权限

    • 文件:0666(即 rw-rw-rw-

    • 目录:0777(即 rwxrwxrwx

但实际上我们所创建的文件和目录,看到的权限往往不是上面的默认值,原因就是创建文件或目录的时候还要受到 umask的影响。

假设默认权限是mask

则实际创建的出来的文件权限是:

二进制计算表示:

  • 最终权限 = mask & ~umask

八进制计算表示:

  • 最终权限 = mask - umask 权限

符号表示:

  • umask 也可以使用 u/g/o 和 r/w/x 表示:

②如何查看当前umask

输出结果:

③如何修改umask

临时修改(仅当前会话有效)

永久修改(对所有用户生效)

  • 修改 /etc/profile 或用户 ~/.bashrc

  • 重新加载配置:

④常见umask
umask文件权限目录权限适用场景
0000666rw-rw-rw-777rwxrwxrwx开放权限(不安全)
0022644rw-r--r--755rwxr-xr-x默认推荐(用户可读写,其他只读)
0027640rw-r-----750rwxr-x---组内共享,其他用户无权限
0077600rw-------700rwx------仅所有者可访问(最严格)
⑤注意事项
  1. umask 是权限的“反码”

    • umask=022 表示 去掉 w 权限(即 rw-r--r--)。

  2. root 用户的默认 umask 通常是 022,普通用户可能是 002

  3. umask 不影响已有文件,仅对新创建的文件/目录生效。

四、目录权限

1.目录各权限作用

可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中

可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

  • 目录的 r 权限仅允许查看文件名列表(需配合 x 才能读取文件内容)

可写权限(w): 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

但是这并不科学

上面的目录权限说明只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限,但是我张三创建的一个文件, 凭什么可以被你李四删掉?

于是Linux引入了粘滞位

2.粘滞位的作用

  • 用于目录(对普通文件无效)。

  • 允许用户创建文件,但只能删除自己拥有的文件(防止误删他人文件)。

3.如何设置粘滞位

①符号模式(更推荐)

②数字模式(八进制)
  • 粘滞位对应 权限数字的最前面一位

    • 1 表示粘滞位(如 1777

    • 0 表示无粘滞位(如 0755

4.如何查看粘滞位

使用 ls -l 查看

如果目录有粘滞位,权限的 其他用户(others)执行位 x 会变成 t

输出结果:

  • 其他用户rwt 表示:

    • rw-:可读写,不可执行

    • rwx:可读写可执行

    • rwt:其他用户可读写 + 粘滞位

使用 stat 查看

5.粘滞位和 SUID/SGID 的区别

细心的朋友应该注意到了,这里就是前面提到过的特殊权限

特殊权限作用适用对象
SUID用户执行时临时获得所有者权限可执行文件
SGID用户执行时临时获得组权限,或目录下新建文件继承组可执行文件/目录
粘滞位仅允许所有者删除文件目录

6.注意事项

粘滞位一般是给目录设置,而且一般是共享目录

共享目录一般只有root用户有权限创建


本文有些长,若有错漏之处,烦请各位指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值