Linux权限及Xshell运行原理

目录

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.hqwc.cn/news/150750.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue(uniapp)父组件方法和子组件方法执行优先顺序

涉及到的知识点&#xff1a;watch监控&#xff1a;先看问题&#xff0c;父组件从后端通过$ajax获取数据&#xff0c;在将父组件将值传输给子组件&#xff0c;使用子组件使用created钩子函数获取数据&#xff0c;按自己的想法应该是父组件先获取后端数据&#xff0c;在传入给子组…

Spring Cloud之微服务

目录 微服务 微服务架构 微服务架构与单体架构 特点 框架 总结 SpringCloud 常用组件 与SpringBoot关系 版本 微服务 微服务&#xff1a;从字面上理解即&#xff1a;微小的服务&#xff1b; 微小&#xff1a;微服务体积小&#xff0c;复杂度低&#xff0c;一个微服…

Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战

目录 前言无图无真相创建数据库授权服务器maven 依赖application.yml授权服务器配置AuthorizationServierConfigDefaultSecutiryConfig 密码模式扩展PasswordAuthenticationTokenPasswordAuthenticationConverterPasswordAuthenticationProvider JWT 自定义字段自定义认证响应认…

大数据-Storm流式框架(二)--wordcount案例

一、编写wordcount案例 1、新建java项目 2、添加storm的jar包 storm软件包中lib目录下的所有jar包 3、编写java类 WordCountTopology.java package com.bjsxt.storm.wc;import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.genera…

【Jenkins 安装】

一&#xff1a;安装文件夹准备 在/home/admin 界面下新建三个文件夹&#xff0c;用来安装tomcat、maven 1.打开&#xff0c;/home/admin目录 cd /home/admin 2.新建三个文件夹 mkdir tomcat mkdir maven 二&#xff1a;安装tomcat 1.打开tomcat目录进行tomcat的安装 访问:h…

时间、空间复杂度的例题详解

文章前言 上篇文章带大家认识了数据结构和算法的含义&#xff0c;以及理解了时间、空间复杂度&#xff0c;那么接下来来深入理解一下时间、空间复杂度。 时间复杂度实例 实例1 // 计算Func2的时间复杂度&#xff1f; void Func2(int N) {int count 0;for (int k 0; k <…

3DCAT+东风日产:共建线上个性化订车实时云渲染方案

近年来&#xff0c;随着5G网络和云计算技术的不断发展&#xff0c;交互式3D实时云看车正在成为一种新的看车方式。 与传统的到4S店实地考察不同&#xff0c;消费者可以足不出户&#xff0c;通过网络与终端设备即可实现全方位展示、自选汽车配色、模拟效果、快捷选车并进行个性…

【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》

在软考中软件工程模块主要包含以下考点&#xff1a; 文章目录 软件过程模型&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;逆向工程&#x1f31f;基于构件的软件工程&#x1f31f;&#x1f31f;软件开发与软件设计与维护净室软件工程软件模型软件需求 软件过程模型&am…

计算机网络文章荟萃

脑残式网络编程入门(二)&#xff1a;我们在读写Socket时&#xff0c;究竟在读写什么&#xff1f;-网络编程/专项技术区 - 即时通讯开发者社区! 1.什么是 socket - 掘金2.socket 的实现原理 - 掘金本文讲述了 socket 在 linux 操作系统下的数据结构&#xff0c;以及阻塞 IO 利用…

RK3568-pcie接口

pcie接口与sata接口 pcie总线pcie总线pcie控制器sata控制器nvme设备sata设备nvme协议ahci协议m-key接口b-key接口RC模式和EP模式 RC和EP分别对应主模式和从模式,普通的PCI RC主模式可以用于连接PCI-E以太网芯片或PCI-E的硬盘等外设。 RC模式使用外设一般都有LINUX驱动程序,安…

RDMA概览

RDMA(Remote Direct Memory Access&#xff0c;远程直接内存访问)&#xff0c;指能够访问(读写)远程机器的内存。有多种支持RDMA的网络协议&#xff0c;包括&#xff1a;Infiniband、RoCE和iWAPP。具体的API定义包含在内核文件linux/include/rdma/ib_verbs.h reference: 【精选…

Elasticsearch聚合----aggregations的简单使用

文章目录 Getting started1、搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄&#xff0c;但不显示这些人的详情2、size0不展示命中记录&#xff0c;只展示聚合结果3、按照年龄聚合&#xff0c;并且请求这些年龄段的这些人的平均薪资4、查出所有年龄分布&#xff0c;…