Linux权限全面解析 (欢迎各位Linux选手看过来,读到就是赚到)

article/2025/8/30 0:32:32

目录

1.权限是什么

1.1生活实例理解权限

2.Linux下的权限

2.1Linux下的用户类别与事物属性

2.2介绍用户类别的具体意义

2.3具体实验

2.4文件类型简介

2.4.1 文件类型分类

2.4.2 文件类型依据

3.修改文件rwx权限

4.修改文件的owner,group

5.用户切换方式讲解

6.目录的权限

7.粘滞位

8. Linux中的起始权限

8.1 默认权限分配

8.2 原理剖析

9. 稍稍总结


1.权限是什么

要理解Linux操作系统中的权限,就必须要理解权限这个词

我们首先从生活中的小例子上理解权限的定义,然后再理解Linux中的权限

不过首先可以告诉大家    权限 == 事物(属性) + 人(可做权限) 

带着这个对于权限的初印象,我们看下面生活中的例子。

1.1生活实例理解权限

Bilibili,俗称B站,是一个非常优秀的视频网站,里面有很多的视频,对于不同的视频,对于不同种类的用户(大会员以及非大会员),我们可以对该视频做的事情(如观看,下载,评论等)也是不同的。

这里就是权限在应用当中的具体体现。

比如你的名字张小明,你的身份是一个非大会员用户

然后对这个"干物妹小埋"这部番剧有评论权限,没有观看权限,下载权限

 比如你的名字郭小宇 , 你对于地大寝室文化节这个视频的角色身份创作者 ,

所以你对"地大寝室文化节"这个视频 , 拥有观看权限,下载权限,评论权限

回到头来我们再看这句话      权限 == 事物(属性) + 人(可做权限) 

事物,其实就是B站上的视频     

事物属性 , 就是视频可以被观看,被下载,被评论,被删除...

人,是一个具体的人(郭小宇),作为一个身份(创作者) ,

没有或拥有对于 该事物(视频) 的  各个事物属性的权限。

2.Linux下的权限

2.1Linux下的用户类别与事物属性

与其说Linux操作系统之下是对一个具体人的权限,倒不如说是对于一个人的所扮演的身份角色的权限

(即判断你是否具有观看该部番剧的依据不是因为你叫张三,你叫李四,你叫陈睿.......

而是因为你不是超级大会员,你是普通用户的这一重身份,这一种用户类别)

在Linux下用户类别(三类):

1. 拥有者 owner

2. 所属组 group

3. 其他人 other

Linux下文件事物属性(三个):

1. r  可读权限             即可以读取该文件的内容

2. w 可写权限            即可以修改(删除)该文件的内容

3. x  可执行权限        即可以执行该文件

Linux之下一切皆文件,所以Linux下的事物(类比B站下是视频)其实就是一个一个文件。

所以我们可以讲 : Linux下的权限其实就是 , 不同种类的用户 对于一个文件的 不同权限。

2.2介绍用户类别的具体意义

拥有者owner即代表该文件的拥有者是谁,一般来说owner对该文件的权限是最大的,可以修改该文件对于每一个用户类别的权限,所以意味着拥有者操纵该文件一切的权限设置。

不过要注意的是文件的创造者可以是该文件的拥有者,但是也肯不是该文件的拥有者。

文件的所属组group的意义,不在我们这里个人使用的Linux机器里体现出来,因为这台云服务器中只有我们一个人,不存在哪些人是哪个组的这种情况。在不同小组即多个人共用一台服务器的时候group会体现出他的意义。

举个具体的例子:

话说在PenguinTX这个公司中,同一个游戏部门下辖很多个小组,这些小组共用同一台服务器。

而且这些小组之间可谓是生死竞争。例如我们知道的全军出击小组与刺激战场小组(同一种吃鸡游戏,却都是腾讯出品,体现了TX公司中不同小组之间的竞争性)。

现在这么两个生死之争的小组共同使用同一台服务器 , 这两个小组中的两拨人,一拨人肯定不能让另一个组的那拨人能够看到我们这一组写的代码文件内容。这时候group所属组的权限设置可以帮助我们达到这个目的。

具体大概的实现就是比如我们组的张三写了一个很牛逼的代码test.cc(可不能泄露给其他组) , (当然该文件的拥有者肯定就是张三啦)所以就可以设置该文件的所属组group为咱们组,则相对的其他人other就是别的组的人,这样我们设置other的对于该文件test.cc的权限为 --- , 那这个代码就不会被泄露到其他组了。

group的意义就是让文件能被同组的人读写操作,而对于其他组其他人则不设置权限,防止文件泄露给其他group的人。

