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

Linux基础:2:shell外壳+文件权限

shell外壳+文件权限

  • 一.shell原理:
    • 1.对比:windo GUI 和 shell
      • 1.windo GUI
      • 2. shell
    • 2.为什么?是什么?怎么办?
      • 1.为什么有shell
      • 2.是什么?
      • 3.怎么办?
      • 4.补充:
  • 二.linux权限管理:
    • 1.基本概念:
      • 1-1:用户切换
    • 2.文件类型和访问权限:
      • 1.文件类型:
      • 2.访问权限类型:
        • 2-1:文件权限值的表示方法:
        • 2-2:文件权限的设置方法:
        • 2-3:快速设置文件三个分区的权限
      • 3.文件(目录)拥有者的改变:
      • 4.文件(目录)所属组的改变:
      • 5.补充root
      • 6.umask 权限掩码
      • 7.关于目录权限的三个情况:
    • 3.文件共享tmp
      • 1.文件共享:
      • 2.粘滞位:

一.shell原理:

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。

在这里插入图片描述

1.对比:windo GUI 和 shell

1.windo GUI

我们使用的windo系统就满足图形化的一种交互给日常用户去使用的,是通过图形操作进行与操作系统的互联,通过图形化的这一个外壳实现自己的操作通过解释器与核心进行互联核心处理之后的结果返回出来到我们的图形化界面上面。

2. shell

关于shell 就是把用户输入的命令通过他的解释给核心,核心接收信息进行相关的操作,然后通过sheel把结果翻译并且展示出来:(两个外壳本质是一样的)

2.为什么?是什么?怎么办?

1.为什么有shell

1.用户是不善于直接和操作系统进行交互的所以需要一个shell外壳

2.是什么?

1.shell通过解释命令给内核,并且显示翻译内核的结果。

3.怎么办?

1.关于正常的命令:shell自己执行指令和内核互联完成这个命令,并且显示翻译内核的结果。
2.关于用户自定义的指令:shell不知道这个命令的正确性质,不会自己去执行指令,而是会去创建一个新的进程去执行这个命令。
3.shell一般完成简单并且没有风险的命令,创建的进程一般完成不是很容易并且有一定风险的命令。
4.shell相当于一个程序这个程序如果挂了你与操作系统之间的连接就挂了所以创建新的进程去解决容易出问题并且非常难的操作是一种处理问题的一种策略。

4.补充:

ps aux : 查看linux系统的进程列表展示:
top 实时显示linux系统的进程列表并且3秒更新一次。

每一次启动shell外壳程序都使用不同的进程号如果同时用用同一个账号连接两次Linux服务器他们的每个程序的进程都是不相同的如果在一个里面kill了sheel程序另一个连接不会收到任何影响:

二.linux权限管理:

1.基本概念:

linux有两种用户类型:
1.超级用户root #
2.普通用户username $
3.# 是超级用户的命令提示符 $是普通用户的命令提示符。

1-1:用户切换

  1. su 【用户名】 普通用户和root用户都适用
    2.直接 su 切换root
    3.sudo + 【一条命令】 使用root权限执行一条命令:

root切换到普通用户不需要输入密码:
在这里插入图片描述
普通用户切换到root用户需要输入root密码
请添加图片描述
通过sudo可以使用root权限执行一条命令

1.那么这个时候就有就有一个问题出现了,我们普通用户只要sudo一下输入一下密码就有root权限执行命令那么还要root有什么用呢?

其实并不是这样的在/etc/sudoers 有这样的一个配置文件需要root权限可以在配置文件中加入用户,如果当前执行sudo的用户并不在这个配置文件中那么命令不会执行并且报错:

请添加图片描述

2.文件类型和访问权限:

1.文件类型:

通过命令file可以查看文件详细信息:

补充:d:文件夹
-:普通文件(源代码,文档,音乐,视频,库 , 可执行文件 等等在linux下都是普通文件)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等):支持随机访问
p:管道文件
c:字符设备文件(例如屏幕等串口设备):键盘 显示器 不支持随机访问
s:套接口文件

在这里插入图片描述

2.访问权限类型:

>1.只有文件的拥有者和root可以改变文件的权限。

在这里插入图片描述

2-1:文件权限值的表示方法:

请添加图片描述

2-2:文件权限的设置方法:

chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名

参数类型:
u 拥有者
g 所属组
o other(其他)

常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

参数和权限这个地方怎么输入呢?

① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

在这里插入图片描述

去除所有权限:chmod a-rwx text1

在这里插入图片描述

添加所有权限:chmod a-rwx text1

在这里插入图片描述

2-3:快速设置文件三个分区的权限

请添加图片描述

