Linux权限及Xshell运行原理

news2024/9/23 19:16:01

目录

1.Linux中的用户

1.1 用户分类

1.2 用户切换

2.权限的概念

2.1 权限概念以及表示

2.2 文件属性以及类型

2.2.1 文件属性

2.2.2 文件类型

2.3 Linux下的角色

3.权限的修改

3.1 chmod

3.2 chown

3.3 chgrp

4.目录权限

5.权限掩码

5.1 默认权限

5.2 起始权限

5.3 权限掩码

6.粘滞位

问题引入:

粘滞位

7.Xshell运行原理


1.Linux中的用户

1.1 用户分类

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

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

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

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

1.2 用户切换

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

  • 普通用户切换成root:需要输入root密码

  • root切换成普通用户:直接切换,不用认证

  • 普通用户切换成普通用户:需要输入另一个用户的密码

  • 短暂提权指令sudo:不想切换root但想使用root权限,可以只在指令前加sudo,当然并不是所有用户都可以sudo,需要root用户进入sudoers文件中进行配置,只有用户名出现在sudoers文件中才能使用sudo。

2.权限的概念

2.1 权限概念以及表示

下面的权限只针对文件而言:

  1. r:读权限,读取文件内容的权限,如cat < file

  2. w:写权限,修改文件内容的权限,如echo ... > file

  3. x:执行权限,执行文件的权限 ,如./a.out

  4. -:表示不具备该权限

注意:我们想对一个文件进行操作,不仅我们得拥有这个操作的权限,这个文件也必须得拥有对应的属性,比如执行权限,并不是所有文件都可以执行的。

2.2 文件属性以及类型

2.2.1 文件属性

Linux下可以使用ls -l指令查看文件属性,文件属性中有权限相关的属性。

如上匡红的那一列都是权限属性,为什么这么多分别代表什么权限?下面再详细介绍。

1是文件硬链接数,暂时不用考虑。

zwj和zwj分别是文件的拥有者及所属组,后面介绍。

再往后面分别是文件大小、最后一次修改日期、文件名。

2.2.2 文件类型

Windows为了考虑用户使用体验,通过后缀表示文件类型,但是Linux的文件类型不通过后缀进行区分,可这并不代表Linux不能使用后缀。Linux系统本身不通过后缀区分文件类型,但是Linux上层的一些软件需要通过后缀进行区分。

ls -l指令显示的文件属性中,第一个字符表示文件类型。

常见的文件类型有:

  • -:普通文件:文本、源代码、图片、视频、库、可执行文件等

  • d:目录文件

  • b:block,块设备文件(磁盘)

  • c:char,字符设备文件(键盘、显示器)

  • l:链接文件

  • p:管道文件

  • s:socket文件

对于文件后缀,虽然Linux不通过它识别类型,但还是建议使用。(我们看着舒服)

输入file指令可以查看文件类型。​

2.3 Linux下的角色

在现实社会中每个人都扮演着不同的角色,操作系统中也是如此。

Linux中有以下三种角色:

  1. 拥有者(u):文件或目录的所有者

  2. 所属组(g):文件或目录的所有者所在的组的用户

  3. others(o):除了拥有者和所属组之外的其他人

注意:

  • 为什么要有所属组的存在?只区分拥有者和others不行吗?

    通过所属组,Linux提供了一种方便和有效的方式来实现文件共享和协作。组内的成员可以共享文件并根据权限管理进行操作,从而实现团队成员之间的协作编辑和资源共享。

  • 和现实生活一样,一个人可以扮演着不同的角色,Linux下一个用户也可以扮演不同的角色。

  • root不收任何权限的约束。

再谈权限(文件属性中的权限):

权限属性那一列分为三组,每组属性由三个字符组成,总共九个字符组成。

第一组是拥有者的权限,依次是r、w、x,-表示没有,第二组是所属组的权限,第三组是others的权限。

​​

注意:一次只能匹配一个角色,也就是说,如果拥有者和所属组都是你的话,优先匹配拥有者,只根据拥有者的权限来决定你的权限,一个人不能既是拥有者又是所属组。

