当前位置: 首页 > news >正文

二、Linux中权限、shell命令及运行原理

shell命令及运行原理

我们使用Linux时,并不是直接访问操作系统,为什么不是直接访问操作系统呢?

如果用户直接访问操作系统,不仅使用难度大,而且不安全,容易把系统文件损坏。

那么我们通常是如何访问操作系统的呢?

我们一般是通过shell外壳程序来访问操作系统的。(图形化界面和指令操作都是操作系统提供的一种外壳程序)

shell外壳的主要功能:

1.将用户的命令进行解析,翻译给操作系统来处理

2.将操作系统的处理结果通过内核进行解析、然后翻译给使用者。

(外壳程序做命令行解析并不是自己做,它主要是接受用户的需求,通过派生子进程的方式,让子进程进行命令行解析以及程序的相关执行。)

简单来说,shell是一种命令行解释器

有时shell会在操作系统不知情的情况下,直接拒绝用户的严重非法请求,以此来保护操作系统。有时,当shell被我们强制要求做一些自己办不成的事,它仍会去尝试。

操作系统有权利拒绝我们做一些指令(例如我们没权限却仍要执行某些操作)。

在Linux中我们主要是使用命令行操作,在Windows中我们主要是使用图形化界面。

我,银行卡,ATM机

我:用户

银行卡:shell外壳程序

ATM机:操作系统

外壳程序(操作系统外壳)存在的意义:

1.做用户与操作系统交互的中间软件层(交互)

2.可以在一定程度起到保护操作系统的作用(不一定是直接保护)

echo $BASH  查看外壳

媒婆:shell

王婆:bash

bash是shell的一种。shell是对bash的统称。

如花:操作系统

张三:用户

王婆:shell外壳程序

权限

Linux是一个多用户的操作系统,可以同时存在多个用户。

root:只有一个,具有Linux下的最高权限

普通用户:可以有多个,但要受权限的约束

权限的核心:用户类别+事物(文件)属性

权限分为对人操作、对角色和文件操作

权限=人+事物属性(r读w写x执行)事物的属性决定其相关权限。

文件类型及权限    用户的拥有者/所属组/other     文件大小    创建/最近修改时间    文件名

1表示为链接文件。

Linux中,不以文件后缀来区分文件类型

文件类型有:

d:目录

-:普通文件

p:管道文件

b:块设备。最典型的块设备就是磁盘设备

c:字符设备。最典型的字符设备就是键盘或显示器

gcc不是Linux系统,它是Linux上的一个软件,它对后缀是有要求的

人:root或其他被添加的用户

拥有者:文件属于谁

所属组:文件属于哪一个组

other:不属于上面两种的任何一个,就是other

rwx分别表示权限读、写、执行

那么如何改权限呢?

改人或改属性都可以。

1.改属性

u/g/o/a:拥有者/所属组/other/全部

chmod u/g/o/a +/- r/w/x filename

 即使删除了拥有者的所有权限,拥有者照样可以给自己对该文件加权限。

 2.改拥有者、所属组

chown、chgrp

进入一个目录,需要什么权限?x

查看目录下面的文件列表:r

要在目录下创建文件或目录:w

需要超级用户才能直接改拥有者和所属组

Linux默认:一个目录被创建,起始权限是777,一个普通文件被创建,起始权限是666

umask是权限掩码,凡是在umask中出现的权限,都不应该在最终权限中出现。umask最开始那个0先不谈

最终权限=起始权限&(~umask)

如果别人在我的目录下创建了文件,即使我们没有该文件的任何权限(即我们不能对它读写执行),但我们还是可以删掉它的。

我们设置权限用来限制互相之间的读、写、执行,但是我们限制不了别人删除文件。因为这不取决于文件的属性,而是取决于该文件所在目录对于该用户的权限。我们只要将目录对于他们的权限去掉,就可以不用担心别人删掉我们的文件了。

