Linux——shell原理和文件权限
1.shell原理
在我们使用云服务器时,需要通过shell进行使用,而shell则是一种外壳程序。

我们提到过,大部分的指令实际上就是文件,当用户需要执行某种功能时,由于用户不擅长和操作系统直接交互(操作复杂),并且出于保护操作系统的目的(防止不合法请求交给操作系统),用户不直接使用操作系统内核,而是通过shell外壳程序来进行处理。
外壳程序(shell程序)介于用户和操作系统之间的软件,也就是我们所见的命令行解释器。它可以将用户输入的命令进行检查并翻译给核心,而核心的处理结果也会通过shell翻译给用户。shell在执行时会创建子进程,来帮助用户进行命令行解释。bash是我们在centos7中所使用的具体的一种shell,shell作为命令行解释器是Linux的基本使用访问形式,就像是GUI图形化界面对于windows一样。
2.Linux权限
权限,在汉语词汇中的意思是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。可以发现,权限的定义中具有两个对象,分别是角色和事物,不同的角色对于不同的事物具有的权力不同。在Linux中,权限也就是根据用户的不同,对具体的文件具有不同的访问权限。
2.1 Linux的用户
在Linux中可以粗略的将用户分为两类:①root(超级用户、超级管理员),它的命令行提示符是#,不受到权限约束。②普通用户,它的命令行提示符是$。
2.1.1 用户转换——su
因为存在着两种用户,所以会面临着用户身份的转换。su指令可以进行身份的变化。通过 su 可以将身份由普通用户变化为root身份,需要输入root的密码。而 su <用户名> 可以将身份由root变为普通用户,无需密码。
2.1.2 指令提权——sudo
因为root和普通用户的权限不同,在某些情况下普通用户需要更多权限来执行一条指令,那么这个时候就可以使用sudo来进行指令提权。如:sudo touch normal.txt 就是以root的身份创建一个文件。
sudo提权需要输入普通用户的密码,这是因为实际上并不是所有用户都可以进行指令提权,只有处在root白名单中的用户才可以进行指令提权,白名单实际上是一个只有root可以访问的文件,当root信任某一个用户后可以将其加入白名单,这样这个用户就被允许进行sudo指令提权了。
2.2 Linux的权限
2.2.1 Linux的角色
站在一个目录或者文件的视角来看,实际上访问者可以分为三类,也就是三种角色:①拥有者:文件或目录的所有者;②所属组:文件或目录的所有者所在的组;③other:除了文件的所属组以外的用户。Linux管理权限正是针对这三种角色进行管理。
以下是查看文件详细信息的各部分含义:

2.2.2 文件类型
Linux不通过文件的后缀来区分文件类型,而是通过文件属性中的标识。我们在上一个图片中已经看到了文件类型的表示:
-:普通文件,包括文本文件、可执行文件、库等;
d:目录文件;
b:块设备文件,如磁盘;
c:字符设备文件,如显示器;
P:管道文件;
I:链接文件,也就是快捷方式。
虽然Linux不使用后缀区分文件类型,但是我们还是应该使用后缀名,不仅是因为便于自己使用,而且因为部分工具、程序需要根据后缀名进行区分。
2.2.3 文件的权限
对于普通文件,rwx不难理解,分别是可读、可写、可执行。而对于目录文件,rwx的功能则是:r,查看目录内文件信息的权限;w,在目录内创建、修改、删除的权限(可以看到删除文件与这个文件的权限无关,而取决于其所在目录的写权限);x,进入目录的权限。
我们可以看到rwx权限实际上可以用三个二进制数字来表示,如r-x可以表示为101,也就是八进制的5,所以我们可以使用三个八进制数字来表示一个文件的三组的三个权限。
2.2.3.1 修改权限——chmod
在学会权限的含义只后,就要试着修改权限,修改权限使用到的指令是chmod指令。
chmod u±rwx , g±rwx , o±rwx , a±rwx 文件名
含义就是修改文件的u(拥有者)、g(所属组)、o(other)的权限,增加(+)或去除(-)rwx的若干种权限。

除此之外,也可以使用我们刚才所说的三个八进制数字的方式修改权限:
chmod xxx(八进制数) 文件名
2.2.3.2 修改拥有者和所属组——chown
chown/chgrp 用户 文件名
修改文件的拥有者/所属组为对应的用户。需要指令提权。

需要注意的是,所属组的出现是为了方便权限管理,相当于提供了除了拥有者一个人外的其他人的访问身份,同时有排除了无关人员other的干扰。
Linux对于身份的识别只进行一次,换言之就是当用户既是拥有者又是所属组时,Linux只认定拥有者的权限,所以尽管所属组有权限但是拥有者没有,同样无权执行对应操作。
2.2.3.3 掩码——umask
对于新创建的文件,其权限是文件类型和掩码共同决定的。普通文件的起始权限为0666,目录文件的起始权限为0777。可以通过命令行输入umask来查看掩码,而最终初始化的权限=文件对应的起始权限&(~umask),也就是异或运算。
因此对于0002的掩码,创建的普通文件的权限为0664,目录文件的权限为0775。
![]()
可以使用umask+修改后的掩码来对其进行修改。

2.2.3.4 粘滞位
chmod +t 目录名
通过这样的方法可以为目录设置粘滞位,即可以限制删除操作。对于目录中的文件,只有root、目录拥有者、文件拥有者可以删除,其他角色不具有该权限。

