Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念

news2024/11/24 19:46:28

1.shell命令行的概念以及原理

首先,用户下达指令需求。此时Linux操作系统的内核kernel,并不会直接接收用户下达的指令,因为操作系统不擅长跟用户打交道。那么指令要如何下达呢?这就命令行解释器来对用户的指令进行处理。

1.1.shell命令行的介绍

shell对于Linux主要是对指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。这里我就简单举一个样例。比如在我的宿舍里有一个哥们儿,他非常的内向害羞,他很喜欢我们班的班花。由于他不敢开口向班花表白,他就托我去班花的宿舍门口去替他表明他对班花的爱慕之情。于是乎我就跑了过去,跟班花说明了他对她的爱意。很可惜,班花并不喜欢他。我回到了宿舍将情况跟他进行了说明。他直接就玩起了原神,堕入了虚拟的世界中。第二天,我觉得有些许过意不去,就又去找了班花,想替他撮合撮合。可惜,这是我看到了班花和她的男朋友走在一起,于是乎我识趣的溜了。这里班花就是Linux操作系统的内核,我就是shell程序,而我的舍友就是用户。

在这里插入图片描述

2.Linux权限的概念

2.1.Linux用户的分类

Linux下用户分位两种:root用户(超级用户)和普通用户。两者之间的区别是root用户基本不受权限的约束,而普通用户受权限的约数。用户之间是可以切换的。每个用户都有与之对应的密码,平时我们在学习的时候,建议root用户和普通用户的密码不一样,这样可以避免不必要的错误。

2.1.1.su指令

适用于切换当前的用户,可以带 - 选项。下面我就通过样例进行演示。

su usrname
su -

在这里插入图片描述

2.2.什么叫权限?

在生活中,我们不免会使用视频播放软件追剧。当我们想要追一些当下热门的剧时,点击进去提示你,你不是vip不能看当前电视剧。这就是生活中一个简单的权限现象。当你充值了vip你就具备了看剧的权限,这是因为vip这个身份所带给你的权限。权限的本质其实就是一件事能否被你做。Linux权限是指在Linux系统中,对文件和目录进行访问控制的权限。

2.3.文件的属性

权限也和属性是息息相关的。举个例子,你有一本笔记本,你可以对它进行写、读等操作,这是因为它本身就自带这些属性。那你可以吃它吗?显然是不行的,它不具备被食用的属性。Linux系统中文件的第一个属性表示文件的类型。

  • 表示普通文件,文档文件、源代码文件和库文件等都属于普通文件
    d 表示目录文件
    b 表示块文件,如硬盘文件
    c 表示字符设备文件,如键盘文件、显示器文件等
    p 表示管道文件,用于通信

在这里插入图片描述

2.4.后缀名的意义

在Linux系统中,文件的后缀名并没有直接的意义。后缀名取决于用户的需求。下面我举一个后缀名有意义的样例
在这里插入图片描述

2.5.权限身份的介绍

Linux中文件的权限身份分为三种分别是:拥有者、所属组、其他人。为什么有了拥有者和其他人还需要所属组这个权限身份呢?这里我举一个例子,假设,现在你和你的舍友一起去了一家公司实习,你在A组,他在B组,你们公司只有一台Linux机器。一天你写了一段很棒的代码,由于你们是不同的小组,你不希望它看到你的代码。此时你就将其他人的读属性设成-。他就没法看到你的代码了。但是,你的领导想看看你最近写了啥代码,这是你就陷入难关,如果只有其他人和拥有者这两个权限身份的话,你无疑需要开放其他人权限身份的读权限,那么你的舍友也就会看到你写的代码了。这时,所属组作用就出来了,你可以将你的领导拉入你的所属组中,并配置相应的所属组权限。这样其他人访问不了你的代码,而你的所属组成员可以访问你的文件。

2.6.权限身份对应的文件权限

权限(八进制)r (读)w(写)x(可执行)
000---
001--x
010-w-
011-wx
100r--
101r-x
110rw-
111rwx

权限身份对应的文件权限通常三个代表一个位置,分别对应r/-,w/-,x/-
即读、写和可执行权限,而-表示没有该权限。所以权限是一个二元制的,身份权限也是可以以8进制来表示。

在这里插入图片描述

2.7.权限的修改以及现象

简单介绍权限修改指令为chmod。

chmod 权限身份+rwx 表示读写可执行权限都打开
chmod a-rwx 表示所有人所有权限都关闭
chmod 777 表示所有人所有权限都打开
chmod 776 表示拥有者和所属组有读写可执行权限,其他人只有读写权限

在这里插入图片描述
下面简单举例来看看权限约束的现象
在这里插入图片描述
在这里插入图片描述
chown指令用于修改文件的拥有者,chgrp指令用于修改文件的所属组。这是两条需要具备root权限的指令,普通用户若想使用这两条指令需要进行sudo提权。

sudo chown xxx:xxx 修改当前目录下的拥有者和所属组
sudo chown xxx 修改当前目录下的拥有者
sudo chgrp xxx 修改当前目录的所属组

