news 2026/10/22 7:25:44

【Linux】权限的详细讲解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux】权限的详细讲解

一、Linux 权限的概念

1.1 用户分类

Linux 下有两种用户:超级用户(root)与普通用户。

  • 超级用户:可以在 Linux 系统下做任何事情,几乎不受权限的限制;
  • 普通用户:在 Linux 下做权限范围内的事情;
  • 超级用户的命令提示符是#,普通用户的命令提示符是$。

1.2 切换用户

Linux 切换用户的指令是su。

在 Linux 中,如果我们要从超级用户切换到普通用户,直接su username即可,没有任何限制:

但是如果我们要从普通用户切换到超级用户,就需要输入 root 密码。普通用户切换到 root 用户有两种方式:

  1. su:切换到 root 目录不变;
  2. su -:直接切换到 root 的根目录。

注:Linux 出于安全考虑,从键盘输入的密码在终端上是不会回显的,也就是说我们输入密码时屏幕不会显示任何东西。

1.3 用户提权

在工作中使用 Linux 的时候,可能会出现这样一种状况:当前有一条指令必须拥有超级用户的权限才能执行,但我们不想切换用户,想直接让普通用户以 root 用户的身份去执行该指令。

sudo指令可以满足我们的需求。

但是我们执行sudo指令发现了两个奇怪的现象:

  1. 使用sudo指令让我们拥有 root 用户的权限,按理来说应该提示我们输入 root 密码,但事实是它让输入我们自己用户的密码;
  2. 以 test 的身份执行sudo指令,它提示 test 用户不在 sudoers file 内,sudo 失败(如果我们不在 sudoers 文件中,自然也不能通过sudo指令提权,后面讲 vim 的时候一起解决)。

上面这些现象是由 sudo 的机制造成的:sudo 存在的目的是为了给受信任的用户提供最少的执行障碍,受信任的用户是指被添加到 sudoers 文件中的用户。也就是说,当我们存在于 sudoers 文件中时,说明 root 用户充分信任我们,所以当我们使用sudo指令提升权限时只需要输入自己的密码即可。

注:sudo 的有效时间为 15 分钟,即当我们使用 sudo 提权成功后,后面 15 分钟内再次使用 sudo 指令不需要再次输入密码。

二、Linux 权限管理

2.1 引入

权限即你是否可以做这件事情,比如:听 VIP 歌曲的时候,只有 VIP 身份的用户才可以听,普通身份用户无法听。

权限认证和身份(人)与属性有关。

  • 权限的认证跟身份有关(权限也和人有关)。比如:网易云 VIP 音乐关心的是你是否是 VIP,这跟你的身份有关。
  • 权限的认证还跟事物的属性有关。例如:你想在网易云上听周杰伦的《反方向的钟》,尽管你有 VIP 可以听网易云音乐上所有的歌曲,可是网易云上买不到《反方向的钟》的版权,网易云不能满足你的要求,那么你在网易云上就没有听这首歌的权限。这个事物的属性要满足你想要做的事情,你才能有对应的权限。

2.2 文件访问者的分类

在 Linux 下,文件的访问者被分为三类:

  • 所有者:文件和文件目录的所有者 —— u(user);
  • 所属组:文件和文件目录的所有者所在的组的用户 —— g(group);
  • 其他用户:除所有者和所属组用户之外的用户 —— o(other)。

关于文件的所有者和其他用户相信大家都很容易理解,但是为什么会有一个所属组呢?我们以一个例子说明:

假设一家刚起步的很穷的公司要开发一款产品,老板奉行竞争理念,所以他把手下的人分为了两个组,让他们来研发同一款产品,最后哪个组的产品更优,哪个组就拿额外的奖金。

但是由于公司很穷,只买得起一台主机,这时候问题就出现了:两个组的成员共用一台主机,那么组内成员的代码如何进行共享呢?

如果我把文件设置为私有,这样虽然另外一组的人看不到我的代码,但同时我的队友也看不到;而如果我把文件设置为公有,那么又可能有代码泄露的风险。

为了解决这种情况,Linux 设计出了所属组的概念:我们可以把多个用户归为一个组,让组内的成员共享文件,组外的成员则受权限限制。