如果文件权限为:r-- rw- ---,我既是拥有者也是所属组,但是我并没有写权限。

3.权限的修改

3.1 chmod

注意:只有文件的拥有者和root才可以改变文件的权限

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项: R : 递归修改目录文件的权限

  1. 用法一:用户标识符(u->拥有者、g->所属组、o->others、a->所有人)+/-/= 权限字符(r、w、x)

    示例:

    chmod u+r test.txt :拥有者添加test.txt文件的读权限

    chmod a-rwx test.txt:取消所有人对test.txt文件的读写执行权限

    chmod u+rw,g+r,o+r test.txt::拥有者添加test.txt文件的读写权限、所属组和others添加test.txt文件的读权限

  2. 用法二:三位8进制数

    权限属性分为三组,每组三个字符,而且每个权限只分有和没有,是不是可以用二进制代替,0表示没有1表示有,每组权限就是一个8进制数字,权限属性就可以表示成三位8进制数。

    示例:

    chmod 000 test.txt:取消所有人对test.txt文件的读写执行权限

    chmod 764 test.txt:拥有者有读写执行、所属组有读写权限,others有读权限

    chmod 777 test.txt:所有人拥有test.txt文件的读写执行权限

3.2 chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

常用选项:-R 递归修改文件或目录的拥有者

注意:修改文件拥有者需要获得别人的允许,普通用户虽有有这个文件的相关权限,但就是给不了别人,怎么办?只能使用sudo提权或者使用root用户强制给别人了。

3.3 chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

注意:

  1. 没有更改others的指令,因为更改拥有者和所属组就是在更改others。

  2. 如果我想一次性改变拥有者和所属组,可以使用chwon:

    chwon zwj zwj test.txt 把test.txt文件的拥有者改为zwj,所属组改为zwj。

4.目录权限

目录的权限有哪些?

  • r:查看目录下文件的属性的权利

  • w:在目录下新建和删除文件的权利

  • x:进入目录的权利

5.权限掩码

5.1 默认权限

创建一个文件,默认权限是664,创建一个目录,默认权限是775。

为什么不是777,不是666?这是权限掩码决定的结果!

5.2 起始权限

介绍权限掩码之前,我们要知道:

文件的起始权限是666(因为绝大多数文件不具有执行的属性,所以不给执行权限),目录的起始权限是777。

而权限掩码和起始权限共同决定了默认权限,权限掩码也决定了一个文件或者目录被创建时的默认权限。

5.3 权限掩码

Linux中使用umask指令可以查看到权限掩码为:0002,第一个0不用在意,他决定后面的数字都是8进制,真正的掩码是002。

我们可以看到,起始权限中去掉umask中的权限,就是默认权限,但注意这不是减出来的,他们的关系是这样的:

默认权限 = 起始权限 & (~umask)

当然了,我们也可以修改权限掩码umask:

指令:umask 0555 -> 修改掩码为555,所有人都只有写权限,没有读和执行权限。

6.粘滞位

当我们新建一个用户时,系统会自动在 /home 路径下创建一个用户的家目录,通过观察可以发现,所有家目录的权限都是 700,这意味着,其他普通用户无法进入我的家目录,也不能查看我的家目录下的所有文件,更不能对我的家目录中的文件进行修改、删除,也不能在我的家目录中创建文件。

问题引入:

假设有这么一个情况,多个人需要在一个特定的目录下实现文件共享呢?当然这个目录不能在家目录/home里,得在根目录/下,而且这个目录的拥有者和所属组一般为root,目录的others权限也得全部开放,保证普通用户都能在这个目录下进行操作。

假设用户A在这个目录下创建了一个文件,拥有者和所属组是A自己,others的权限全部关闭,那么用户B进入这个目录后,显然不能对A的文件进行读写执行操作,但是B用户可以删除A的文件!(删除文件是目录的写权限,目录的others权限全部开放)这显然非常扯淡,那么怎么解决这个问题呢?答案就是粘滞位!

粘滞位