在这里插入图片描述

此时,xyx用户就不具备对文件的写权限,仅可读。root权限对于文件的拥有者和所属组具有修改权限。

2.7.1.关于所属组和拥有者权限不同的现象

假设,我既是文件的拥有者也是所属组身份,但是,拥有者只有读权限,而所属组具有读写权限。此时,我读取文件没有问题,那写入文件是否有问题呢?下面我们直接上实操。
在这里插入图片描述

2.8.权限掩码的概念

这里我们创建两个文件和两个目录,来看看系统默认的身份权限。
在这里插入图片描述
其实身份权限 = 默认身份权限 & (umask按位取反)。而普通文件默认权限为666 ,目录文件的默认权限为777。输入umask指令,可以查看当前系统下的权限掩码。
在这里插入图片描述
下面我简单的对上面普通文件和目录文件的身份权限进行计算演示
在这里插入图片描述

umask xxx即可修改当前的权限掩码。

在这里插入图片描述

2.7.2.关于目录文件的权限现象

前面简单介绍了普通文件的各个权限的所对应的行为,下面介绍目录文件的各个权限所对应的行为。首先是读权限,读权限所限制的是查看当前目录下的文件内容。
在这里插入图片描述
而目录文件的写权限是用来限制在当前目录下的创建、删除以及修改等操作。
在这里插入图片描述
相对应的可执行权限其实就是决定了我们能否打开这个目录。

在这里插入图片描述
在这里插入图片描述
从上面的样例中,可以看到一个有趣的现象,虽然test01目录我们不具有可执行权限。但是,这并不妨碍我们查看它的文件内容。这就好比,你们在班上有一个不喜欢的同学叫张三,一天,你和几个同学一起去踢球,张三也想加入你们。但是,你们却说不允许他进入绿茵场,张三于是乎退到了不远处的绿荫下看你们踢球。这时候你们不乐意了,过去问候张三,张三这时候说你们有什么证据说我在看你们呢?我看的是操场上跑步的女生。

2.9.粘滞位

我们在Linux下同一个终端不同用户要共享资源,不能任何一个人的家目录下进行的。这是因为任何人的家目录只有拥有者具有读、写、可执行权限。这时我们就需要建立一个公共目录来进行资源的共享。
在这里插入图片描述
请看下面的样例演示
在这里插入图片描述
在我创建的share目录下,我创建了一个共享目录里,并写了一个文本文件,一天我的舍友想看看我在这个目录里写了啥,于是乎他cat了我写的文本文件。但是,我不行让他看见,所以我把ohter的读权限给关闭了。可是他居然把我的文件给删了,这就让我就得很爽了,因为删除文件的权限取决于目录权限,如果我把目录权限下的写权限关闭,那我还怎么创建文件呢?这时候就需要粘滞位来保证我们在共享目录下的文件不会被随意删除。

chmod o+t 表示对于other身份添加粘滞位

在这里插入图片描述

在这里插入图片描述
补充:粘滞位一般是给目录配置的权限,一般是用于共享的目录。一般配置了粘滞位,只有文件的拥有者和root能够删除。t是一种特殊的x权限。

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

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

相关文章

每日学术速递5.26

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Text2NeRF: Text-Driven 3D Scene Generation with Neural Radiance Fields 标题:Text2NeRF:具有神经辐射场的文本驱动 3D 场景生成 作者:Jingb…

从组件化角度聊聊设计工程化

目录 设计系统 设计系统的定义 设计系统的优势 设计系统存在的问题 设计工程化 设计系统探索 设计系统落地实践 Design Token Design Token 实践 设计工程化理想方案构想 展望 参考文献 近几年围绕业务中台化的场景,涌现出了许多低代码平台。面对多组件…

RAW、RGB 、YUV三种图像格式理解

文章目录 1. 背景2. 相关概念2.1 颜色与色彩空间2.2 RAW图像2.3 RGB图像2.4 YUV图像 3. 分类简图 RAW、RGB 、YUV三种图像格式理解 1. 背景 在工作中,经常听到用来描述图像格式的RAW,RGB与YUV,但一直没有系统的进行了解,处于局部认…

Redis实战之实现共同关注

Redis实战之实现共同关注 一 需求 二 实现 package com.hmdp.service.impl;import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.…

用ChatGPT一分钟自动产出一份高质量PPT

如何用ChatGPT一分钟自动产出一份高质量PPT,节约时间摸鱼呢?废话少说,直接上案例。 一.用ChatGPT做一下提问,这里我用的小程序万事知天下,根据自己PPT的需求,制作chatgpt的prompt就行了。 请帮我创建一个以…

Spring Security 核心解读(一)整体架构

Spring Security 整体架构 前提整体架构Servlet 整体的过滤器模型Security 过滤器链自定义过滤器 实际开发解决方案一个替代cookie认证的filter其他组件,后续抽时间再整理整理 前提 开源项目一手文档基本都在github,标准文档基本都在官网。 最好的文档就…

在Centos Stream 9上Docker的实操教程 - Docker的常用命令