2.3 文件类型和访问权限

我们在 Linux 中查看一个文件/目录时,文件前面通常会出现很长一串字符:

它们对应的含义如下:

第一个字符代表文件类型,后面九个字符三三一组,分别代表文件拥有者、所属组和其他用户的权限。文件的权限一共分为三类:

  • r – 读权限(Read):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限;
  • w – 写权限(Write):对文件而言,具有修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限;
  • x – 可执行权限(execute):对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。

注:对应位置上有代表权限的字符说明该用户拥有对应权限,如果显示-则代表该用户没有对应权限。

1. 文件类型

Linux 中一共有七种文件:

  • d:目录;
  • -:普通文件(可执行程序也属于普通文件);
  • l:软链接(类似 Windows 的快捷方式);
  • b:块设备文件(例如硬盘、光驱等);
  • p:管道文件;
  • c:字符设备文件(例如屏幕等串口设备);
  • s:套接口文件。

2. 文件后缀与文件类型

之前我们提到,Linux 中不以文件的后缀名来区分文件类型,文件后缀属于文件名的一部分;但这并不代表我们不可以使用文件后缀来区分文件类型 —— 意思就是虽然在 Linux 眼中文件后缀没用,但是我们可以把文件后缀当作对用户的一个提示符号。

同时,Linux 中不区分文件后缀,并不代表 Linux 下的各种工具(比如 gcc、g++)不区分文件后缀。

三、文件权限值的表示方法

3.1 字符表示法

3.2 八进制数值表示法

每种权限用一个二进制位表示,有权限为 1,无权限为 0:

r w x 1 1 1 (二进制)= 7(八进制)

其中 r = 4、w = 2、x = 1,三位相加即可得到对应八进制数字。

四、设置文件权限

4.1 chmod 指令

使用chmod指令可以完成对指定身份(拥有者 u、所属组 g、其他人 o)的权限(读 r、写 w、执行 x)的修改。

chmod[参数]权限 文件名

注意:只有文件的拥有者和 root 才可以改变文件的权限。

1. chmod 指令权限值的格式:用户表示符 +/- 权限字符

用户符号:

  • u:拥有者;
  • g:拥有者同组用户;
  • o:其他用户;
  • a:所有用户。

+/-的意义:

  • +:向权限范围增加权限代号所表示的权限;
  • -:向权限范围取消权限代号所表示的权限。

为了演示方便,提前把权限全都置零了。

  • 用户:

  • 组:

  • 其他用户:

  • 所有人:

2. 三位八进制数字

文件的权限一共三种 —— 读写执行,所以用三个二进制位就可以表示全部情况,如果用八进制则只需要一位:

r w x 1 1 1 (二进制)= 7(八进制)

4.2 chown 指令

修改文件的拥有者。

chown[参数]用户名 文件名

注意:当我们使用chown指令将属于我们的文件赋给别人时,需要获得别人的同意,所以在一般情况下我们是不能改变文件的拥有者的;只有 root 不受权限的约束,可以直接将属于 A 的文件赋给 B,而不需要征得 A 和 B 的同意。

4.3 chgrp 指令

修改文件或目录的所属组。

chgrp[参数]用户组名 文件名

注意:和修改文件的拥有者一样,我们也不能直接修改文件的所属组,需要征得别人的同意,而 root 不受权限约束。

4.4 umask 指令

Linux 下文件的默认权限如下:普通文件的默认权限是 0666(读写),目录文件的默认权限是 0777(读写执行)。其中第一位数字代表这是三位八进制数,后面三位数字分别代表拥有者、所属组和其他人对文件的权限。但是我们发现,平时创建的文件的权限和上面的好像并不相同:

这是因为创建文件或目录的时候,除了受默认权限的约束之外,还要受到 umask(文件掩码)的影响。假设默认权限是 mask,则实际创建出来的文件权限是:

实际权限 = mask & ~umask

权限掩码的作用是:将在其中出现的权限在起始权限中全部去掉。因为一个权限在 umask 中为 1,那么其按位取反后再与默认权限按位与,得到的结果一定为 0;如果 umask 中为 0,则其按位取反后与默认权限按位与后,不影响默认权限的值。