粘滞位是给目录的others设置的一个权限位t(chmod + t direcyory_name),具有x的意义,同时也进一步对目录权限进行特殊限定:该目录中的文件,只有root或者文件/目录的拥有者有权利进行删除,其他人都不允许。

总结:

  1. 粘滞位一般是给共享目录设置的权限位,这个共享目录:

    • 在根目录下

    • 拥有者和所属组一般为root

    • 目录的others权限得全部开放

  2. 加了粘滞位的目录,里面的文件只能由:

    • root删除

    • 目录的拥有者删除

    • 文件的拥有者删除

7.Xshell运行原理

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

简单来说,用户直接使用kernel的话,一方面操作成本高不宜使用,另一方面可能会破坏操作系统造成不安全因素。所以我们不能直接访问操作系统。

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

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

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

它的意义:

  1. 是用户和操作系统交互的中间软件层。

  2. 在一定程度上保护操作系统。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

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

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

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

相关文章

省时省力!掌握简单快捷的关机命令,轻松实现电脑的自由开关机

本文介绍了为电脑设置特定的自动关机时间的四种方法。我们还包括如何停止计划关机的信息。 如何用命令提示符安排计算机关机 按照以下步骤使用命令提示符进行一次性关闭。 1、在Windows搜索框中,键入CMD。 2、点击Enter。 3、在命令提示符窗口中,键入shutdown -s -t 和所…

matlab simulink 四旋翼跟拍无人机仿真

1、内容简介 略 7-可以交流、咨询、答疑 2、内容说明 四旋翼跟拍无人机仿真 四旋翼、无人机 需求分析 背景介绍 无人飞行机器人&#xff0c;是无人驾驶且具有一定智能的空中飞行器。这是一种融合了计算机技术、人工智能技术、传感器技术、自动控制技术、新型材料技术、导航…

基于机器视觉的车道线检测 计算机竞赛

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…

HCL模拟器选路实验案例

此选路题目选自职业院校技能竞赛中的一道题比较考验思路&#xff0c;适合于参加新华三杯大赛以及网络专业的同学&#xff0c;当做练习题目进行解题​​​​​​​ 题目 1.S1、S2、R1、R2运行ospf进程100&#xff0c;区域0&#xff0c;R1、R2、R3、R4、R5运行ospf进程200&#…

Linux进阶之旅:从零开始,探索基本指令的神秘力量!

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是尘缘&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f449;点击这里&#xff0c;就可以查看我的主页啦&#xff01;&#x1f447;&#x…

【java学习—九】工厂方法FactoryMethod(6)

文章目录 1. 概念2. 实际的应用 1. 概念 FactoryMethod 模式是设计模式中应用最为广泛的模式&#xff0c;在面向对象的编程中&#xff0c;对象的创建工作非常简单&#xff0c;对象的创建时机却很重要。 FactoryMethod 解决的就是这个问题&#xff0c;它通过面向对象的手法&…

RabbitMQ初入门

1、RabbitMQ是什么 RabbitMQ是“实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均…

23 行为型模式-迭代器模式

1 迭代器模式介绍 迭代器模式是我们学习一个设计时很少用到的、但编码实现时却经常使用到的行为型设计模式。在绝大多数编程语言中&#xff0c;迭代器已经成为一个基础的类库&#xff0c;直接用来遍历集合对象。在平时开发中&#xff0c;我们更多的是直接使用它&#xff0c;很…

C++学习 day--21 地震监测系统实现、内存泄漏检测工具

1、项目需求 地震监测系统主要是利用地震检波器收集到的地壳运动信息&#xff0c;从而预测和确定地震的震中以 及强度。 预测方法 地震检波器每隔固定的时间间隔采样一次预测地震的能量数据&#xff0c;并保存到文件中&#xff0c;地震监测 系统会从文件中读取相应的能量数据&…

第四章 文件管理 十二、虚拟文件系统

