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

news2024/11/15 8:03:57

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启动的时候,通过读取配置文件来获得起始环境变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/855222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全网最牛,接口自动化测试实现详细总结,23年测试进阶之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 为什么要做接口自…

Java String类【超详细】

文章目录 1. 字符串构造2. String对象的比较2.1 比较是否引用同一个对象2. 2boolean equals(Object anObject) 方法:按照字典序比较2.3 int compareTo(String s) 方法: 按照字典序进行比较2.4 int compareToIgnoreCase(String str) 方法:与compareTo方式…

图像 处理 - 开源算法集合

图像 处理 - 开源算法集合 1. 图像 检测 - MMDetection 简介2. 图像 分割 - MMSegmentation 简介3. 图像 其他 - MMPreTrain 以下介绍的每个 开源算法集合 均包含多种 开源算法 1. 图像 检测 - MMDetection 简介 简介:MMDetection 是一个基于 PyTorch 的目标检测开…

【C++进阶之路】map与set的基本使用

文章目录 一、set系列1.set①insert②find③erase④lower_bound与upper_bound 2.multiset①count②equal_range 二、map系列1.map①insert1.插入pair的四种方式2.常用两种方式 ②[]2.multimap①count②equal_range 一、set系列 1.set ①insert 函数分析(C98&…

解决Windows:Call to undefined function exif_imagetype()

很明显,是php安装时没有打开某些扩展,以致不能执行exif_imagetype()这个方法,因此需要打开。 网上很多人说需要打开下面这两个扩展: extension=php_exif.dll extension=php_mbstring.dll 但只说对了一半,我一开始也按照网上文章说的打开这两个扩展,但是还是同样错误。…

2. 软件需求 面向对象分析

目录 1. 软件需求 1.1 需求分类 1.2 需求获取 1.3 需求分析 2. 面向对象分析(OOA) 2.1 统一建模语言 UML 2.2 用例模型 2.2.1 用例图的元素 2.2.2 识别参与者 2.2.3 合并需求获得用例 2.2.4 细化用例描述 2.3 分析模型 2.3.1 定义概念类 …

3.1线程之间共享数据的问题

线程之间共享数据的问题 从整体上来看,所有线程之间共享数据的问题,都是修改数据导致的。如果所有的共享数据都是只读的,就没有问题,因为一个线程所读取的数据不受另一个线程是否正在读取相同的数据而影响。然而,如果…

慧算账的千亿财税市场之旅,从当好中小企业财税之友开始

数字化转型浪潮下,各个行业都在不断升级进化。不过,各领域中头部企业与中小企业数字化的方式有所不同。头部企业资金实力雄厚,对于数字化架构的搭建,往往会以内设部门加外部合作的方式来推进,而中小企业在可投入研发资…

Vscode无法写入文件 NoPermissions (FileSystemError): Error: EACCES: permission

用Vscode想要新建一个index.html的时候遇到了下图问题,说没有权限无法写入文件。 没有权限,咱们给他加上权限哈哈哈,博主是Mac电脑,如下操作: 1.找到你项目的根目录,右键,点击“显示简介”。 …

2023华数杯C题总结

前言 对这次比赛中遇到的问题和卡住的思路进行复盘,整理相关心得,供以后比赛参考 🧡1.认识数据类型🧡 连续变量:母亲年龄、妊娠时间、CBTS、EPDS、HADS、整晚睡醒时间、婴儿年龄 无序分类变量:婚姻状态、…

Java中ArrayList常用方法的学习

Java中ArrayList常用方法的学习 需求分析代码实现小结Time 需求分析 ArrayList集合的常用方法学习 代码实现 java.util.ArrayList;/*** Author:LQ* Description:* Date:Created in 16:45 2023/8/9*/ public class ListTest {public static void main(String[] args) {ArrayLis…

哪个版本的FL Studio更适合我?2023年到底应该入手哪一款FL Studio?

很多打算入手正版FL Studio的新手朋友都会纠结一个问题:哪个版本的FL Studio更适合我,2023年到底应该入手哪一款FL Studio?本文会介绍每个版本之间的差异点,并带大家选择适合自己的FL Sudio版本。 FL Studio Mac-安装包&#xff…

B2B2C线上直播购物商城开源搭建--多语言+自带商品库

要搭建一个B2B2C线上直播购物商城,可以考虑以下步骤: 1. 确定技术需求:确定前端和后端使用的技术栈。 2. 搭建基础环境:购买一个域名和服务器空间,安装和配置相应的操作系统和数据库。 3. 开发商城平台:…

LeetCode150道面试经典题--罗马数字转整数(简单)

目录 1.题目 2.示例 3.思路 4.案例代码(Java) 1.题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L …

UE 5 GAS Gameplay Ability System

游戏技能系统 简称(GAS),是一个健壮的,高度可扩展的gameplay框架,通常用于构件RPG、MOBA等游戏的完整战斗逻辑框架。 通过GAS,可以快速地制作游戏中的主动/被动技能、各种效果Buff、计算属性伤害、处理玩家…

openGauss学习笔记-31 openGauss 高级数据管理-索引

文章目录 openGauss学习笔记-31 openGauss 高级数据管理-索引31.1 语法格式31.2 参数说明31.3 示例 openGauss学习笔记-31 openGauss 高级数据管理-索引 索引是一个指向表中数据的指针。一个数据库中的索引与一本书的索引目录是非常相似的。 索引可以用来提高数据库查询性能&…

我在VScode学Java多态(Java多态、instanceof)

Java的多态(Polymorphism)是面向对象编程中的一种特性,它允许不同的对象能够以统一的方式进行访问和操作。它允许一个类的实例在运行时表现出多种形态。 Java多态的实现主要依赖于两个基本概念:继承和方法重写。在Java中&#xff…

程序员的趣闻:神奇Bug与不可思议的技术世界

文章目录 Bug本身情况发现Bug的过程怎么对待这个Bug其他感受 程序员的世界充满了各种离奇而又难以置信的趣闻,其中不乏那些令人目瞪口呆的神奇Bug。有时候,这些故事不仅令人捧腹大笑,还展现了技术世界的多姿多彩。让我们走进这个充满惊奇的领…

Java集合容器详解:ArrayList、LinkedList和HashMap、HashTable及其区别

文章目录 一、简介二、ArrayList详解2.1 动态数组2.2 扩容机制2.3 特点2.4 操作 三、LinkedList详解3.1 双向链表结构3.2 双向链表结构3.3 操作 四、HashMap详解4.1 概述4.2 内部实现4.2.1 哈希表结构4.2.2 散列冲突解决4.2.3 扩容机制 4.3 版本差异4.4 实操 五、HashTable5.1 …

安卓:LitePal操作数据库

目录 一、LitePal介绍 常用方法: 1、插入数据: 2、更新数据: 3、删除数据: 4、查询数据: 二、LitePal的基本用法: 1、集成LitePal: 2、创建LitePal配置文件: 3、创建模型类…