查看或修改文件掩码:

umask权限值

注意:将现有的存取权限减去权限掩码后,即可产生建立文件时的预设权限;超级用户默认掩码值为 0022,普通用户默认为 0002。

修改文件掩码:可以看到,当我们把文件掩码设置为 000 后,此时创建出的文件的最终权限就等于文件的默认权限。

4.5 file 指令

辨识文件类型。

file[参数]文件名
  1. -c:详细显示指令执行过程,便于排错或分析程序执行的情形;
  2. -z:尝试去解读压缩文件的内容。

五、目录的权限

目录权限所代表的含义如下:

  • 可执行权限:能否进入目录—— 如果目录没有可执行权限,则无法cd到目录中。

  • 可读权限:能否查看目录中的文件内容—— 如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。

  • 可写权限:能否在目录中创建与删除文件—— 如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

所以如果我们要进入一个目录,就必须有可执行权限;这也就是为什么普通文件的默认权限是 666,而目录文件的默认权限是 777 的原因。

六、粘滞位

在一个 Linux 系统中通常有很多用户,那么有时就会有这样一种需求:不同的用户需要在一个公共的目录下进行临时文件的增删查改。这个公共目录通常由 root 用户创建,然后将目录权限修改为 777:

但是这里出现了一个问题:由于这个公共目录的权限是 777,所以任何一个用户都可以删除此目录下的文件,无论该文件是否属于自己,如下:

可以看到,对于 test 来说,ljm.txt 这个文件是不可读、不可写且不可执行的,test 也确实不能对它进行这些操作;但是 test 却能够直接删除 ljm.txt,因为 ljm.txt 处于 tmp 这个目录之下,而这个目录对于 test 是可读、可写、可执行的。

为了解决上面这种不科学的情况,Linux 引入了粘滞位的概念。

粘滞位是权限的一种特殊情况:它不影响不同用户在公共目录下的读写执行操作,但是它可以禁止不同用户之间互删文件。粘滞位设置的方式很简单,只需要在目录已有权限基础上加上t即可,并且添加时不用指定用户,Linux 会自动识别:

注:当一个目录被设置为"粘滞位"以后,该目录下的文件只能由文件的所有者或者 root 删除,其余用户不能删除。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 7:25:33

YOLOv11在新能源农机电机壳体密封性缺陷检测中的应用:mAP50达到97.5%

一、一个被低估的产线难题:密封性缺陷为什么“看不见” 新能源农机电机壳体的密封性,直接决定电机在泥水、粉尘、高频振动环境下的寿命。传统检测依赖保压测试或人工目检:保压测试只能给出“合格/泄漏”的二元结论,无法定位缺陷位置与类型;人工目检则在高速产线上几乎不可…

作者头像 李华
网站建设 2026/10/22 7:25:32

尚硅谷无人机学习笔记

尚硅谷无人机学习笔记11.无人机如何飞行1.1无人机姿态角1.2无人机结构1.3旋转方向和气流方向的关系2.动力系统电机介绍2.1定高2.2电机3.电源系统4.飞控和通信5.遥控器6.PID7. 总结1.无人机如何飞行 1.1无人机姿态角 简单记为:俯仰管前后,横滚管左右&…

作者头像 李华
网站建设 2026/10/22 7:25:05

X、Y 电容都属于安规电容

X电容 & Y电容 图文讲解(安规电容)X、Y电容都属于安规电容,专门用在交流电源输入端(EMI滤波),就算电容击穿失效,也不会产生触电危险,和普通瓷片电容不一样。✅ X电容 安装位置&a…

作者头像 李华
网站建设 2026/10/22 7:19:59

Ice:快速收纳 macOS 菜单栏图标的指南

Ice:快速收纳 macOS 菜单栏图标的指南 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 你的 Mac 菜单栏塞满了二十多个图标,还有几个被刘海挡住一半。Ice 是一款开源的菜单栏图…

作者头像 李华
网站建设 2026/10/22 7:19:57

Java 中 == 与 equals 的底层原理:从数据类型到 JVM 内存与 GC

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华