目录 一、虚拟文件系统图 二、虚拟文件系统的特点 三、存在的问题 四、文件系统挂载 一、虚拟文件系统图 二、虚拟文件系统的特点 1、向上层用户进程提供统一标准的系统调用接口&#xff0c;屏蔽底层具体文件系统的实现差异。 2、VFS要求下层的文件系统必须实现某些规定的…

Map集合 遍历:lambda方式

package day01;import java.util.*;public class Mapday1 {public static void main(String[] args) {/* HashMap 无序 不重复&#xff0c;会覆盖前面 无索引*/System.out.println("--------------------");Map<String, Integer> map new HashMap<>();m…

【DBeaver】建立连接报驱动问题

事件 在DBeaver中建立pgsqlite连接&#xff0c;测试连接时&#xff0c;报 can’t load driver class ‘org.postgresql.Driver’ 问题原因 pgsqlite数据库驱动与DBeaver版本不匹配 pg解决办法 在https://jdbc.postgresql.org/download/中下载最新版本的驱动&#xff0c;然…

【Java基础】反射机制与动态代理机制

反射机制与动态代理机制 文章目录 反射机制与动态代理机制1. 反射(Reflection)的概念1.1 反射概述1.2 反射的优缺点 2. 理解Class类并获取Class实例2.1 Class2.2 Class类的常用方法 3. 反射的基本应用3.1 应用1&#xff1a;创建运行时类的对象3.2 应用2&#xff1a;调用运行时类…

什么是恶意代码?

前言&#xff1a;本文旨在分享交流技术&#xff0c;在这里对恶意代码进行全面的介绍和讲解 目录 一.什么是恶意代码 二.恶意代码的发展史 三.恶意代码的相关定义 四.恶意代码攻击机制 PE病毒 PE文件的格式 脚本病毒 脚本文件隐藏方法 宏病毒 浏览器恶意代码 U盘病毒 …

Go基础——数组、切片、集合

目录 1、数组2、切片3、集合4、范围&#xff08;range&#xff09; 1、数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列&#xff0c;这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。 Go 语言数组声明需要指定元素类型及元素个数&#xff0c;与…

docker - DockerFile 编写 指令

文章目录 前言docker - DockerFile 编写 指令1. FROM2. MAINTAINER3. RUN4. CMD5. LABEL6. EXPOSE7. ENV8. ADD9. COPY10. ENTRYPOINT11. VOLUME12. USER13. WORKDIR14. ARG15. ONBUILD16. STOPSIGNAL 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&am…

Virtual DOM

目录 Virtual DOM 前言 用法 代码 理解 Virtual DOM的工作原理&#xff1a; 为什么使用Virtual DOM? 哪些库/框架使用Virtual DOM? 总结 Virtual DOM&#xff08;虚拟DOM&#xff09;是一种编程概念&#xff0c;它是对真实DOM的轻量级抽象表示。在前端开发中&#x…

【软考】系统集成项目管理工程师(九)项目成本管理【4分】

一、成本概念 1、产品全生命周期成本 产品或系统的整个使用生命周期内&#xff0c;在获得阶段&#xff08;设计、生产、安装和测试等活动&#xff0c;即项目存续期间&#xff09;、运营与维护、生命周期结束时对产品的处置所发生的全部成本 2、成本类型 成本类型描述可变成…

【Matlab2016】Matlab中文版的下载、安装、激活(不建议安装过高版本!!)

这里写目录标题 首先双击R2016_win64.iso加载镜像文件双击setup.exe开始安装选择使用文件密钥安装填入密钥修改安装路径并记住此路径建议全部勾选等待安装完成 激活复制补丁到matlab路径下 创建快捷方式进入bin目录&#xff0c;找到matlab.exe 安装包 首先双击R2016_win64.iso加…

会声会影2023永久激活序列号密钥(支持各版本会声会影注册机)

会声会影2023永久激活序列号密钥(支持各版本)。会声会影2023是一款强大专业的视频编辑软件。会声会影2023产品序列号&#xff0c;支持专业版和旗舰版&#xff0c;可免费激活会声会影2023软件。会声会影2023序列号激活码目前网上很难找到了&#xff0c;这些会声会影序列号是小编…