在Centos Stream 9上Docker的实操教程 - Docker的常用命令 Docker启动类命令Docker镜像命令镜像列表 docker images镜像查找 docker search拉取镜像 docker pull删除镜像 docker rmi查看占用信息 docker system df容器创建新镜像 docker commit 容器命令启动容器 docker run查看…

【历史上的今天】4 月 27 日:Tumblr 上线;施乐推出了 Star 工作站;第一台安德伍德打字机诞生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 27 日,在 1791 年的今天,摩斯电码的共同发明者、电报发明者塞缪尔摩斯(Samuel Morse)诞生。摩斯最开始是一…

基于springboot + vue 的学生成绩管理系统

基于springboot vue实现的学生成绩管理系统 主要模块: 1)学生模块:我的成绩、成绩统计、申述管理、修改密码 2)教师模块:任务管理、对学生班级任务安排、班级学生的成绩查看、申述管理 3)管理员模块&…

Vue自定义插件的使用

通过 Vue 实例绑定方法: 在 plugins.js 文件中创建 filter 过滤器,定义一个只返回前四个字符的方法。 export default {install(Vue){// 定义过滤器Vue.filter(mySlice,function(value){return value.slice(0,4);})} } 由于我们之前在 main.js 文件中引入…

六级备考20天|CET-6|翻译练习|真题·红楼梦|8:50~9:08+11:33~12:00

目录 1 中文 2 英文​ 3 解析 4 订正 ​ 1 中文 漏翻译:具有很强的艺术感染力! 2 英文 3 解析 tell 讲述 tragic love story 悲剧性爱情故事 own painful personal experience 自己痛苦的个人经历 major/minor characters 主要/次要人物 be viv…

SSH爆破攻击及应急响应/事件处置

提示:本文是我做的笔记,有问题可以留言 目录 前言一、什么是SSH?二、开始前的准备1.扫描2.准备爆破3.准备ssh登录登陆后的准备nc反弹 应急响应/事件处置1.查看网络连接情况2.查看守护进程3.删除,结束异常后门4.修改密码 总结 前言…

day40_servlet

今日内容 零、 复习昨日 一、注解 二、改造项目 三、请求转发 四、重定向 零、 复习昨日 一、注解(Annotation) 注解,又称为注释.它是给程序看的注释. JDK1.5后才出现的,作用是为了提高开发效率的,如何做到?(一个注解可以简化很多很多代码…) 常见注解: Override 1.1 自定义注…

Linux基础开发工具之软件包管理器

目录 前言 1.什么是软件包 2.软件下载的三种方式 3. Linux软件生态 4. 使用yum安装软件 5.yum源的相关介绍 总结: 前言 Linux作为一款操作系统,其自然也和我们其他的操作系统一样需要安装对应得软件去满足我们的需求,因此为了更好的下载…

ICV报告: ADAS SoC市场规模将在2024年迎来较大突破

随着先进驾驶辅助系统(ADAS)的出现和对于自动驾驶的追求,汽车行业正在经历快速转型。这些技术进步的核心是ADAS SoC,它是实现多个功能集成于单一平台的关键组件。ADAS SoC已经成为智能汽车的重要驱动因素,彻底改变了安…

ArduPilot开源代码之H743+BMI270x2+ChibiOS配置适配

ArduPilot开源代码之H743BMI270x2ChibiOS配置适配 1. 源由2. 配置适配2.1 bootloader配置2.2 flight controller配置 3. 4.3.6固件编译Step 1: 获取源代码Step 2: 准备编译环境Step 3: 复制配置文件Step 4: 编译bootloaderStep 5: 编译飞控 4. 基础配置4.1 机型配置4.2 IMU校准…

通过python采集lazada商品详情数据接口,支持多站点。

为了采集Lazada商品详情,您可以使用Python的网络爬虫库(例如BeautifulSoup、Scrapy等)来获取页面内容。以下是基本步骤: 安装所需的Python库(例如requests、BeautifulSoup等)。使用requests库发送GET请求并…

C/C++开发,libiec61850库学习及运用

目录 一、libiec61850库下载编译 1.1 下载 1.2 linux编译: 1.3 win编译 二、案例编译测试 2.1 CMakeLists.txt调整(server_example_goose) 2.2 模型static_model.h/static_model.cpp生成 2.3 案例编译(server_goose) 2.4 客户端编译 2.5 运行测试 一、libiec61850…

SAP-MM 条件类型字段解析

01、“定价类型”:定义此条件类型的代码和描述,代码不能重复,描述可更改,根据实际需要,条件类型可定制; 02、“存取顺序”:表示此条件类型在定价时,要到存取顺序号定义的条件表中读…

学C的第二十二天【深度剖析数据在内存中的存储:1. 数据类型介绍;2. 整型在内存中的存储】

相关代码gitee自取:C语言学习日记: 加油努力 (gitee.com) 接上期:学C的第二十一天【初阶测评讲解:1. 计算递归了几次;2. 判断 do while 循环执行了几次;3. 求输入的两个数的最小公倍数;4. 将一句话的单词进…