【linux基础(四)】对Linux权限的理解
💓博主CSDN主页:杭电码农-NEO💓
⏩专栏分类:Linux从入门到开通⏪
🚚代码仓库:NEO的学习日记🚚
🌹关注我🫵带你学更多操作系统知识
🔝🔝

Linux权限
- 1. 前言
- 2. shell命令以及运行原理
- 3. 普通用户与超级用户
- 3.1 对指令提权
- 4. 文件的权限以及角色属性
- 4.1 角色属性
- 4.2 文件的类型
- 4.3 文件的读写权限
- 4.4 读写权限的二进制表示
- 5. 文件的权限的修改方式
- 5.1 文件权限的八进制修改方式
- 6. 修改文件的拥有者/所属组
- 7. 对文件夹的权限理解
- 8. 默认权限以及权限掩码
- 8.1 权限掩码相关的计算
- 8.2 修改权限掩码
- 9. 总结以及拓展
1. 前言
Linux的内容是错综复杂的,是学不完的
专栏Linux从入门到开通只讲解
比较重要的知识以及面试常考的内容
本章重点:
- 对shell外壳和Linux内核的理解
- 普通用户和超级用户的区别
- 文件对应的三个权限
- 修改文件权限或拥有者/所属组
- 目录文件和普通文件的区别
- 默认权限以及权限掩码

2. shell命令以及运行原理
Linux操作系统严格来说是:
Linux内核+Linux外壳+配套程序

外壳也就是shell
那么为什么要存在外壳呢?
有两个原因:
命令行解释(充当媒婆)
内核的设计非常复杂,使用者无法
直接向Linux内核进行沟通,也无法
直接读懂内核执行完命令的结果
所以shell外壳充当"媒婆"这一角色
来往于操作者和内核之间
- 外壳程序将用户输入的指令解释后
传递给内核 - 内核执行命令后得到的结果经外壳
处理后传递给用户
保护内核(充当保安)
有时用户想要内核执行的命令过于离谱
或者使用的指令内核根本做不到
那么此指令根本不会"打扰"内核
它会在shell外壳进行翻译时就被驳回!
-
就像你暗恋的女生有男朋友了
你还要媒婆帮你说媒 -
这个请求会在媒婆这一阶段就驳回!

注:shell是对所有命令行解释器的统称
Linux下的shell外壳是bash
而windows下的shell外壳是
图形化界面
3. 普通用户与超级用户
一个Linux账号只有一个超级用户:
root
创建的其余用户都叫做普通用户
比如我的Linux下有几个普通用户:

假如你想要切换用户
使用指令:
su 用户名

注:超级用户切换为普通用户不用输密码
普通用户切换为root或其他普通用户需要密码
3.1 对指令提权
假如我现在是普通用户
但我只想用root账号执行一条命令
如果切换为root那么太麻烦了
使用指令:
sudo 提权的指令
这样就可以进行提取了
使用sudo命令的前提是:
此用户被添加到了sudoers白名单
(作为了解,后期会讲)
4. 文件的权限以及角色属性
当我们使用ll指令查看文件信息时
会打印出这样的信息:

红色框中有十列
蓝色框中有两个名字
用以下的图来理解:

4.1 角色属性
先看用蓝色和紫色框起来的地方
前者是代表文件的拥有者
后者是代表文件的所属组
所属组的名字是此组组长的名字!
对于文件来说,除了拥有者和所属组
还有other这个概念
other代表除了拥有者和所属组的其他人
比如现在我使用用户kwy创建一个文件:

拥有者就变成了kwy
4.2 文件的类型
再看最左边十列,第一列代表文件类型
可以发现,普通文件的第一列是:-
而目录文件的第一列是: d

对于现阶段而言,只需要掌握
文件夹和普通文件即可!
4.3 文件的读写权限
前十列的后九行代表了文件的读写权限
它们三个三个为一组

比如kwy.txt文件:
拥有者可读可写不可执行
所属组可读可写不可执行
other可读不可写不可执行