相关文章:
Linux——shell原理和文件权限
1.shell原理 在我们使用云服务器时,需要通过shell进行使用,而shell则是一种外壳程序。 我们提到过,大部分的指令实际上就是文件,当用户需要执行某种功能时,由于用户不擅长和操作系统直接交互(操作复杂&…...
网络工程师需要熟悉Docker吗?我觉得不需要精通,但是得懂基础
你好,这里是网络技术联盟站,我是瑞哥。 Docker,这个字眼大家不陌生吧,不过作为网络工程师可能平时接触不到,如果在看文章的是运维人员,那么70%以上的运维人员都会跟Docker打交道。即使网工用不到ÿ…...
c++初级-2-引用
文章目录 引用一、引用的定义二、引用做函数参数三、引用作为返回对象四、引用的本质五、常量引用 引用 即给一个变量起别名。 一、引用的定义 int a 10;//引用int& b a;cout << "a " << a << endl;cout << "b " <&l…...
如何清理电脑内存?让电脑运行如飞!
电脑内存(RAM)的清理对于维持系统的流畅运行至关重要。随着使用时间的增加,系统内存会被各种应用程序和后台进程占用,导致系统响应变慢,甚至出现卡顿现象。通过有效地清理内存,可以提升电脑的性能ÿ…...
[数据集][目标检测]人员状态跑睡抽烟打电话跌倒检测数据集4943张5类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4943 标注数量(xml文件个数):4943 标注数量(txt文件个数):4943 标注…...
Java8 - Stream API 处理集合数据
Java 8的Stream API提供了一种功能强大的方式来处理集合数据,以函数式和声明式的方式进行操作。Stream API允许您对元素集合执行操作,如过滤、映射和归约,以简洁高效的方式进行处理。 下面是Java 8 Stream API的一些关键特性和概念ÿ…...
漫步5G-A City,一份独属于上海的浪漫
作家亨利詹姆斯曾写道,“城市漫步,让我接触到了这个世界上最好的东西”。 用漫无目的地行走,来体验和观察一座城市,上海凭借丰富多元的文化特质,成为citywalk这种浪漫生活方式的流行地。 无论你是漫步在美术馆、画廊林…...
SpringBoot 如何处理跨域请求?你说的出几种方法?
引言:在现代的Web开发中,跨域请求(Cross-Origin Resource Sharing,CORS)是一个常见的挑战。随着前后端分离架构的流行,前端应用通常运行在一个与后端 API 不同的域名或端口上,这就导致了浏览器的…...
OV SSL证书年度成本概览:为企业安全护航的经济之选
在当今数字化时代,企业网站不仅是品牌展示的窗口,更是与客户沟通的桥梁。然而,随着网络威胁的不断升级,保护网站安全成为了企业不可忽视的任务。SSL证书,特别是OV SSL证书,因其对企业身份的严格验证&#x…...
歌尔气压计SPA06-003在无人机的创新应用
随着科技的不断进步,各类智能设备的功能日益强大,其中气压计作为一种能够测量大气压力的传感器,已被广泛应用于多种领域。歌尔气压计以其高精度、低功耗的特点,在无人机和智能手表上的应用尤为突出,为这两个领域的产品…...
python3多文件操作
1 介绍 有两个.py文件,分别为main.py和util.py,执行main.py时,调用util.py当中的函数。 main.py内容如下, import util if __name__ "__main__":a [3.0,4.0]length util.get_length_from_vec(a)print(f"leng…...
312. 戳气球
312. 戳气球 题目链接:312. 戳气球 代码如下: //参考链接:https://leetcode.cn/problems/burst-balloons/solutions/336390/chuo-qi-qiu-by-leetcode-solution class Solution { public:int maxCoins(vector<int>& nums) {int nnums.size()…...
深入理解C++中的锁
目录 1.基本互斥锁(std::mutex) 2.递归互斥锁(std::recursive_mutex) 3.带超时机制的互斥锁(std::timed_mutex) 4.带超时机制的递归互斥锁(std::recursive_timed_mutex) 5.共享…...
压缩pdf文件大小,压缩pdf文件大小软件哪个好
在数字化时代,PDF文件因其卓越的跨平台兼容性和稳定性而成为工作与学习的好帮手。然而,当PDF文件体积过大时,传输和存储便成了一项挑战。别担心,本文将为你揭秘如何快速压缩PDF文件,让你的文档轻装上路! 压…...
难道 Java 已经过时了?
当一门技术已经存在许多年了,它可能会失去竞争力,而后黯然退场,默默地离开,这对大部分的人来说就已经算是过时了。 Java 于 1995 年正式上线,至今已经走过了 27 个年头,在众多编程技术里算是年龄比较大的语…...
华为OD机考题(HJ32 密码截取)
前言 经过前期的数据结构和算法学习,开始以OD机考题作为练习题,继续加强下熟练程度。有需要的可以同步练习下。 描述 Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA&…...
【高考志愿】测绘科学与技术
目录 一、专业介绍 1.1 专业概述 1.2 专业方向 1.3 课程内容 二、就业前景 三、报考注意事项 四、测绘科学与技术专业排名 五、职业规划与未来发展 高考志愿选择测绘科学与技术专业,对于许多有志于空间信息技术领域发展的学生来说,无疑是一个极具…...
SpringBoot异步接口实现 提升吞吐量
前言 Servlet 3.0之前:HTTP请求由单一线程处理。Servlet 3.0之后:支持异步处理,提高系统吞吐量。 SpringBoot 异步接口实现方式 AsyncContext:Servlet层级,不常用。Callable:使用java.util.concurrent.C…...
C语言快速学习笔记
学习网站:C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com) 这个网站知识完整,讲解清晰。 在线C语言编程工具:菜鸟教程在线编辑器 (runoob.com) 国外学习网站:C语言介…...
如何选择易用性高的项目管理软件?
随着项目管理在各行各业的广泛应用,选择一款易用性高的项目管理软件变得越来越重要。易用性高的软件可以帮助企业提高工作效率,降低管理成本,同时还能提升团队之间的协作能力。那么,如何选择一款易用性高的项目管理软件呢…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