设置了owner和group分别是谁 , 那自然其余的人就全部都是other其他人,

是owner和group类别的用户当然是属于"自己人"的范畴,文件所给予这两类用户的权限通常是高于赋予other的权限,(我们总不能把可修改权限和可执行权限都给other咱不认识的人吧)

2.3具体实验

2.4文件类型简介

2.4.1 文件类型分类

 -普通文件
d目录文件(文件夹)
p管道文件(通信作用的文件)
l链接文件(软连接,快速找到文件)
b块设备文件(如磁盘,磁盘叫块设备,因为存储是以块为基本单位的)
c字符设备文件(如键盘,显示器 , 按字节字符顺序显示,输入)
s套接字文件

如图的booknote.txt就是普通文件,filetest是创建的管道文件,mydir是创建的目录文件,soft是建立的对../file.txt文件的软连接文件。

2.4.2 文件类型依据

我们都知道Windows操作系统下是通过文件名的后缀扩展名 .ppt .txt .docx来判定文件类型的。然而在Linux下,文件类型和后缀并没有直接关系

虽然Linux下文件类型和后缀并没有直接关系,不过这并不代表我们不需要在Linux中规范文件的后缀。因为我们使用的一些外部工具如gcc编译器,就是根据文件后缀扩展名来执行的。

3.修改文件rwx权限

即修改文件的三类用户(拥有者 所属组 其他人)分别对应的三大权限(rwx rwx r-x)。

修改文件权限的指令是chmod , 在此之前我们需要认识在chmod中三类用户是如何表示的。

u : 拥有者            g : 所属组            o : 其他人                a : 一次性代表u,g,o所有类用户 

chmod用法举例 : 

 此外chmod还有如下的一种操作方式 ---- 二进制方式修改权限 :

我们知道一个文件设置的是三组权限 , 分别对应 owner group other 的 rwx权限分配情况。

所以我们可以用三组 三位二进制数来表示权限的分配情况,比如:

rwx rw- r-- 这就是 111 110 100 最终即 764 权限。

修改file.txt文件的权限分配设置为 rwx rw- r-- 就可以操作为 chmod 764 file.txt

下面我们通过实例认识这一修改方法 :

PS : 我们能够chmod修改该文件权限的前提 , 是建立在我zy是该文件的owner拥有者,所以我才可以修改该文件的权限(当然root作为超级管理员当然可以无视一切直接调整权限)。

如果你这个人既不是这个文件的owner , 你也不是root , 那你要chmod这个文件那自然是不允许的

4.修改文件的owner,group

即修改该文件的拥有者 , 所属组 是谁。

other是相对于owner+group的其他人 , 所以只要修改文件的owner,group就相当于修改了文件的other

改变文件的拥有者owner:       chown  new_owner  filename

改变文件的所属组group:        chgrp  new_group  filename

改变一个文件的拥有者owner和所属组group , 即把一个文件交给另一个人/另一个组 , 这其实是两方的事情 , 而不是一方的一厢情愿 。 所以 chown chgrp 需要我们sudo提升权限或者是su切换成root用户来强制完成这一操作

 5.用户切换方式讲解

当我们处于普通用户例如zy的时候 , 我们此时敲 su 指令在输入密码之后 , 会切换到root用户。当我们是root用户的时候 , 我们直接 su zy 就可以切换到普通用户zy了。

而我们都知道每一个用户的创建都会伴随自动创建一个bash(媒婆 bash进程),即一个命令行解释器来服务你 , 沟通你和Linux内核。 

所以你一旦是像后面这个例子一样切换用户 zy -> su -> root -> su zy -> su -> su zy , 就会产生大量的无用的bash进程 , 占用系统资源

 解决方案:

在zy通过su指令切换到root的时候 , 我们直接输入 exit 指令 或者 Ctrl + D快捷键 退出root用户 , 就可以回到之前的zy用户了 , 可以直接利用之前的bash进程 到最后就只有一个bash进程 ; 而su zy则会新创一个bash , 加上之前的zy 和 root 总共就是三个bash进程

6.目录的权限

我们知道文件的权限分为三种即 r w x , 对于普通文件来说 , r 权限代表可以查看读取该文件的内容 , w 权限代表可以修改该文件内容 ,  x 权限代表可以执行该文件。

 不过目录文件的权限 , 即目录文件的 r w x 权限的意义实际上是不同于普通文件的 r w x的意义。下面我们通过一个表格对比两种文件对权限不同的意义。

普通文件的 r w x 权限

 r
读取文件内容的权限
w
修改文件内容 , 删除文件的权限
x
执行文件的权限

