shell命令以及运行原理和lLinux权限
shell命令以及运行原理
什么是shell
-
shell是操作系统的外壳程序统称,我们是通过shell去和操作系统沟通的。
-
从技术角度,shell最简单的定义就是命令行解释器,主要包含两个功能:
-
将使用者的命令翻译给核心处理
-
将核心的处理结果翻译给使用者
为什么需要shell?
-
Linux严格意义上来说是一个操作系统,我们将其称为核心(kernel)。但我们一般用户不能直接使用核心(kernel),而是通过核心的外壳程序(shell)来和核心沟通,为什么呢?主要原因就是,使用者所写的命令行核心看不懂,而核心的处理结果使用者也看不懂,在他们(使用者和核心)之间需要有一个翻译。
-
一个比方:假设你自己是一个企业家,你的产品非常优秀。名声传到了国外,国外有一个客户对你的产品很感兴趣,想要和你聊聊投资合作的事情,但你们之间语言不通,需要找一个翻译来帮助你们进行沟通以促成这笔生意。这个翻译就是shell,你就是使用者,核心就是外国客户。
shell对于Linux和Windows GUI对于Windows的区别
-
我们在使用Windows时也不是直接操作Windows操作系统,而是通过图形化接口、点击,从而完成我们的操作,这些图形化结构、点击就是window的外壳程序。
-
shell对于Linux和window的GUI对于window是一样的,我们也不是直接给核心下指令,而是将指令给shell,让shell翻译我们的指令给Linux内核,反馈的结果再通过shell翻译给我们。
shell和bash、sh的关系
-
可以简单的理解为shell是总称,bash、sh是具体的外壳。好比警察(shell)和李警官(bash)、王警官(sh)的关系
总结
-
shell存在的意义:
-
命令解释
-
保护内核
Linux权限
Linux权限的概念
Linux下的两类用户
-
超级用户(root):可以再Linux系统下做任何事情,命令提示符是‘#’
-
普通用户:在Linux下做有限的事情,命令提示符是‘$’

![]()
Linux下的用户切换命令
-
命令:
-
su[用户名]
-
功能:切换用户

-
su -
-
功能:重新登陆root

Linux的权限管理
文件访问者的分类
-
文件和文件目录的所有者(主人)
-
文件和文件目录的所有者所在组的用户(主人的同时)
-
其他用户(主人不认识的人)
-
一个组里面可以只有一个人
文件类型和访问权限
-
Windows和Linux区分文件方式的区别
-
Windows区分文件类型是通过后缀
-
Linux区分文件类型与后缀无关,和文件是否具有“可执行权限”有关,但不代表不用后缀
-
Linux后缀的意义:给人看的
-
只是Linux不区分后缀,不代表Linux上的软件不区分后缀
-
详情见图