所以我们担心的是与别人在系统某一特定路径特定目录里共同维护文件时,发生互相删除的事情。这种情况下,我们虽然可以不让别人看,但是阻止不了别人删我们的文件。(即大家所有用户都在一个共同的路径下,且对该目录都具有读写执行权限的情况。)

系统中的tmp目录就是系统中存在的所有用户共享的目录,几乎包含所有用户形成的临时文件

我们想要实现有多个用户共享一个目录,且需要在该目录下进行读、写、创建、删除文件的情况,只能让他们自己删除自己的文件,不能删除别人的文件,使用粘滞位就可以。

 最后一位为t,这个t是x的一种特殊情况。设置了之后,就只能自己删除自己的文件了。

注意,粘滞位只能给目录设置,且其他用户是不能去掉你的目录的粘滞位的。粘滞位一般是谁设置,谁取消(root)

当一个目录被设置为粘滞位,则该目录下的文件只能由

1.超级管理员删除

2.该目录的所有者删除

3.该文件的所有者删除

进入一个目录,需要什么权限?x

查看目录下面的文件列表:r

要在目录下创建文件或目录:w

写一个简易的shell

第十九节1:45:00-2:48:00 + 第二十节

为什么要程序替换?

程序替换和应用场景有关,我们有时候必须要求子进程执行新的程序

(第二十节 0:00:00 - 2:18:00 一段很重要的复习)

复习

myshell的优化

shell的环境变量是从哪来的呢?环境变量是写在配置文件中的,shell启动的时候,通过读取配置文件来获得起始环境变量

相关文章:

二、Linux中权限、shell命令及运行原理

shell命令及运行原理 我们使用Linux时,并不是直接访问操作系统,为什么不是直接访问操作系统呢? 如果用户直接访问操作系统,不仅使用难度大,而且不安全,容易把系统文件损坏。 那么我们通常是如何访问操作系统…...

【RabbitMQ上手——单实例安装5种简单模式实现通讯过程】

【RabbitMQ入门-单实例安装&5种简单模式实现通讯过程】 一、环境说明二、安装RabbitMQ三、用户权限及Virtual Host设置四、5种简单模式实现通讯过程的实现五、小结 一、环境说明 安装环境:虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8RabbitMQ版本:…...

python+pytest接口自动化之HTTP协议基础

HTTP协议简介 HTTP 即 HyperText Transfer Protocol(超文本传输协议),是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。 设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议在 OSI 模型…...

【技巧】如何保护PowerPoint不被改动?

PPT,也就是PowerPoint,是很多小伙伴在工作生活中经常用到的图形演示文稿软件。 做好PPT后,担心自己不小心改动了或者不想他人随意更改,我们可以如何保护PPT呢?下面小编就来分享两个常用的方法: 1. 将PPT改…...

【APITable】教程:创建并运行一个自建小程序

1.进入APITable,在想要创建小程序的看板页面点击右上角的【小程序】,进入小程序编辑页面。 2.创建一个新的小程序区。 点击【 添加小程序】 点击创建小程序,选择模板,输入名字。 3.确定后进入小程序部署引导页面。 4.打开Xshell 7…...

使用MyBatis操作数据库

hi,大家好,今天为大家带来MyBatis操作数据库的知识 文章目录 🐷1.根据MyBatis操作数据库🧊1.1查询操作🍇1.1.1无参查询🍇1.1.2有参查询 🧊1.2删除操作🧊1.3修改操作🧊1.4增加操作🧊…...

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--功能实现[五]

文章目录 SSM--功能实现实现功能09-带条件查询分页显示列表需求分析/图解思路分析代码实现测试分页条件查询带条件分页查询显示效果 实现功能10-添加家居表单前端校验需求分析/图解思路分析代码实现完成测试测试页面效果 实现功能11-添加家居表单后端校验需求分析/图解思路分析…...

Qt应用程序窗体最大化失效问题的解决方法

