Linux初识:【shell命令以及运行原理】【Linux权限的概念与权限管理】

目录

一.shell命令以及运行原理

二.Linux权限的概念与权限管理

2.1Linux权限的概念

sudo普通用户提权

2.2Linux权限管理

2.2.1文件访问者的分类(人)

2.2.2文件类型和访问权限(事物属性)

2.2.3文件权限值的表示方法 

字符表示方法

八进制数值表示方法

2.2.4文件访问权限的相关设置方法

chmod

 chown/chgrp

 用八进制改权限

2.2.5目录权限

 2.2.6缺省权限

 2.2.7粘滞位


一.shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

  

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

将使用者的命令翻译给核心(kernel)处理。

同时,将核心的处理结果翻译给使用者。 

为什么要存在内存程序?

1.方便用户操作

2.外壳程序,保护内核

(新命令到来,创建子进程)

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的 且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提 亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫 它王婆,它对应我们常使用的bash。

每次系统启动都会有一个bash的程序,它内部就是一个死循环,不断的进行命令行解释。shell是所有外壳程序的统称(媒婆),bash是其中一个(王婆)。

二.Linux权限的概念与权限管理

2.1Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

su -:重新登录

su:身份切换(不改变位置)

sudo普通用户提权

我们普通用户直接sudo +命令会不能运行。

我们需要用root添加类似白名单一样的东西:

进入之后修改: 

 

为:

这样我的lwz普通用户就可以使用sudo 来进行暂时提权。

2.2Linux权限管理

权限首先限制的是角色(人)。

权限要求目标必须具备对应的属性。

权限=角色+目标权限属性(文件属性)

2.2.1文件访问者的分类(人)

文件和文件目录的所有者:u---User(中国平民 法律问题)(拥有者)

文件和文件目录的所有者所在的组的用户:g---Group(所属组)

其它用户:o---Others (外国人)

上面提到拥有者,所属组,但是没有看到other。因为匹配到的用户不是拥有者和所属组就是other,other很多。 

还有一个问题就是:拥有者和other都好理解,这个所属组是什么意思呢?(为了有更精细化的权限管理)假如我是某个小组的组员,我写了一段代码,想给组长看一下我的代码。那么我就必须开放权限给组长,如果只有文件拥有者和other的话,我开放权限就只能开放other的权限,那么其他所有人是不是都可以看见了,为了避免这样的情况发生,就专门设置了一个叫做所属组的东西,使开权限只让所属组看到。

2.2.2文件类型和访问权限(事物属性)

关于文件的权限,以前在C语言学过文件具有读,写,执行权限:

除了第一列的文件类型,后面的九个字符分别代表拥有者,所属组和other的权限位:

总体就是: 

2.2.3文件权限值的表示方法 

而r,w,x的意思: 

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.“—”表示不具有该项权限 

它们的组合方式:

字符表示方法

八进制数值表示方法

2.2.4文件访问权限的相关设置方法

chmod

用chmod u-r my.txt改变拥有者的r权限: 

这里显示的就不在有r。


还有一个问题,先来看:

在正常情况下,这个文件可读可写:

我先把r和w权限去除: 

这里再想去读或者写就不行了: 

问题就是,虽然我的拥有者权限没有了,但是我依然是所属组里的人,所属组的权限依然在: 

因为在确定用户信息的时候,系统会先确定用户是谁,在Centos下,用户角色只确定一次,顺序就是拥有者,所属组和other。像上面的,我本身就是lwz用户,在确定我是拥有者之后就不会再往后面去确认了。 


再举个例子:

这里我把拥有组的人改为了root,所属组还是lwz:

之后我再用lwz用户进行写和读就可以了(先与拥有者比较,发现不是再与所属组比): 

同理我把所属组的rw权限也给去除,而且所属组的人也给改为root 

 

后面用lwz用户再去写和读依然是可以的,因为other的rw权限是保留的。  


我给my.txt给可执行权限,那么这个文件就一定可以执行吗? 肯定不会。

可执行权限!=文件可以执行(要有可执行的那个能力,给了机会你不中用啊)

 chown/chgrp

这两个东西的用来更改人的,其实只需要用chown就可以更改全部的了。

把文件给别人必须高权限:

chgrp的用法跟chown一样,不过它改的是所属组。 

用chown直接就可以改拥有者和所属组了。

sudo chown root:root my.txt
 用八进制改权限

一个数字0-8可以表示所有的改变方案:

2.2.5目录权限

我们进入目录的时候需要的是文件属性的x属性:

比如我把work目录的x属性去除:

r权限的作用: 

没有r权限无法查看文件里的内容:

 w权限的作用:

下面我们就无法touch新建文件:

对root无效! 


所以我们新建一个目录的时候,rwx权限都必须有。任何用户都无法进入其他用户的家目录。

因为它们的权限只对自己有rwx权限: 

 2.2.6缺省权限

我们在新建文件的时候它们的默认权限:

对于普通文件来讲:起始权限是666,默认不带可执行(除了可执行程序文件)

对于目录文件来讲:起始权限是777,默认带可执行 

但是我们创建的文件权限不是很符合这个起始权限:

因为系统会存在一个权限掩码的概念(只看后三位):

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

计算过程如下:

umask的目的:我们希望凡是在umask中出现的权限,都不应该在最终权限里出现。

为什么要有umask:默认权限是由OS自主决定,无法在创建之间修改,但是我们如果可以自己配置,可以满足灵活需要。在特殊情况下,配置umask可以控制文件的默认权限,让我们的代码是可控的。

修改umask: 

之后创建的目录还是普通文件都不会再有任何权限: 

 2.2.7粘滞位

目录里文件的删除跟目录本身的w有关,与目录里的文件无关。

前面我们知道,一个普通用户是不可以进入另一个普通用户。那如果我们要进行数据交互的话就需要在公共目录下建立一个两个人都可以进入,改变的目录:

我们可以使用sudo以root的身份创建一个中立的目录:

再给这个目录的other添加w权限: 

这样普通用户就可以在这里实现数据交互,但是还有一个问题是,删除文件时跟文件本身无关,跟上一级的w权限有关,上面把w权限放开了那么任何人都可以随便删除里面的文件了。 


为了避免这种情况,我们需要一个新的权限(粘滞位),让我们可以在这个目录下新建文件的同时,还不允许里面的文件被其他人删除:

other就被添加上了t :

这样之后,即使我们有w权限也不可以删除其他人的文件了(自己的依旧可以删除):

粘滞位特征:只能给需要共享的目录添加粘滞位。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UML系列之Rational Rose笔记七:状态图

一、新建状态图 依旧是新建statechart diagram; 二、工作台介绍 接着就是一个状态的开始:开始黑点依旧可以从左边进行拖动放置: 这就是状态的开始,和活动图泳道图是一样的;只能有一个开始,但是可以有多个…

Java内存与缓存

Java内存管理和缓存机制是构建高性能应用程序的关键要素。它们之间既有联系又有区别,理解这两者对于优化Java应用至关重要。 Java 内存模型 Java内存模型(JMM)定义了线程如何以及何时可以看到其他线程修改过的共享变量的值,并且规…

带头双向循环链表(数据结构初阶)

文章目录 双向链表链表的分类概念与结构实现双向链表定义链表结构链表打印判空申请结点初始化头插尾插头删尾删查找指定位置插入和删除销毁链表 顺序表和链表的分析结语 欢迎大家来到我的博客,给生活来点impetus!! 这一节我们学习双向链表&a…

持续集成 01|Gitee介绍、Pycharm使用Gitee

目录 一、理论 二、 git的简介与安装 三、Gitee 1、注册网易163邮箱 2、注册Gitee账号 3、git和gitee管理代码工作原理 三、PyCharm安装配置Gitee 四、Pycharm使用Gitee插件的五种场景 1、将 Gitee的新仓库 Checkout(检出)到 Pycharm中 2、推送…

金融项目实战 05|Python实现接口自动化——登录接口

目录 一、代码实现自动化理论及流程 二、脚本实现的理论和准备工作 1、抽取功能转为自动化用例 2、搭建环境(测试工具) 3、搭建目录结构 三、登录接口脚本实现 1、代码编写 1️⃣api目录 2️⃣script目录 2、断言 3、参数化 1️⃣编写数据存储文件:jso…

【git】-3 github创建远程仓库,上传自己的项目,下载别人的项目

一、如何使用Github 1、创建远程仓库 2、使用github拉取/推送代码 克隆仓库 向远程仓库推送代码-git push 二、上传我们自己的项目到github 方法一:直接上传 方法二:使用git命令 方法三: 将仓库拉取到本地上传 三、下载别人的项目 …

Java算法 数据结构基础 并查集 模版 [洛谷-P3367]