下面这张表格可以总结:

注:读对应指令:cat等等
写对应指令:nano等等
然而可执行暂时不用管
4.4 读写权限的二进制表示
有权限代表1,没有权限代表0
上面的表格可以总结出以下二进制形式:

这里使用八进制来表示是因为
某用户的最大权限是111
111的十进制是7,没有超过8!
kwy.txt文件的二进制形式可以写做:

6 6 4
5. 文件的权限的修改方式
想要修改用户的读写权限:
使用指令:
chmod [参数] 权限 文件名

比如我把kwy.txt文件加上wx权限:

注:只有文件的拥有者或root可修改文件权限
若你没有读权限去访问文件时会报错:

root是超级管理员,权限不能限制root的访问!
5.1 文件权限的八进制修改方式
修改文件权限时,除了使用±号
还可以用八进制进行修改:
将kwy.txt文件改成所有人可读可写:

这里的666的二进制形式是:
110 110 110
所有人的读写权限都存在,而执行权限无
将kwy.txt文件的other所有权限去掉:

6. 修改文件的拥有者/所属组
修改拥有者:
使用指令:
chown 用户名 文件名
将kwy.txt文件的拥有者改成root:

修改所属组
使用指令:
chgrp 所属组 文件名
需要注意的点:
很明显一个普通用户是无法把自己的文件
给另外一个用户的,因为这十分不安全!
只有root账号或者使用sudo提权
才能将文件的拥有者/所属组修改!
7. 对文件夹的权限理解
和普通文件不同,文件夹的读写
和可执行权限对应的功能十分不同
- 读权限( r ):用户能否查看文件夹下文件的信息
- 写权限( w ):用户能否在此文件夹下创建/删除文件
- 可执行权限( x ): 用户能否进入此文件夹
比如在我的目录下有一个source文件夹:

拥有者可以进入文件夹,并且可以创建/删除文件
也可以使用ls相关指令查看文件的信息
但是所属组和other不能创建或删除文件
现在切换为用户kwy并且进入此文件夹:

当我创建文件时,权限就被限制了!
8. 默认权限以及权限掩码
我们先创建一个目录和一个普通文件:

我们会发现以下规律:
- 目录的默认权限为:
7 7 5 - 普通文件默认权限:
6 6 4
这是为什么呢?
其实文件的默认权限有两个因素决定:
- 文件的起始权限
- 文件的权限掩码
文件的起始权限:
- 目录的起始权限为:
7 7 7 - 普通文件的起始权限为:
6 6 6
文件的权限掩码:
查看文件的权限掩码:
使用指令:
umask
我的机器上默认为002
用起始权限777-002=775
刚好就等于目录的默认权限
而起始权限666-002=664
刚好也等于普通文件的默认权限
8.1 权限掩码相关的计算
其实文件的默认权限并不是简单的等于:
起始权限 - 权限掩码
它的公式是:
最终权限=起始权限&(~权限掩码)
公式不好记,但是说起来简单易懂
- 将权限掩码和起始权限变成二进制
- 将这两个二进制对一一对应
- 权限掩码为1,起始权限为1时,起始权限改为0
- 权限掩码为0,起始权限也为0时,起始权限不变
可以用下面这张图来理解:

8.2 修改权限掩码
Linux系统的功能做的很全
即使有些功能不经常用
修改权限掩码:
使用指令:
umask 期望的权限掩码的八进制
比如现在将权限掩码修改为777:

此时,新创建的文件或文件夹什么权限都没了!
9. 总结以及拓展
Linux中的权限十分分明,一个用户
能干什么不能干什么都已经规定好了
不会出现你的某位同事删掉你的代码这种事情
拓展: 粘滞位
假设你和你的同事在同一个目录下工作
你要创建文件就必须有目录的w权限
而拥有w权限也不一定完全安全.
可能你的小组某个"间谍"
会删除你们小组所有文件