目录文件的 r w x 权限

 r浏览该目录下的文件 (理解为 ls obj_dir 的作用)
w
删除,移动目录内文件 或 在目录中创建文件的权限
(理解为 rm  obj_dir / file      OR      touch  obj_dir / newfile 的作用) 
x进入该目录的权限 (理解为 cd obj_dir 的作用)

7.粘滞位

上面我们展示了 w 权限的意义 , 即被赋予 w 权限的用户可以在该文件夹下创建文件 , 同时可以删除该目录下的文件。

不过你想象一下 , 在具备创建文件权限的同时 , 居然还能删除我这个文件夹下根本就不属于你的文件 , 这实际上是非常可怕的。

有没有一种场景 : 即我希望你这个人可以在我目录下创建文件 , 但是又不希望你能删除我这个目录下别人的文件。

PS:有一个文件夹 , 这个文件夹对于 owner , group 拥有者自己和同组的人 , 我们不需要过度的防范 , 因为都是"自己人" , w 创建+删除权限可以开放 , 所以我们针对的主要是other 。

场景创设:

事实上是存在这样一个场景需求:

 我们想让other可以在我这个文件夹下创建文件 , 但是other你不可以在我这个文件夹下做删除文件的操作。这实际上是对于other的w权限的一种限制 , 即将w权限限制为只能创建,不能删除。

如何做到:

使用粘滞位 , 粘滞位的设置可以起到限制w权限的效果。

如何设置粘滞位:

chmod  o+t  obj_dir

PS:这里的 t 权限是一种特殊的 x 权限 。一方面 , 这里 other 可以具备 x权限 进入该文件夹内部的权限 。另一方面 , t 权限作为粘滞位 , 限制了other的w权限 , 即现在other只能在文件夹下创建文件而不能删除别人的文件

 总之 , 粘滞位的作用就是 限制外人other对于目录文件的w权限 , 只允许other可以在该目录下创建自己的文件,而不允许other删除该文件夹中别人的文件

8. Linux中的起始权限

8.1 默认权限分配

不知道你是都有这样的疑问 : 为什么我们touch file , mkdir dir , 创建这些普通文件 , 目录文件的时候 , 系统都会自动分配一个默认权限呢?

普通文件默认分配权限是 664 rw- rw- r--

目录文件默认分配权限是 775 rwx rwx r-x

8.2 原理剖析

大体思路是这样的 , Linux中队不同文件都有一个起始权限 , 然后起始权限跟Linux机器中可设置的umask权限掩码进行逻辑运算 ,  最后就得出我们给不同文件默认分配的权限了。

普通文件的起始权限是 666  可读 可写 不可执行

目录文件的起始权限是 777  可看 可创建删除 可被进入

Linux中umask权限掩码的初始值 0002

权限掩码的作用 : 凡是umask中取值为 1 的位 , 就要在起始权限中被去掉。

例如 0002 -> 000 000 010 就会将第三组第二位 , 即other的第二个权限即w权限去掉。

PS:不要自己擅自改变umask的初始值 , 这样会影响权限的基础配置 , 会影响正常使用以及文件的安全。

起始权限和权限掩码umask的逻辑运算方式 : 

先把umask进行~运算 , 即将umask按位取反后 , 再将之与起始权限进行 & 逻辑与运算。 

 以上我们以目录文件为例。

9. 稍稍总结

读完此篇博客,想必你对 权限的定义 , Linux下的权限的基本介绍与修改方式 , 以及目录权限,粘滞位 有了自己的理解 , 实践是检验自己是否真正掌握的标准 , 希望大家练习起来 , 最后还是非常感谢大家的鼎立支持!

本博客所用文件已上传到Gitee码云中, 请君自取!

practice2 · onlookerzy123456qwq/Linuxtwo - 码云 - 开源中国 (gitee.com)https://gitee.com/onlookerzy123456qwq/linuxtwo/tree/master/practice2


http://chatgpt.dhexx.cn/article/BTLZMjuU.shtml

相关文章

【Linux】Linux权限