记录一个在Qt开发过程中遇到的问题: 【问题描述】在showEvent中调用showMaximized(),应用程序窗体仍然无法最大化。 【定位分析】在Qt应用程序中,如果窗体最大化失效,可能是因为在窗体的showEvent事件中使用了showMaximized()方…...

python怎么判断变量的数据类型

在编程的世界里,了解各种数据类型是非常重要的。在Python中,有着丰富的数据类型用于存储和处理不同类型的数据。掌握这些数据类型的定义和作用,我们能够更好地在程序中管理和操作数据,提高代码的效率和可读性。 Python中常见的数据…...

FastAPI 构建 API 高性能的 web 框架(二)

上一篇 FastAPI 构建 API 高性能的 web 框架(一)是把LLM模型使用Fastapi的一些例子,本篇简单来看一下FastAPI的一些细节。 有中文官方文档:fastapi中文文档 假如你想将应用程序部署到生产环境,你可能要执行以下操作&a…...

如何实现 Java SpringBoot 自动验证入参数据的有效性

Java SpringBoot 通过javax.validation.constraints下的注解,实现入参数据自动验证 如果碰到 NotEmpty 否则不生效,注意看下 RequestBody 前面是否加上了Valid Validation常用注解汇总 Constraint详细信息Null被注释的元素必须为 nullNotNull被注释的元…...

golang学习随记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 go学习快捷键及快速生成代码片段go基础循环流程控制关键字切片,拷贝函数闭包 defer语句格式化输出go语言随机数rand.seed() 包管理并发编程goroutinecha…...

【PCL-6】PCL基于凹凸型的分割算法(LCCP)

凹凸型分割算法适用于颜色类似、棱角分明的物体场景分割。LCCP方法不依赖点云颜色,只使用空间信息和法线信息。 算法流程: 1、基于超体聚类的过分割; 2、在超体聚类的基础上再聚类。 算法思路: 1、基于CC和SC判断凹凸性&…...

多进程并发服务器

文章目录 思路问题多进程并发回环服务器代码客户端代码 思路 每当一个客户端连接服务器后,创建一个子进程负责与该客户端通信,客户端断开连接之后,服务器回收子进程资源。 问题 问题1:父进程阻塞在等待连接(accept())处&#xf…...

2021秋招总结

2021 秋招总结 作为星球第一批准备秋招的人,经过这几个月的面试之后,感觉也算是有一些小小的经验了吧,就做一个简单的记录,希望能够为星球中准备秋招的伙伴们提供一些参考吧~ 序 4月初加入星球,到9月底,一…...

Linux6.34 Kubernetes yaml文件详解

文章目录 计算机系统5G云计算第三章 LINUX Kubernetes yaml文件详解一、yaml文件概述1.查看 api 资源版本标签2.写一个yaml文件demo 计算机系统 5G云计算 第三章 LINUX Kubernetes yaml文件详解 一、yaml文件概述 Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式…...

防火墙笔记

什么是防火墙 在计算机网络中是指设置在可信任的内部网络和不可信任的外部网络之间的屏障,通过强化边界控制保障内容安全,同时不妨碍内部对外部的访问。 20世纪80年代,最早的防火墙几乎与路由器同时出现,第一代防火墙主要基于包过…...

使用代码下载开源的大模型文件示例以及中文微调llama资源汇总:

一、下载示例 from huggingface_hub import snapshot_downloadrepo_id "THUDM/chatglm2-6b" local_dir ./chatglm2-6b/ cache_dir local_dir "/cache" while True:try:snapshot_download(cache_dircache_dir,local_dirlocal_dir,repo_idrepo_id,loca…...

Wav2vec2 论文阅读看到的一些问题

Wav2vec2 论文阅读看到的一些问题 这里只是简单的思考一下论文的一些问题,不是论文解读。 Q1. 为什么wav2vec依旧需要Transformer来做推理,而不直接使用VQ生成的内容? A1. Transformer在更长的序列上有更好的编码效果,例如论文也写…...

爬虫学习记录(持续更新)

一、问题记录 1.使用webdriver报错AttributeError: str object has no attribute capabilities 解决:目前使用的selenium版本是4.11.2,可以不必设置driver.exe的路径,selenium可以自己处理浏览器和驱动程序,因此,使用…...

告别工业UI!Ostrakon-VL像素终端如何提升一线员工图像识别体验

告别工业UI!Ostrakon-VL像素终端如何提升一线员工图像识别体验 1. 重新定义零售图像识别体验 在零售和餐饮行业,一线员工每天需要处理大量图像识别任务:检查货架商品、核对价签、评估店面环境等。传统工业级UI界面往往设计呆板、操作复杂&a…...

C语言是什么?初学者必看的通俗解释

由于微型计算机越来越普及,C语言成了世界上极为流行、运用颇为广泛的高级程序设计语言当中的一种。C语言是程序语言的根基,要是掌握了C语言,再去学别的语言便容易许多。那么,什么是C语言呢?对于从事编程工作的朋友而言…...

HunyuanVideo-Foley对比传统音效库:AI生成在成本与创意上的突破

HunyuanVideo-Foley对比传统音效库:AI生成在成本与创意上的突破 1. 音效制作的技术革命 影视制作中,音效设计一直是决定作品质感的关键环节。传统方式要么依赖昂贵的商业音效库,要么需要专业团队实地录制,成本高且周期长。Hunyu…...

ArduinoOcppMongoose:轻量级OCPP 1.6 WebSocket嵌入式适配器

1. ArduinoOcppMongoose:面向智能充电终端的轻量级OCPP 1.6 WebSocket适配器1.1 项目定位与工程价值ArduinoOcppMongoose 是一个专为资源受限嵌入式平台设计的 OCPP(Open Charge Point Protocol)1.6 协议栈通信适配层,其核心作用是…...

【Unity中固定宽度文本截断与省略号处理方案】

在UI设计中经常遇到文本内容超出固定宽度的情况,需要实现自动截断并添加省略号的效果。以下是几种实用解决方案:一:Text组件的自动处理Unity的Text组件自带水平溢出处理功能:在Inspector面板找到Text组件设置Horizontal Overflow为…...

拉曼激光雷达 L0 级数据 Python处理和可视化实现,结果分析

4 个通道产品逐图分析 左上:532P 通道(532 nm 平行偏振通道) 产品类型 :532 nm 弹性散射平行偏振原始信号(L0 级) 物理含义 :接收 532 nm 激光与大气分子、气溶胶、云粒子发生弹性散射后&#…...

XUnity.AutoTranslator:如何为Unity游戏实现免费实时翻译的完整指南

XUnity.AutoTranslator:如何为Unity游戏实现免费实时翻译的完整指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而无法享受优秀的Unity游戏?XUnity.Aut…...

GEO服务商验证标准,如何知道GEO生成式引擎服务商靠谱?

GEO服务商验证标准验证GEO服务商是否可靠,核心在于其能否将AI推荐结果转化为可直观查看、可自主验证的数据,无透明监测机制的优化服务均属于盲盒式优化。一、数据监测能力服务商需具备实时数据展示能力,无法提供实时数据的可直接排除。快速搜…...

告别复杂配置:用Chainlit前端5分钟体验Qwen3-14B文本生成

告别复杂配置:用Chainlit前端5分钟体验Qwen3-14B文本生成 1. 为什么选择Qwen3-14B_int4_awq 如果你正在寻找一个既强大又易于部署的文本生成模型,Qwen3-14B_int4_awq绝对值得考虑。这个模型基于Qwen3-14B进行int4的awq量化,通过AngelSlim技…...

Meta推出Muse Spark,AI领域再掀波澜

Meta告别旧模型,Muse Spark闪亮登场周三,Meta宣布推出Muse系列的首个AI模型——Muse Spark,这标志着Meta彻底告别了之前在开源Llama模型系列上的工作。Llama系列模型在用户和独立大语言模型(LLM)排名中反响平平&#x…...