Linux:shell运行原理+权限
1.shell的运行原理
如果我们打开了命令终端或者是xshell进行远程登录服务器,就会看到命令行,如下图所示:
这个命令行本身也是系统中一个运行起来的程序,它用来接收用户的输入,帮用户来执行指令,将运行结果展示给用户。我们将以命令行来表示的软件统称之为shell外壳程序,俗称命令行解释器。在UbuntuLinux中所用的命令行解释器叫bash,它是系统中可执行的程序,如下图所示:
不同操作系统的命令行解释器的名称可能不同,如shell、bash、sh等。它们只是名字不同,但是工作是一样的。
shell外壳所在的位置,如下图所示:
shell外壳存在的意义:
操作系统出于本身的易用程度和安全角度来考虑,一般是不允许用户来直接进行访问它自己。如果没有shell外壳,用户在使用操作系统前需要先了解操作系统的原理,这个操作系统就无法被使用,直接劝退一大半用户(就如同要让开车的人需要在开车前了解发动机、变速箱等原理),所以shell外壳存在的意义就是让用户将需求表达给shell外壳程序,shell外壳转交到操作系统,操作系统将执行结果给shell外壳,shell外壳再转给用户。(简单来说就是用户能力不足的原因不能直接访问操作系统)
shell外壳的工作原理:
将用户的命令翻译给操作系统来处理,同时将操作系统的处理结果翻译给用户。shell外壳在将用户的命令翻译给操作系统之前会对用户的命令进行审核,如果用户的命令非法,shell外壳将会进行拦截,不做翻译给操作系统,所以shell外壳在一定程度上保护了操作系统。
shell外壳的工作模式:
shell外壳本质也是一个执行起来的程序,在系统启动期间一直存在。当shell在执行用户的指令时,如果该指令有风险(比如用户所写的程序,或者是系统自带的有风险的指令),shell外壳会通过创建子进程的方式,让子进程去执行有风险的指令。如果用户的指令有风险导致shell外壳所创建的子进程崩溃,也不会影响到shell外壳自身(如果用户的指令没有风险,shell外壳会自己执行)。
用户在登录的时候,操作系统会给新登录的用户新启动一个shell,也就是说每一个用户都有一个对应的shell。
对于操作系统的定义上有多种,在广义上来说:内核+外壳,在狭义上来说:内核。
2.1Linux用户
1.Linux用户基本概念
Linux的用户分为两种:root(超级用户),普通用户。
root:可以在Linux系统下做任何事情,不受限制。
普通用户:受管控的状态,会被限制。
在Linux系统中,root用户只有一个,而普遍用户可以有多个。root账号一般都是内置的,在购买云服务器或者是安装虚拟机时就会要求用户将root账号的密码提前设置了。
2.Linux用户身份切换
1.普通用户切换为root
指令:su
在命令行输入su按下回车后,显示器上会要求提示输入密码,在输入root账号的密码后即可将普通用户的身份切换成root(注意:输入密码的时候不会回显)。
2.root切换为普通用户
指令:su 所要切换的用户名(该用户必须已被创建)
root切换为普通用户时,不需要输入普通用户的密码,直接切换为普通用户。
3.普通用户切换为普遍用户
指令:su 所要切换的用户名(该用户必须已被创建)
在命令行输入指令后按下回车后,显示器上会要求提示输入密码,需要输入对方的密码后身份就会被切换(注意:输入密码的时候不会回显)。
总结:1.普通用户切换为root,需要输入root的密码。2.root切换成普通用户,不需要密码。3.普通用户变成另一个普通用户,需要对方的密码。
3.普通用户进行提权
在Linux中普通用户可以不用将身份切换为root情况下进行权限的的提升。所需要使用的指令是sudo。
指令:sudo
语法:sudo 历史上我们学到的指令
sudo指令介绍:在指令前面输入sudo后就可以以root的身份执行该指令,第一次使用sudo后需要输入密码(当前普通用户的密码,并非root账号的密码),再之后的一段时间内再使用sudo后就不需要再次输入密码。
不是所有的普通用户都能使用sudo来进行提权,如果以普通用户的身份进行sudo可能会出现以下报错,如图所示:
在Linux系统中在。/etc/目录下有一个sudoers的配置文件,该文件是用户信息列表的配置文件,如果一个普通用户的用户名在该配置文件中才允许这个普通用户执行sudo。这个配置文件本身是属于root的文件,普通用户是无法将自己添加到该配置文件中,只有使用root的身份才能够去添加。所以,能够使用sudo的普通用户,是经过root允许的。
如果不会使用vim、nano等文本编辑器工具,是不建议去改配置文件的,如果改错了并且不知道错在哪可能会导致重装系统。
3.Linux权限
Linux权限主要集中在文件权限属性上,文件权限属性分别有3种:1.r(该文件可读),2.w(该文件可写),3.x(该文件可被执行)。这3种权限属性限制的角色分别是拥有者、所属组、other(其他人)。
粘滞位(t):给共享目录中的other设置的一个权限位,具有x的意义,同时也进一步对权限目录进行特殊限定,该目录里面的文件只有root或者是文件的拥有者才有权利进行删除,其他人一概不允许。
使用ls -l或者是ll指令可以查看文件的详细属性包括权限信息,如下图所示:
被绿色框所圈出来的部分是文件类型,被黑色框所圈出来的部分是文件权限属性,被红色框所圈出来的部分是文件的拥有者,被黄色框所圈出来的部分是所属组。如果一个用户既不是文件的拥有者,也不在所属组里面,那么该用户就是other。在Linux中,是可以添加组的,但是现在已经很少用了,所以不需要讲。
1.文件权限属性
使用ls -l或者是ll指令可以查看文件的详细属性包括权限信息,如下图所示:
在上图该文件详细属性信息中,文件权限属性由9个字符组成,在这9个字符中每3个分为一组,共3组。第一组是拥有者的权限,第二组是所属组的权限,第三组是other的权限,如下图所示:
不管是拥有者、所属组还是other,rwx这3个字符的位置都是固定的,有对应权限,那么就有对应的字符,要是其中某个字符为-,那么就没有对应的权限。例如:在上图test文件中,拥有者权限和所属组权限都是rwx,那么拥有者和所属组的用户可以对该文件进行读、写、执行操作。other权限为r-x,那么other用户只能对该文件进行读,不能写,可执行的操作。
2.文件权限的修改
Linux文件权限限制的角色分别是:user(拥有者)、group(所属组)、other,这三种,可以直接简写为u、g、o。如果要修改文件的权限,必须是该文件的拥有者。修改文件的权限的方法有两种,所使用的指令是chmod。
指令:chmod
chmod指令介绍:修改文件的权限。
chmod修改文件权限的第一种方法:
语法:chmod ugoa+-rwx FILENAME,其中a是all的简写,具体使用方法,例如:
将上图中file.txt文件user(拥有者)权限修改成只能读,指令的写法为:chmod u-w file.txt。
也可以同时修改多个角色的权限,如下图所示:
如果要给所有的角色同时+-权限的方法,如下图所示:
chmod修改文件权限的第二种方法:
不管是拥有者、所属组还是other,rwx的位置都是固定的,有对应的权限就有对应的字符,没有对应的权限就是-。我们可以理解为如果有对应的权限为1,没有对应的权限为0,以二进制的方式来表示,如下图的文件:
拥有者的权限为rwx,用二进制来表示就是111,所属组和other的权限为r-x,用二进制来表示就是101。3位二进制可以转成八进制来表示,拥有者的权限是111,用八进制来表示就是7,所属组和other的权限是101,用八进制来表示就是5。我们可以使用chmod使用八进制来对文件的权限属性做修改,例如:
将上图中的file.txt文件权限修改为:拥有者r-x(用八进制来表示为5),所属组r--(用八进制来表示为4),other rwx(用八进制来表示为7),指令的写法为:chmod 547 file.txt。最终效果如下图所示:
Linux基础知识:权限限制的是普通用户,在root账号下形同虚设。
Linux基础知识:并不是将一个文件添加了x(可执行)权限就能运行该文件,一个程序能不能运行取决于两点:1.必须要有x(可执行)权限,2.必须是一个可执行文件。
Linux基础知识:如果一个用户要进入某个目录,用户必须得有该目录的x权限,如果要查看该目录里面的类容,需要r权限,如果要在该目录里创建/删除子目录或者文件需要w权限。
3.修改文件的拥有者所属组
在Linux中是可以修改文件的拥有者和所属组。普通用户是无法修改文件的拥有者和所属组的,即便该用户是文件的拥有者,只有root才能修改,普通用户需要提权,使用的指令分别是chown,chgrp。
指令:chown
语法:sudo chown username filename
chown指令介绍:修改文件的拥有者。
指令:chgrp
语法:sudo chown groupname filename
chgrp指令介绍:修改文件的所属组。
4.文件类型
在Windows操作系统系统中,区分文件的类型的方式是通过后缀来区分的,linux中在使用指令ls -l查看文件时,第一个字符表示的是文件的类型,如下图示:
Linux系统不通过文件的后缀来区分文件类型,但是我们依旧推荐使用后缀,因为系统之上的指令,工具,编辑器它们可能是需要后缀来区分文件类型,也可以让人一眼看出它是什么类型的文件。总结:虽然Linux系统不通过后缀来区分文件类型,但是不代表Linux不用后缀。
Linux文件类型:
d:文件夹
-:普通文件(文本,源代码,图片,视频,库,可执行等)
b(block):块设备文件(例如硬盘、光驱等)
c(char):字符设备文件(例如屏幕等串口设备)
l:链接文件(类似Windows的快捷方式)
s:套接口文件
p:管道文件
在上面众多文件类型里面,我们最常见只有以d和-开头的文件
在Linux中文本,源代码,图片,视频,库,可执行等都是以-开头,如果想查看文件具体是属于具体哪一种类型的文件可以使用file指令。
指令:file
语法:file filename
file指令介绍:查看文件是属于具体是属于哪一种类型的文件。
5.权限掩码
在Linux中,我们创建的文件的默认权限是666,因为文件不是一个目录或者是可执行程序,它并不需要x权限,目录的默认权限是777,但实际上我们创建的文件或者目录实际上的权限并不是上面的默认权限,因为在创建的文件或者目录的时候会受到umask(权限掩码)的影响。
umask:定制一个目录/文件被创建时的默认权限。
如果要查看系统中默认的权限掩码所使用的指令是umask
指令:umask
umask指令介绍:查看默认的权限掩码
普通用户的默认权限掩码是0002(root的默认权限0022),前面的0我们将它理解为八进制,后面的002这三个数是八进制,转化为二进制为000 000 010。文件或者是目录的最终权限 = 默认权限 & (~umask)。
如果要修改权限掩码所用到的指令还是umask。
指令:umask
语法:umask 所要修改的值(八进制)
umask指令介绍:修改权限掩码。
相关文章:
Linux:shell运行原理+权限
1.shell的运行原理 如果我们打开了命令终端或者是xshell进行远程登录服务器,就会看到命令行,如下图所示: 这个命令行本身也是系统中一个运行起来的程序,它用来接收用户的输入,帮用户来执行指令,将运行结果展…...
跨站请求是什么?
介绍 跨站请求(Cross-Site Request)通常是指浏览器在访问一个网站时,向另一个域名的网站发送请求的行为。这个概念在 Web 安全中非常重要,尤其是在涉及到“跨站请求伪造(CSRF)”和“跨域资源共享ÿ…...
【LeetCode Solutions】LeetCode 160 ~ 165 题解
CONTENTS LeetCode 160. 相交链表(简单)LeetCode 162. 寻找峰值(中等)LeetCode 164. 最大间距(中等)LeetCode 165. 比较版本号(中等) LeetCode 160. 相交链表(简单&#…...
Openssl升级至openssl9.8p1含全部踩坑内容
1、安装依赖包基础条件 yum install gcc yum install gcc-c yum install perl yum install perl-IPC-Cmd yum install pam yum install pam-devel sudo yum install perl-Data-Dumper 问题一:提示yum不可用 镜像源问题更换阿里源即可 wget -O /etc/yum.repos.d/…...
ASP.NET Core 性能优化:内存缓存
文章目录 前言一、什么是缓存二、内存缓存三、使用内存缓存1)注册内存缓存服务2)注入与基本使用3)高级用法GetOrCreate(避免缓存穿透)异步方法:GetOrCreateAsync(避免缓存穿透)两种过…...
二战蓝桥杯所感
🌴 前言 今天是2025年4月12日,第十六届蓝桥杯结束,作为二战的老手,心中还是颇有不甘的。一方面,今年的题目比去年简单很多,另一方面我感觉并没有把能拿的分都拿到手,这是我觉得最遗憾的地方。不…...
屏幕模块解析
通信协议 SPI 引脚定义 GPIO说明引脚配置SCK时钟线推挽输出MOSI主机输出、从机输入推挽输出MISO主机输入、从机输出浮空/上拉输入:没有开启数据传输时为高阻态SS片选推挽输出CPOL时钟极性0:空闲时SCK为低电平 1:空闲时SCK为高电平 CPHA时钟相位0:主从SCK第一个边沿输入1bi…...
查看手机在线状态,保障设备安全运行
手机作为人们日常生活中不可或缺的工具,承载着沟通、工作、娱乐等多种功能。保障手机设备的安全运行是我们每个人都非常重要的任务,而了解手机的在线状态则是其中的一环。通过挖数据平台提供的在线查询工具,我们可以方便快捷地查询手机号的在…...
#关于数据库中的时间存储
✅ 一、是否根据“机器当前时区”得到本地时间再转 UTC? 结论:是的,但仅对 TIMESTAMP 字段生效。 数据库(如 MySQL)在插入 TIMESTAMP 类型数据时: 使用当前会话的时区(默认跟随系统时区&#…...
第16届蓝桥杯省赛python B组个人题解
文章目录 前言ABCDEFGH 前言 仅个人回忆,不保证正确性 貌似都是典题,针对python的长代码模拟题也没有,一小时速通了,希望不要翻车。 更新:B、G翻车了。。 A 答案:103 B 应该是按长度排序,然后…...
lvs+keepalived+dns高可用
1.配置dns相关服务 1.1修改ip地址主机名 dns-master: hostnamectl hostname lvs-master nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes nmcli c up ens160dns-salve: h…...
Spark RDD相关概念
Spark运行架构与核心组件 1.Spark运行梁构 spark运行架构包括master和slave两个主要部分。master负责管理整个集群的作业任务调度,而slave则负责实际执行任务。 dirver是Spark驱动器节点,负责执行Spark任务中的main方法,将用户程序转换成作业…...
雷池WAF防火墙如何构筑DDoS防护矩阵?——解读智能语义解析对抗新型流量攻击
本文深度解析雷池WAF防火墙在DDoS攻防中的技术突破,通过智能语义解析、动态基线建模、协同防护体系三大核心技术,实现从流量特征识别到攻击意图预判的进化。结合2023年金融行业混合攻击防御案例,揭示新一代WAF如何通过协议级漏洞预判与AI行为…...
网络互连与互联网
1.在路由表中找不到目标网络时使用默认路由,默认路由通常指本地网关的地址。 2.OSPF最主要的特征是使用分布式链路状态协议,而RIP使用的是距离向量协议。 3.OSPF使用链路状态公告LSA扩散路由信息 4.内部网关路由协议IGRP是一种动态距离矢量路由协议&a…...
Pytorch实现基于FlowS-Unet的遥感图像建筑物变化检测方法
基于FlowS-Unet的遥感图像建筑物变化检测方法是一种结合深度学习与细化结构的先进技术,旨在提高建筑物变化检测的精度和鲁棒性。 一、FlowS-Unet的核心架构与原理 FlowS-Unet是在经典U-Net网络基础上改进的模型,主要引入了超列(Hypercolumns)和FlowNet细化结构,通过多尺…...
什么是柜台债
柜台债(柜台债券业务)是指通过银行等金融机构的营业网点或电子渠道,为投资者提供债券买卖、托管、结算等服务的业务模式。它允许个人、企业及机构投资者直接参与银行间债券市场的交易,打破了以往仅限机构参与的壁垒。以下是综合多…...
SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记
目录 前言 背景与需求 代码改进方案 运行过程: 1、Run编辑 2、过程: 3、过程时间线: 4、最终效果展示: 总结与展望 前言 机器学习缺点之一:即不可解释性。最近,我在使用stable diffusion v1.5 Co…...
【ROS2】行为树:BehaviorTree
1、简介 与状态机不同,行为树强调执行动作,而不是状态之间的转换。 行为树是可组合的。可以重复使用简单的行为来构建复杂的行为。 在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。 ROS2的导航框架Navigation2中引入了行为树来组织机器人的工作流…...
《JVM考古现场(十八):造化玉碟·用字节码重写因果律的九种方法》
"鸿蒙初判!当前因果链突破十一维屏障——全体码农修士注意,《JVM考古现场(十八)》即将渡劫飞升!" 目录 上卷阴阳交缠 第一章:混沌初开——JVM因果律的量子纠缠 第二章:诛仙剑阵改—…...
使用nuxt3+tailwindcss4+@nuxt/content3在页面渲染 markdown 文档
nuxt3tailwindcss在页面渲染 markdown 文档 页面效果 依赖 “nuxt/content”: “^3.4.0” “tailwindcss”: “^4.0.10” “nuxt”: “^3.16.2” “tailwindcss/vite”: “^4.0.10” tailwindcss/typography (这个是格式化 md 样式用的) 注意: 这里nuxt/content…...
[250412] OpenSSH 10.0 发布,移除DSA算法,sshd默认禁用有限域DH,并分离认证代码
目录 OpenSSH 10.0 正式发布:关键更新摘要主要变更亮点(潜在不兼容性) OpenSSH 10.0 正式发布:关键更新摘要 OpenSSH 10.0 已于 2025 年 4 月 9 日发布,现在可以从官网列出的镜像站点获取最新版本。 OpenSSH 是一个广…...
部署NFS版StorageClass(存储类)
部署NFS版StorageClass存储类 NFS版PV动态供给StorageClass(存储类)基于NFS实现动态供应下载NFS存储类资源清单部署NFS服务器为StorageClass(存储类)创建所需的RBAC部署nfs-client-provisioner的deployment创建StorageClass使用存储类创建PVC NFS版PV动态供给StorageClass(存储…...
JS【详解】迭代器 Iterator(含可迭代对象、同步迭代器、异步迭代器等)
什么是迭代器? JS 迭代器是一种遍历访问数据结构中所有成员的机制,本质是一个指针对象。 为什么要有迭代器? 为各种不同的数据结构提供统一的访问机制。自定义数据结构的遍历:当你创建了一个自定义的数据结构时,可以实…...
CFS 调度器两种调度类型普通调度 和 组调度
在 Linux 的 CFS(Completely Fair Scheduler) 调度器中,确实存在两种调度类型:普通调度 和 组调度。这两种调度类型分别适用于不同的场景,并通过三个关键维度(权重、抢占优先级、最大配额)来影响…...
Linux网络编程——详解网络层IP协议、网段划分、路由
目录 一、前言 二、IP协议的认识 1、什么是IP协议? 2、IP协议报头 三、网段划分 1、初步认识IP与路由 2、IP地址 I、DHCP动态主机配置协议 3、IP地址的划分 I、CIDR设计 II、子网数目的计算 III、子网掩码的确定 四、特殊的IP地址 五、IP地址的数量限…...
【图像生成之21】融合了Transformer与Diffusion,Meta新作Transfusion实现图像与语言大一统
论文:Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model 地址:https://arxiv.org/abs/2408.11039 类型:理解与生成 Transfusion模型是一种将Transformer和Diffusion模型融合的多模态模型,旨…...
Microsoft Office 如何启用和正常播放 Flash 控件
对于新安装的 Office 默认是不支持启用 Flash 组件的,Flash 组件会无法播放或者黑屏。 本片文章就带你解决这个问题,相关资料都在下方连接内。前提概要,教程对应的版本是 mso16,即 Office 2016 及更新版本,以及 365 等…...
深入浅出:信号灯与系统V信号灯的实现与应用
深入浅出:信号灯与系统V信号灯的实现与应用 信号灯(Semaphore)是一种同步机制,用于控制对共享资源的访问。在多线程或多进程环境下,信号灯能够帮助协调多个执行单元对共享资源的访问,确保数据一致性与程序…...
定位改了IP属地没变怎么回事?一文解析
明明用虚拟定位软件将手机位置改到了“三亚”,为何某某应用评论区显示的IP属地还是“北京”?为什么切换了代理IP,平台却似乎“无视”这一变化? 在“IP属地显示”功能普及后,许多用户尝试通过技术手段隐藏真实位置&…...
Cygwin中使用其它平台生成的动态库
在 Cygwin 环境下链接 VC 生成的 DLL 库需解决符号导出格式和调用约定的兼容性问题,以下是具体操作步骤: 一、VC 生成 DLL 的配置要点 声明 C 风格导出函数 在 VC 中使用 extern "C" 和 __declspec(dllexport) 避免 C 名称修饰,…...











