当前位置: 首页 > 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可以自己处理浏览器和驱动程序,因此,使用…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...