目录 题目地址 题目描述 输入输出样例 并查集模版 介绍 1. 路径压缩(Path Compression) 2. 按秩合并(Union by Rank / Size) 代码讲解 操作讲解 时间复杂度分析 应用场景 题目地址 【模板】并查集 - 洛谷 题目描述 输…

PyCharm文档管理

背景:使用PyCharmgit做文档管理 需求:需要PyCharm自动识别docx/xslx/vsdx等文件类型,并在PyCharm内点击文档时唤起系统内关联应用(如word、excel、visio) 设置步骤: 1、file -》 settings -》file types 2、在Files opened i…

卷积神经05-GAN对抗神经网络

卷积神经05-GAN对抗神经网络 使用Python3.9CUDA11.8Pytorch实现一个CNN优化版的对抗神经网络 简单的GAN图片生成 CNN优化后的图片生成 优化模型代码对比 0-核心逻辑脉络 1)Anacanda使用CUDAPytorch2)使用本地MNIST进行手写图片训练3)…

基于springboot的租房网站系统

作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

创建 WordPress 插件(第一部分):添加管理页面

WordPress 是互联网上最受欢迎的内容管理系统之一。它是用 PHP 创建的,可以处理从博客到商业网站的一切需求。事实上,我们的博客和网站都使用 WordPress。在本文中,我将向你展示如何创建一个 WordPress 插件,该插件会在管理员控制…

「港科技」联手「地平线」打造GPT风格的自动驾驶世界模型:DrivingWorld

摘要 最近在自回归(AR)生成模型方面的成功,例如自然语言处理中的GPT系列,激发了在视觉任务中复制这一成功的努力。一些研究尝试将这种方法扩展到自动驾驶中,通过构建基于视频的世界模型来生成逼真的未来视频序列和预测…

FPGA工程师成长四阶段

朋友,你有入行三年、五年、十年的职业规划吗?你知道你所做的岗位未来该如何成长吗? FPGA行业的发展近几年是蓬勃发展,有越来越多的人才想要或已经踏进了FPGA行业的大门。很多同学在入行FPGA之前,都会抱着满腹对职业发…

SOME/IP协议详解 基础解读 涵盖SOME/IP协议解析 SOME/IP通讯机制 协议特点 错误处理机制

车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中今天所要介绍的内容SOME/IP就是一种应用层协议。 SOME/IP协议内容按照AUTOSAR中的描述,我们可以更进一步…

为ARM64架构移植Ubuntu20.04换源的发现

在为ARM64架构(RK3566)移植ubuntu20.04的时候发现在更换为国内源之后,无法正常完成apt update,报错为: Ign:25 http://mirrors.aliyun.com/ubuntu focal-updates/main arm64 Packages …

Playwright vs Selenium:全面对比分析

在现代软件开发中,自动化测试工具在保证应用质量和加快开发周期方面发挥着至关重要的作用。Selenium 作为自动化测试领域的老牌工具,长期以来被广泛使用。而近年来,Playwright 作为新兴工具迅速崛起,吸引了众多开发者的关注。那么…

【全套】基于机器学习的印度森林火灾发生概率的分析与预测

【私信送源码文档】基于机器学习的印度森林火灾发生概率的分析与预测 对应的ppt 摘 要 随着全球气候变化的不断加剧,火灾的频发和规模逐渐增大,成为备受关注的问题。本文旨在提高对火灾发生概率的准确性,为火灾的预防和管理提供科学支持。在…

【Go】Go Gin框架初识(一)

1. 什么是Gin框架 Gin框架:是一个由 Golang 语言开发的 web 框架,能够极大提高开发 web 应用的效率! 1.1 什么是web框架 web框架体系图(前后端不分离)如下图所示: 从上图中我们可以发现一个Web框架最重要…

TCP/IP协议簇及封装与解封装

TCP/IP协议簇 现如今用的参考模型TCP/IP 是一个协议簇,它组建了整个互联网 最主要的是TCP/IP 和这两个协议,所以起名为TCP/IP TCP/IP模型 TCP/IP标准模型——四层 TCP/IP对等模型——五层 数据链路层分为两个子层: LLC子层:逻辑…

《基于卷积神经网络的星图弱小目标检测》论文精读

Dim small target detection based on convolutinal neural network in star image 摘要 由于低信噪比目标和复杂背景,星图中弱小目标的检测是一项具有挑战性的任务。本文提出了一种深度学习方法,用于在背景不均匀和不同类型的噪声下检测单帧星图中的弱…