去除所有权限:chmod a-rwx text1
在这里插入图片描述

添加所有权限:chmod a-rwx text1

在这里插入图片描述

3.文件(目录)拥有者的改变:

chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的拥有者:
补充:
1.如果普通用户想要把自己创建的一个文件更改拥有者为其他用户这个操作是不被允许的。
2.如果普通用户只想要把自己的这个文件的拥有人给到这个用户通过普通用户的身份做不到,通过sudo 进行命令提权!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.文件(目录)所属组的改变:

c)chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

在这里插入图片描述

5.补充root

>在root下不受任何权限的控制!!!!!!!!!!!!

补充·兴建组
userpadd 组名

6.umask 权限掩码

d)umask
功能:
查看或修改文件掩码
==新建文件夹默认权限:0666 ==
==新建目录默认权限:0777 ==

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到

umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:== mask & ~umask ==
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

目录对于X:可执行权限对于目录来说是可以进入这个目录。
普通文件对于X:可执行权限对于普通文件来说没有意义!对于一个可执行文件就有意义!

在这里插入图片描述

普通用户创建文件:
在这里插入图片描述

在这里插入图片描述

超级用户创建文件:
在这里插入图片描述

在这里插入图片描述

7.关于目录权限的三个情况:

1.对于一个目录有没有r权限,如果进入这个目录你不知道这个目录中有什么或者在目录外面想要通过ls看一下绝对路径目录中的内容你都看不了!
在这里插入图片描述

2.对于一个目录有没有W权限,说明你没有在这个目录中创建或者删除文件的权限:
在这里插入图片描述

3.对于一个用户没有文件的执行权限就不可以进入这个目录!
在这里插入图片描述

3.文件共享tmp

1.文件共享:

linux下在root目录下有一个tmp目录专门用来进行文件共享的!

1.这个tmp命令拥有者和所属组root ,普通用户都是other 用户对于这个目录有rwt的权限—》这个t就是粘滞位:

请添加图片描述

2.我们现在试一下把粘滞位给去掉变成正常的一个目录看一下!
在这里插入图片描述

2.我们在这个tmp目录下使用两个用户创建了两个目录,我们用其中一个用户去删除另一个用户的文件我们发现是可以删除的因为一个文件可不可以删除是看这个文件的所在的位置而不是这个文件是谁的!
在这里插入图片描述

2.粘滞位:

为什么会有粘滞位!
因为防止公共目录下other用户进行任意的文件删除增加了一个粘滞位的概念防止other用户在tmp目录下的不正常操作!
在这里插入图片描述

通过增加粘滞位的操作是不是确保公共空间文件的安全性!
不允许同other下乱删除文件!
在这里插入图片描述

相关文章:

Linux基础:2:shell外壳+文件权限

shell外壳文件权限 一.shell原理:1.对比:windo GUI 和 shell1.windo GUI2. shell 2.为什么?是什么?怎么办?1.为什么有shell2.是什么?3.怎么办?4.补充: 二.linux权限管理:…...

webpack 解决:TypeError: merge is not a function 的问题

1、问题描述: 其一、存在的问题为: TypeError: merge is not a function 中文为: 类型错误:merge 不是函数 其二、问题描述为: 想执行 npm run dev 命令,运行起项目时,控制台报错 TypeErro…...

datahub 中血缘图的实现分析,在react中使用airbnb的visx可视化库来画有向无环图

背景 做大数据的项目,必不可少的是要接触到数据血缘图,它在大数据项目中有着很重要的作用。 之前在公司也做过一些案例,也看过很多友商的产品,阿里的DataWork,领英的Datahub, datawork的血缘图使用的是 G6…...

二、判断语句

文章目录 1.if语句1)if判断语句基本格式2) 网吧上网3)if语句使用逻辑运算 2.if-else语句1)if-else的使用格式2)网吧上网 3.多重判断elif语句1) 多重判断elif2)例子3)注意点 4.if嵌套…...

龙智汽车行业客户案例:Jira数据中心版助客户解锁高效项目管理

龙智技术支持部负责人、Atlassian认证专家叶燕秀分享了她帮助某汽车企业落地Jira的故事,并详解了该公司选择Jira数据中心版的理由以及工具链的集成情况,为有同样需求的公司提供实践参考。 本文由叶燕秀口述内容整理而成 需求管理:从Excel表格…...

03 vi编辑器

vi编辑器的三种模式: 不同的模式下机键动作解释的意义是不一样的 编辑模式 插入模式 末行模式 文件的打开和关闭保存 移动光标...

Web界面自动化操作工具 - Selenium常见用法