Linux权限管理 文章目录 Linux权限管理1、Linux下权限的概念(1)用户权限(2)文件权限 2、权限的相关命令(1)用户切换超级->普通普通->超级 (2)用户提权(3&#xff0…

Linux权限详解

目录 1. 什么是权限 2. Linux上的用户 3.Linux权限管理 3.1 文件访问者的分类(人) 3.2 文件类型和访问权限(事物属性) 3.3 文件权限值的表示方法 3.4 文件访问权限的相关设置方法 chmod命令 chown指令 chgrp指令 umask指…

Linux用户权限

Linux用户权限 一、Linux权限的概念二、Linux文件权限管理1 、文件访问者的分类2 、文件类型和访问权限3、文件访问权限的相关设置方法 三、Linux目录的权限1、粘滞位 四、Linux权限的总结 一、Linux权限的概念 Linux下有两种用户:超级用户(root&#xf…

ESP32的CAN通信

目录 一、ESP32的CAN通信说明1.1、片内外设1.2、CAN库的查找1.3、MCP2515和SJA1000介绍1.4、CAN库的安装1.4.1、先下载库,再导入到arduino IDE中1.4.2、通过“库管理器”安装。 二、硬件说明2.1、硬件准备2.2、硬件连接 三、代码调试3.1、打开示例3.2、修改代码3.3、…

DSP28377S_CAN通信

CAN通信 CAN通信的由来CAN通信格式CAN通信配置实验验证结束语参考资料目录 CAN通信的由来 为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。CAN属于现场总线的范畴&a…

【CAN】CAN通信基础

1、CAN 总线与 CANopen 概述 CAN(Controller Area Network)总线是BOSCH为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,通信介质可以是双绞线、同轴电缆或光导纤维。 通信速率可达 1MBPS。 CAN 协议的一个…

通信接口CAN

CAN通信 目前(2021年6月)我用到的CAN电路原理图: 判断电路有没有接好,其中一个标准就是,测量接入的电阻阻值是不是60Ω。上图两个60.4Ω之间,可以接一个电容到GND。 1. Bit Timing(位时序) 参考连接 …

STM32之CAN通信

23.1关于 CAN 23.1.1 CAN 电气特性与协议 控制器局域网(Controller Area Network,CAN),是由德国BOSCH(博世)公司开发,是目前国际上应用最为广泛的现场总线之一。其特点是可拓展性好&#xff0…

FPGA实现CAN通信

FPGA实现CAN通信 1、CAN协议物理层和协议层 2、传输的波特率 3、FPGA实现思路 4、FPGA实现代码 1、CAN物理层和协议层 CAN与串口类似,都是异步通信,利用两根差分线来进行信号的传输。 在多节点进行数据传输时主要分为遵循ISO11898标准的高速短距离闭环形…

关于CAN通信速率设置

一、 CAN时钟周期(Tq)2*晶振时钟*BRP(波特率预分频值 baudrate prescaler) 一个CAN时间称为一个时间量子 Tq 1)同步段(Synchronization Segment):1个Tq,tSS 2&#x…

nano的CAN通信

我买的是微雪的树莓派用的SPI转CAN。现在用在jetson nano上。我看了一下俩模块的芯片用的都是一样的,引脚也都对得上,所以我就打算拿这个模块给nano做can通信。 具备CAN功能,使用SPI接口CAN控制器MCP2515,搭配收发器SN65HVD230。 …

CAN通信基础知识

CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。 CAN协议经过…

CAN通信详解

本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 30.1 CAN简介 CAN 是Controller Area Network 的…

CAN通信总结

CAN通信总结 基本介绍 ​ 1. CAN通过两条通信线(双绞线)产生的电压差传输数据,一个CAN网络里的所有节点都挂在这两条通信线上,使用差分信号半双工通信。 ​ 2. CAN总线是广播类型的总线。所有节点都将始终接收所有通信&#xf…

CAN 通信原理学习

文章目录 CAN通信一:基本概述1.1 can总线是什么1.2 can总线协议的特点1.3 can的网络通信结构1.3.11.3.2 can协议网络层次 二:socket can在通信网络中的应用三 一个程序 CAN通信 一:基本概述 1.1 can总线是什么 CAN 是 Controller Area Net…

CAN通信协议

在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地…

CAN通信讲解(1)——基本知识

本文注意参考了《CAN入门书》,源于此书图片不再特殊标注 目录 1.1 CAN总线背景1.2 CAN总线定义1.3 CAN总线信号特性1.4 CAN总线传输1.5 OSI基本参照模型和CAN总线协议 1.1 CAN总线背景 为减少汽车线束数量,1986年,博世开发出面向汽车的CAN通…

CAN通信

通讯方式 UART:(Universal Asynchronous Receiver Transmitter:通用异步收发器/异步串行通信口),是一种通用的串行数据总线,用于异步通信,支持全双工。它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线…

CAN通信----基本原理

STM32标准库开发 文章链接: STM32F103标准库开发----目录 STM32F103标准库开发----CAN总线通信实验----初始化/波特率 STM32F103标准库开发----CAN总线通信实验----发送和接收 资源链接: 本例程已经调试成功,下载即可使用。 STM32F103标准库…

CAN通信详解(全)

本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 30.1 CAN简介 CAN 是Controller Area Network 的缩…