-
文件类型分类
-
d:文件夹
-
-:普通文件
-
l:软连接(类似于Windows的快捷方式)
-
b:块设备文件(例如硬盘、光驱等)
-
p:管道文件
-
c:字符设备文件(比如屏幕等串口设备)
-
s:套接口文件
-
基本权限
-
读(r):对于文件来说,具有读取文件内容的权限;对于目录而言,具有浏览该目录信息的权限
-
写(w):对于文件而言,具有修改文件内容的权限;对于目录而言,具有删除移动目录内文件的权限
-
执行(x):对于文件而言,具有执行文件的权限;对于目录而言,具有进入目录的权限
文件权限值得表示方法
-
字符表示方法
-
r--:只读
-
--x:仅可执行
-
-wx:可写可执行
-
rwx:可读可写可执行
-
-w-:仅可写
-
rw-:可读可写不可执行
-
r-x:可读可执行
-
---:什么都不能干
-
8进制表示方法
-
r:4 100
-
w:2 010
-
x:1 001
-
rw:6 110
-
rx:5 101
-
wx:3 011
-
rwx:7 111
-
---:0 000
-
记忆方法:第一个对应着读、第二个对应着写、第三个对应着执行,对应的位置唯一就代表具有哪个权限
文件访问权限的相关设置方法
-
设置文件的访问权限的命令
-
语法(格式) chmod[参数] 权限 文件名
-
功能:设置文件的访问权限
-
常用选项:
-
R-> 递归修改目录文件的权限 注:只有文件的拥有者和root才可以改变文件的权限
-
使用chmod搭配用户表示符和+/-=权限字符来修改权限
-
+/-=权限字符
-
+: 向权限范围增加权限代号所表示的权限
-
-:向权限范围取消权限代号所表示的权限
-
=:向权限范围赋予权限代号所表示的权限
-
用户标识符
-
u:拥有者
-
g:拥有者同组成员
-
o:其他用户
-
a:所有用户
-
用例
chmod u+w /home/abc.txtchmod o-x /home/abc.txtchmod a=x /home/abc.txt
-
用三位8进制数字表示
chmod 664 /home/abc.txtchmod 640 /home/abc.txt
-
chown命令
-
功能:修改文件的拥有者
-
格式: chown[参数]用户名 文件名
chown user1 f1chown -R user1 filegroup1
-
chgrp命令
-
功能:修改文件或目录的所属组
-
格式:chgrp [参数] 用户组名 文件名
-
常用选项:-R 递归修改文件或目录的所属组
chgrp grp1 f1
chgrp -R grp1 f1
-
umask命令
-
功能:查看或修改文件掩码
-
格式:umask 权限值
-
实例
umask 755umask //查看umask 044//设置
注:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。
超级用户默认掩码值为0022,普通用户默认为0002。凡是在权限掩码中出现的权限最 终都要在起始权限中去掉。
去掉的方法:清零比特位
-
新建文件夹默认权限 = 0666
-
新建目录默认权限 = 0777
-
但实际上用户所创建的文件和目录,看到的权限往往不是上面这个值。为什么呢?原因是创建文件或者目录的时候还要受到umask的影响。**假设默认权限是mask,则实际创建出来的文件权限是maxk & (~umask)
-
最终权限 = 起始权限 & (~umask)
-
file指令
-
功能:识别文件类型
-
语法:file [选项] 文件或目录
-
常用选项:
-
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-
-z 尝试去解读压缩文件的内容
目录的权限
-
目录权限的分类
-
可执行权限:如果目录没有可执行权限则无法进入(cd)到目录中
-
可读权限: 如果目录没有可读权限,则无法使用ls等命令查看目录中的文件内容
-
可写权限: 如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件
-
根据上面权限的分类及其内容我们可以发现好像有一个bug——只要操作者有写权限,就能随意地删除文件和创建文件,那张三的文件被李四删除了怎么办???为了解决这个问题,Linux加了粘滞位这个东西。
-
粘滞位的添加:chmod +t(只能给目录添加)
chmod +t /home/ 加上粘滞位
ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
su - litao
rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
-
当一个目录被设置为粘滞位,则该目录下文件只能由三个角色删除(超级管理员(root)、该目录的所有者、该文件的所有者)
-
总结:目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档
相关文章:
shell命令以及运行原理和lLinux权限
shell命令以及运行原理 什么是shell shell是操作系统的外壳程序统称,我们是通过shell去和操作系统沟通的。 从技术角度,shell最简单的定义就是命令行解释器,主要包含两个功能: 将使用者的命令翻译给核心处理 将核心的处理结果…...
斯坦福JSKarel编程机器人使用介绍
斯坦福JSKarel编程机器人使用介绍 为了避免被编程语言固有的复杂性所困扰,有一个被称为卡雷尔(Karel)机器人的微型世界(microworld)的简化环境,可以让编程初学者从中学习理解编程的基本概念,而…...
SpringBoot中pom.xml不引入依赖, 怎么使用parent父项目的依赖
在Spring Boot项目中,如果你想使用父项目的依赖,而不想在pom.xml中显式引入依赖,你可以使用Maven的继承机制。 首先,确保你的Spring Boot项目是一个子项目,即它继承自一个父项目。要实现这一点,在pom.xml文…...
基于vue3+ts5+vue-router4+pinia2的PC端项目搭建教程
导语:在日常开发中,有时候会在项目中引入 ts 来解决一些 js 的问题,下面就简单介绍一下如何使用 vue3tsrouterpinia 来搭建一个项目。 目录 简介创建安装配置实战 简介 vue3 目前是常用的 vue 版本,提供了组合式 API 以及一些新…...
6个无版权、免费、高清图片素材库
找免费无版权图片素材,就上这6个网站,超高质量,可商用,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx 网站主要为新手设计师提供免费素材,这些素材的质量都很高,类别也…...
什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的 IE?
什么是响应式设计: 响应式设计(Responsive Design)是一种Web设计和开发方法,旨在使网站在不同设备和屏幕尺寸上都能提供一致的用户体验。响应式设计的目标是适应多种终端,包括桌面计算机、笔记本电脑、平板电脑和移动设备&#x…...
LeetCode 2906. 构造乘积矩阵【前后缀分解,数组】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
vue3+koa+axios实现前后端通信
vue3koaaxios实现前后端通信 写了一个小demo来实现前后端通信,涉及跨域问题,非常简单可以给大家平时开发的时候参考 服务端: 目录结构如下: router index.js // router的入口文件 // 引入路由 const Router require("koa-router&quo…...
Required MultipartFile parameter ‘file‘ is not present
出现这个原因我们首先想到的是加一个RequestParam("file"),但是还有可能的原因是因为我们的名字有错误 <span class"input-group-addon must">模板上传 </span> <input id"uploadFileUpdate" name"importFileU…...
vue3后台管理系统之layout组件的搭建
1.1静态布局 <template><div class"layout_container"><!-- 左侧导航 --><div class"layout_slider"></div><!-- 顶部导航 --><div class"layout_tabbar"></div><!-- 内容展示区 --><…...
Minio 文件上传(后端处理同文件判断,同一文件秒传)
记录minio 文件上传 MinIO提供多个语言版本SDK的支持,下边找到java版本的文档: 地址:https://docs.min.io/docs/java-client-quickstart-guide.html maven依赖如下: XML <dependency><groupId>io.minio</groupId…...
模拟IIC通讯协议(stm32)(硬件iic后面在补)
一、IIC基础知识总结。 1、IIC通讯需要两条线就可以,SCL、SDA。 2、IIC的数据传输的速率,不同的ic是不同的,根据电平维持的延时函数的时间来确定IIC数据传输的速率. 3、IIC的延时函数可以使用延时函数,延时函数一般使用系统滴答时…...
使用注解读取properties配置文件
文章目录 1、背景2、注解方式2.1 PropertySource 、 ConfigurationProperties2.2 读取properties中全部字段值ConfigurationProperties2.3 读取properties中部分字段值:value("${自定义key}") 1、背景 服务中使用到了redis,需要配置redis连接…...
Python---练习:求世界杯小组赛的总成绩(涉及:布尔类型转换为整型)
案例 世界杯案例 需求: 世界杯案例,世界杯小组赛的比赛规则是我们的球队与其他三支球队进行比赛,然后根据总成绩(积分)确定出线资格。小组赛球队实力已知(提示用户输入各球队实力),我们通过一个数字表示。如果我们赢…...
vue3学习源码笔记(小白入门系列)------KeepAlive 原理
目录 说明组件是如何被缓存的,什么时候被激活对于KeepAlive 中组件 如何完成激活的对于KeepAlive 中组件 如何完成休眠的 总结 说明 Vue 内置了 KeepAlive 组件,实现缓存多个组件实例切换时,完成对卸载组件实例的缓存,从而使得组…...
边写代码边学习之mlflow
1. 简介 MLflow 是一个多功能、可扩展的开源平台,用于管理整个机器学习生命周期的工作流程和工件。 它与许多流行的 ML 库内置集成,但可以与任何库、算法或部署工具一起使用。 它被设计为可扩展的,因此您可以编写插件来支持新的工作流程、库和…...
基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码
基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码 文章目录 基于吉萨金字塔建造优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.吉萨金字塔建造优化BP神经网络3.1 BP神经网络参数设置3.2 吉萨金字…...
axios的post请求所有传参方式
Axios支持多种方式来传递参数给POST请求。以下是一些常见的方式: 作为请求体: 你可以将参数作为请求体的一部分,通常用于发送表单数据或JSON数据。例如: const data { key1: value1, key2: value2 }; axios.post(/api/endpoint, …...
【c++】向webrtc学比较2: IsNewerSequenceNumber 用于NackTracker及测试
LatestSequenceNumber inline uint16_t LatestSequenceNumber(uint16_t sequence_number1,uint16_t sequence_number2) {return IsNewerSequenceNumber(sequence_number1, sequence_number2)? sequence_number1: sequen...
PRCV 2023:语言模型与视觉生态如何协同?合合信息瞄准“多模态”技术
近期,2023年中国模式识别与计算机视觉大会(PRCV)在厦门成功举行。大会由中国计算机学会(CCF)、中国自动化学会(CAA)、中国图象图形学学会(CSIG)和中国人工智能学会&#…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...