Selenium是一个用于自动化浏览器操作的工具,常用于Web应用程序的测试和爬虫开发。 下面是一些Python Selenium的常见用法和代码示例: 1. 导入Selenium库和WebDriver: from selenium import webdriver2. 创建WebDriver实例: # …...

Openssl数据安全传输平台009:加密理论基础:哈希/非对称加密RSA/对称加密AES

文章目录 0. 代码仓库代码编译时候可能出现的错误 1. 哈希1.1 哈希算法的种类:1.2 使用的头文件1.3 哈希算法API1.3.1 详解md5 API1.3.2 sha1/sha224/sha256/sha384/sha512常用API 1.5 sha1代码测试1.4 在VS中添加预处理器定义1.5 哈希算法C代码封装的思路 2. 非对称加密RSA2.1…...

iPhone开发--Xcode15下载iOS 17.0.1 Simulator Runtime失败解决方案

爆句粗口,升级后公司网络下载iOS 17.0.1 Simulator Runtime一直出错,每次出错后都得重新开始下载,oh,f**k。上一次在在家里的网络升级成功。 解决办法一: 进入网址:https://developer.apple.com/download…...

Galaxy生信云平台|Maftools高效地汇总、分析、注释和可视化肿瘤基因突变MAF文件...

2023-10-25,Galaxy中国镜像站 UseGalaxy.cn 平台新增 5 个工具。 MAF Tools Maftools-突变景观图: 绘制肿瘤基因突变景观图Maftools-突变汇总: 汇总MAF文件中的突变信息Maftools-共突变与互斥突变: 计算共突变和互斥突变Maftools-队列比较:比较两个队列之…...

JS三种常见的存储机制

1.localStorage localStorage是HTML5引入的一种持久化存储机制,用于在浏览器中长期保存数据。localStorage中存储的数据没有过期时间,除非被显式清除或代码删除。存储在localStorage中的数据对于同一个域名下的所有页面都是共享的。localStorage可以存储…...

【Python机器学习】零基础掌握BaggingClassifier集成学习

何提高分类模型的稳定性和准确性? 在金融风控、医疗诊断或者社交媒体推荐等场景中,分类问题是常见的难题。但是,单一的分类模型(如SVM)在处理复杂或不均衡的数据集时可能会表现不佳。那么,有没有一种方法能够提高模型的稳定性和准确性呢? 假设一家银行想要通过机器学习…...

[晕事]今天做了件晕事26;gcc对strcmp/strncmp的优化

今天做了一件晕事,写了一个测试小程序,开头的程序例如下面片段。在后续又写了一些代码,进行编译,使用gdb查看可执行文件,怎么都得不到想要的结果,非常的纳闷,非常的奇怪。 int main() {char a[3]="ab";int b = strncmp(0, a, 1<...

【深度学习】使用Pytorch实现的用于时间序列预测的各种深度学习模型类

深度学习模型类 简介按滑动时间窗口切割数据集模型类CNNGRULSTMMLPRNNTCNTransformer 简介 本文所定义模型类的输入数据的形状shape统一为 [batch_size, time_step&#xff0c;n_features]&#xff0c;batch_size为批次大小&#xff0c;time_step为时间步长&#xff0c;n_feat…...

ts | js | 爬虫小公举分享

Curl转Code 快速将curl转为各种语言的代码; 便于提取请求头之类, 或者微改直接使用 https://curlconverter.com/node-axios/ (有点慢, 但是很全)https://www.lddgo.net/convert/curl-to-code (没有axios, 我喜欢用axios) 使用… 抓取地址, 使用浏览器或者其他抓包工具都可, 这…...

实现el-table打印功能,样式对齐,去除滚动条

实现el-table打印功能,样式对齐&#xff0c;去除滚动条 // 整个页面打印 function printTable(id) {// let domId #js_index// if (id) {// domId #${ id };// }// let wpt document.querySelector(domId);// let newContent wpt.innerHTML;// let oldContent document.…...

2022年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 表达式len(“学史明理增信 &#xff0c;读史终生受益”) > len(" reading history will benefit you ")的…...

【面试经典150 | 链表】两数相加

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;模拟 其他语言python3 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到…...

vue路径中“@/“代表什么

举例&#xff1a; <img src"/../static/imgNew/adv/tupian.jpg"/>其中&#xff0c;/是webpack设置的路径别名&#xff0c;代表什么路径&#xff0c;要看webpack的build文件夹下webpack.base.conf.js里面对于是如何配置&#xff1a; 上图中代表src,上述代码就…...

java springboot2.7 写一个本地 pdf 预览的接口

依赖方面 创建的是 接口web项目就好了 然后包管理工具打开需要这些 import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; imp…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...