然而想要正常工作又必须将w权限放开
为了解决可以创建文件而不能删除他人文件
这个问题,引申出了粘滞位
详情请看:粘滞位讲解
相关文章:
【linux基础(四)】对Linux权限的理解
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:Linux从入门到开通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学更多操作系统知识 🔝🔝 Linux权限 1. 前言2. shell命…...
maven项目指定数据源
springboot项目 直接在pom.xml文件中添加以下配置 <!--使用阿里云maven中央仓库--> <repositories><repository><id>aliyun-repos</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url><snapshots><ena…...
web3:使用Docker-compose方式部署blockscout
最近做的项目,需要blockscout来部署一个区块链浏览器,至于blockscout是什么,咱们稍后出一篇文章专门介绍下,本次就先介绍一下如何使用Docker-compose方式部署blockscout,以及过程中遇到的种种坑 目录 先决条件我的环境准备工作Docker-compose1.安装方式一:下载 Docker Co…...
C++11实用技术(五)泛型编程加载dll接口函数
C11泛型编程简化加载dll代码 常见的加载dll方式: HMODULE m_hDataModule; m_hDataModule LoadLibrary("myDll.dll");typedef int (*PfunA)(int a, int b);//定义函数指针 PfunA fun (PfunA)(GetProcAddress(m_hDataModule , "funA"));//加载…...
使用wxPython和PyMuPDF提取PDF页面指定页数的内容的应用程序
在本篇博客中,我们将探讨如何使用wxPython和PyMuPDF库创建一个简单的Bokeh应用程序,用于选择PDF文件并提取指定页面的内容,并将提取的内容显示在文本框中。 C:\pythoncode\new\pdfgetcontent.py 准备工作 首先,确保你已经安装了…...
k8s的pv和pvc创建
//NFS使用PV和PVC 1、配置nfs存储 2、定义PV 实现 下图的pv和pvc测试 pv的定义 这里定义5个PV,并且定义挂载的路径以及访问模式,还有PV划分的大小 vim /pv.yamlapiVersion: v1 kind: PersistentVolume metadata:name: pv001 spec:capacity:storage: …...
记K8S集群工作节点,AnolisOS 8.6部署显卡驱动集成Containerd运行时
1、安装gcc #安装编译环境 yum -y install make gcc gcc-c2、下载显卡驱动 点击 直达连接 nvidia高级搜索下载历史版本驱动程序(下载历史版本驱动) https://www.nvidia.cn/Download/Find.aspx?langcn3、安装驱动 安装显卡驱动 ./NVIDIA-Linux-x86…...
JavaScript 性能优化
优化JavaScript代码的性能是开发过程中的一个关键任务,它可以显著提升网站或应用的用户体验。以下是一些优化技巧,涵盖了减少重绘、减少内存占用和合并网络请求等方面: 1. **减少重绘和重排:** - **使用 CSS3 动画:…...
架构演进及常用架构
1架构演进及常用架构 1.1单体分层架构 1.2 多应用微服务架构 1.3 分布式集群部署 部署 CDN 节点: 用户访问量的增加意味着用户地域的分散请求,如果所有请求都直接发送中心服务器的话,距离越远,响应速度越差,这时就需…...
WinCC V7.5 中的C脚本对话框不可见,将编辑窗口移动到可见区域的具体方法
WinCC V7.5 中的C脚本对话框不可见,将编辑窗口移动到可见区域的具体方法 由于 Windows 系统更新或使用不同的显示器,在配置C动作时,有可能会出现C脚本编辑窗口被移动到不可见区域的现象。 由于该窗口无法被关闭,故无法进行进一步…...
【实战】十一、看板页面及任务组页面开发(二) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十四)
文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...
Vue2.7.14、vuecli@5.0.8 升级 vite@4.4.8
项目背景 Vue2.7.14、vuecli5.0.8、element-ui2.15.13、node14.18.3 vite安装 pnpm add vite4.4.8 -D 入口文件index.html 文件位置修改 将pulic里的index.html移到根目录下 根目录/public/index.html 到 根目录/index.html 文件内容修改 <link rel"icon"…...
LeetCode[面试题04.12]求和路径
难度:Medium 题目: 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束&#x…...
骑行运动耳机哪款好?五年骑行爱好者给你分享分享
作为一名骑行达人,我尝试过多种骑行耳机,有入耳式、耳罩式、骨传导等等,但总有一款让我特别满意。直到我遇到了这几款耳机,它不仅音质出色,而且非常适合骑行,让我爱不释手。下面,我将分享一下这…...
SpringBoot3集成ElasticSearch
标签:ElasticSearch8.Kibana8; 一、简介 Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,适用于各种数据类型,数字、文本、地理位置、结构化数据、非结构化数据; 在实际的工作中,历经过Ela…...
详解23种设计模式优缺点以及解决方案
1. 单例模式(Singleton Pattern): 优点:确保一个类只有一个实例,提供全局访问点,节省资源。缺点:可能引入全局状态,难以扩展和测试。解决方法:使用依赖注入来替代直接访…...
Oracle 数据库中删除表空间的详细步骤与示例
系列文章目录 文章目录 系列文章目录前言一、查看表空间二、数据迁移和备份三、下线表空间中的对象四、删除表空间五、删除完成后的操作总结前言 在 Oracle 数据库中,表空间是存储数据的逻辑容器。有时候,我们可能需要删除不再使用的表空间以释放空间或进行数据库重组。本文…...
<kernel>kernel 6.4 笔记
<kernel>kernel 6.4 笔记 1、kernel 与用户层通信过程 (1) kernel 通过uevent事件 通知 用户层; 第一步:准备同事事件的参数键值对存到环境变量中; 第二步 :准备环境变量数据 ACTION、DEVPATH、SUBSYSTEM…...
介绍一些编程语言— Perl 语言
介绍一些编程语言— Perl 语言 Perl 语言 简介 Perl 是一种动态解释型的脚本语言。 最初的设计者为拉里・沃尔,它于 1987 1987 1987 年 12 12 12 月 18 18 18 日发表。Perl 借取了 C、sed、awk、shell scripting 以及很多其他编程语言的特性。其中最重要的特性…...
原型与继承
原型与继承 在 JavaScript 中,对象有一个特殊的隐藏属性 [[Prototype]](如规范中所命名的),它要么为 null,要么就是对另一个对象的引用。该对象被称为“原型。 当我们从 object 中读取一个缺失的属性时,Jav…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...
智能体革命:企业如何构建自主决策的AI代理?
OpenAI智能代理构建实用指南详解 随着大型语言模型(LLM)在推理、多模态理解和工具调用能力上的进步,智能代理(Agents)成为自动化领域的新突破。与传统软件仅帮助用户自动化流程不同,智能代理能够自主执行工…...
WinUI3开发_使用mica效果
简介 Mica(云母)是Windows10/11上的一种现代化效果,是Windows10/11上所使用的Fluent Design(设计语言)里的一个效果,Windows10/11上所使用的Fluent Design皆旨在于打造一个人类、通用和真正感觉与 Windows 一样的设计。 WinUI3就是Windows10/11上的一个…...
OpenHarmony标准系统-HDF框架之I2C驱动开发
文章目录 引言I2C基础知识概念和特性协议,四种信号组合 I2C调试手段硬件软件 HDF框架下的I2C设备驱动案例描述驱动Dispatch驱动读写 总结 引言 I2C基础知识 概念和特性 集成电路总线,由串网12C(1C、12C、Inter-Integrated Circuit BUS)行数据线SDA和串…...
DriveGPT4: Interpretable End-to-end Autonomous Driving via Large Language Model
一、研究背景与创新点 (一)现有方法的局限性 当前智驾系统面临两大核心挑战:一是长尾问题,即系统在遇到新场景时可能失效,例如突发交通状况或非常规道路环境;二是可解释性问题,传统方法无法解释智驾系统的决策过程,用户难以理解车辆行为的依据。传统语言模型(如 BERT…...
