【Linux】shell命令与Linux权限的概念

news2025/1/23 12:01:31

在这里插入图片描述

目录

  • 一、shell命令
  • 二、Linux权限的概念
    • 2.1 Linux权限的概念
      • 2.1.1 用户
      • 2.1.2 指令
        • 2.1.2.1 su指令
        • 2.1.2.2 sudo指令
    • 2.2 Linux权限管理
      • 2.2.1 文件访问者的分类(人)
      • 2.2.2 文件类型和访问权限(事物属性)
        • 2.2.2.1 文件类型
        • 2.2.2.2 基本权限
    • 2.3 文件权限值的表示方法
      • 2.3.1 字符表示法
      • 2.3.2 八进制数值表示法
    • 2.4 文件访问权限的相关设置方法
      • 2.4.1 chmod指令
      • 2.4.2 chown指令
      • 2.4.3 chgrp指令
      • 2.4.4 umask指令
      • 2.4.5 file指令
    • 2.5 目录的权限
    • 2.6 粘滞位
    • 2.7 总结
  • 结尾

一、shell命令

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

  • 内核是操作系统的核心,负责处理复杂的系统资源和任务。用户并不擅于直接与内核进行直接交流

  • 直接操作内核可能会导致系统不稳定或安全问题。内核中的错误或不当操作可能会对系统造成严重影响,甚至导致系统崩溃。通过Shell等中间层,可以对用户的操作进行一定的限制和检查,确保系统的安全和稳定。

  • Shell提供了更加友好和灵活的用户界面,允许用户以更加直观和便捷的方式与内核进行交互。

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

  • 将使用者的命令翻译给内核(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。

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

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


二、Linux权限的概念

2.1 Linux权限的概念

2.1.1 用户

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

  • 超级用户:可以在linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
    在这里插入图片描述

2.1.2 指令

2.1.2.1 su指令

语法su [用户名]

功能:切换用户。

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

在这里插入图片描述


2.1.2.2 sudo指令

使用sudo指令之前,普通账号需要在root账号

语法sudo [选项] [命令]

功能:sudo命令可以让普通用户以超级用户或其他用户的身份执行命令,而不需要知道超级用户的密码。

在这里插入图片描述

常用选项

  • -l:列出当前用户可以执行的sudo命令及其对应的权限。
  • -u:以指定的用户身份执行命令,格式为-u 用户名。
  • -i:以root用户的身份登录shell,即切换到root用户的环境。

sudo命令的配置
配置文件:sudo的配置文件是/etc/sudoers,该文件定义了哪些用户可以执行哪些命令。

由于这里还没有讲到vim的相关知识,大家可以在后面一篇文章中学习完vim的基本操作了再进行sudo命令的配置。

这里我来为大家讲述如何创建一个普通用户,并配置sudo命令。

  1. 在root账号下,创建普通账号并设置登录密码
adduser 用户名 // 创建普通用户
passwd 用户名  //设置普通用户登录密码

在这里插入图片描述

  1. 配置sudo命令
    • 输入vim /etc/sudoers进入文件
    • 按shift+;会出现一个冒号,输入set nu显示行号
      在这里插入图片描述
    • 滑到100行处,就会出现我们需要修改的部分
      在这里插入图片描述
    • 将光标移动到上述图片红色正方形处,按yy进行复制,再按p对内容进行复制
      在这里插入图片描述
    • 按i进入插入模式,对刚刚粘贴部分中的root改为你的新建普通用户的用户名
      在这里插入图片描述
    • 按ESC退出插入模式,再按shift+;会出现一个冒号,输入 wq! 强制保存并退出。

按照上面的步骤操作即可完成对sudo指令的配置。


2.2 Linux权限管理

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

  • 文件和文件目录的所有者:u-----User
  • 文件和文件目录的所有者所在的组的用户:g—Group
    • 一个组可以只有一个人
    • 一个组可以有很多人,用组长的名字对组进行命名
  • 其它用户:o—Others

为啥要有所属组呢? 有所有者和其他用户不是应该就够了吗?

假设张三和李四在同一个公司分别在A小组和B小组做相同的项目,张三的项目已经做3/4了,老板想看看张三做的项目,如果只有所有者和其他用户,老板想看张三的代码,那么张三只能开启other的读权限,那么张三的代码既能被老板看到,也能被李四看到,那么这样会导致张三的代码可能会被李四剽窃,而有了所属组,张三就可以将老板加入所属组,并开启所属组的读权限,那么张三的代码就只能被老板看而不能被李四看到。


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

在这里插入图片描述
为什么上面有图片中只有所有者和所属组,没有other呢?因为没有必要,除去所属组和所属组剩下就是other了。

没有对应的权限会怎么样
在这里插入图片描述

以下图为例提一个问题,用户去掉文件拥有者的读权限,但是保留所属组的读权限,并且用户是所属组的组长,为什么不能读文件内的内容呢?

用户会按照顺序拥有者、所属组和其他用户的顺序匹配,如果用户匹配了拥有者则不会再向后匹配了,否则再向后面匹配,这里用户是拥有者也是所属组组长,不能因为拥有者的权限没有或少于所属组权限就继续向后匹配,所以这里用户匹配拥有者的权限,所以用户不能读文件内的内容。
在这里插入图片描述


2.2.2.1 文件类型
  • -:普通文件、源代码、可执行程序、库等
    在这里插入图片描述

  • d:文件夹(目录)
    在这里插入图片描述

  • l:软链接文件(类似Windows的快捷方式)
    在这里插入图片描述

    可以使用ln指令创建软连接文件,具体使用我会在后面的文章中讲述到。
    在这里插入图片描述

  • b:块设备文件(例如硬盘、光驱等)
    在这里插入图片描述

  • p:管道文件,主要用于进程间的通信,它允许一个进程将数据写入管道的写入端,而另一个进程可以从管道的读取端读取数据。
    在这里插入图片描述

  • c:字符设备文件(例如键盘、显示屏等)(终端设备是字符设备的一种)

    在我们向显示器打印整数985的时候是输出一个一个的字符还是输出整数985?那么我们在输入一个整数的时候是输入一个个字符还是输入的整数呢?

    实际上我们向显示器打印整数985的时候printf("%d",985),printf会将整数985格式化输出,输出一个一个的字符,所以显示器就是字符设备。当我们敲击键盘输入一个整数时,int x = 0 , scanf(“%d”,&x),实际上也是输入的一个一个字符,而输入的字符最终由格式化控制最终拼成一个整数,所以键盘也是一个字符设备,而上一篇文章中我为大家灌输了一个概念:Linux下一切皆文件!所以键盘和显示器就是字符设备文件


    在这里插入图片描述
    当我们输入ll /dev/pts*时,会显示设备文件的详细的信息,我们发现这里只有两个设备文件,当我们在开一台设备再试试,我们可以发现多了一个设备文件。
    在这里插入图片描述
    那么如果在这个时候给这个多出来的设备文件输入信息回发生什么呢?我们发现文件的内容在新开的设备中显示了出来

    在这里插入图片描述


2.2.2.2 基本权限
  1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  4. ‘-’ 表示不具有该项权限

2.3 文件权限值的表示方法

2.3.1 字符表示法

Linux表示说明
rwx可读可写可执行
rw-可读可写
r-x可读可执行
r- -可读
-wr可写可执行
- w -可写
- - x可执行
- - -无权限

2.3.2 八进制数值表示法

权限符号八进制二进制
rwx71 1 1
rw-61 1 0
r-x51 0 1
r- -41 0 0
-wr30 1 1
- w -20 1 0
- - x10 0 1
- - -00 0 0

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

2.4.1 chmod指令

功能:设置文件的访问权限
语法chmod [选项] 权限 文件名
常用选项

  • R -> 递归修改目录文件的权限

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

用户符号

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

chmod命令权限格式

  1. 用户表示符+/-=权限字符
    • +:向权限范围增加权限代号所表示的权限
      在这里插入图片描述

    • -:向权限范围取消权限代号所表示的权限 在这里插入图片描述

    • =:权限范围赋予权限代号所表示的权限

      在这里插入图片描述


  1. 三位8进制数字

    三位8进制数字对应着拥有者、所属组和其他用户的8进制权限,以下面chmod 664 test.c为例,6代表的权限是rw-,4代表的权限是r--,所以这一段指令是将test.c文件的拥有者权限改为rw-,所属组的权限改为rw-,其他用户的权限改为r--
    在这里插入图片描述


2.4.2 chown指令

功能:修改文件的拥有者
语法chown [选项] 用户名 文件名

从下面的图片中我们可以看出在没有提权的情况下直接修改文件的拥有者是不行的,为什么呢?

在现实中我们送别人东西并不是直接“唉呀,给你给你”,还需别人的接收,Linux中同样如此,但是Linux中没有直接对应“接收”的机制来同意拥有者的变更,那么这里直接提权强制将文件“送”出去。
在这里插入图片描述


2.4.3 chgrp指令

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

在这里插入图片描述


2.4.4 umask指令

功能:查看或修改文件掩码

新建文件默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

在这里插入图片描述

语法umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
在这里插入图片描述


2.4.5 file指令

功能:辨识文件类型
语法file [选项] 文件或目录...
常用选项

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容

在这里插入图片描述


2.5 目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
    在这里插入图片描述

  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

    在这里插入图片描述

  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

    在这里插入图片描述

于是, 那么这里提出一个问题,是否只要用户具有目录的写权限,用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。这好像不太科学啊,我张三创建的一个文件,凭什么被你李四可以删掉?
在这里插入图片描述
我们发现如果有权限的情况下,李四确实可以将张三的文件删除,但是一般这种情况是不会发生的,因为在/home这个目录下就进不去,更别说里面的文件了
在这里插入图片描述
但是还有一种情况就是两个需要在同一个目录下进行合作,那么这种情况一般都是root账号在根目录下创建一个目录,两人都在这个目录工作,李四还是可以将张三的文件删除,那么应该怎么办呢?为了解决这个问题, Linux引入了粘滞位的概念。


2.6 粘滞位

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

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


2.7 总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限

结尾

如果有什么建议和疑问,或是有什么错误,大家可以在评论区中提出。
希望大家以后也能和我一起进步!!🌹🌹
如果这篇文章对你有用的话,希望大家给一个三连支持一下!!🌹🌹
在这里插入图片描述

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

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

相关文章

C++ 中迭代器的first和second

c 里面的map容器的迭代器里面 有个first 和 second&#xff0c;分别指向键值和数值 it.first就是在迭代器中获取map键值&#xff0c;it.second同理 #include<iostream> #include<map> using namespace std;int main(void){map<string, string> m;//新建一个m…

lower_bound函数和upper_bound函数

lower_bound 和 upper_bound 函数都是 C 标准库算法&#xff0c;用于在已排序的范围内查找元素。它们返回的是迭代器&#xff0c;指向满足特定条件的元素位置。 lower_bound(begin, end, val) 功能&#xff1a;返回指向第一个不小于 val 的元素的迭代器。含义&#xff1a;如果…

如何快速下载拼多多图片信息,效率高

图片是电商吸引顾客的关键因素&#xff0c;高质量的商品图片能提升产品吸引力&#xff0c;增强用户购买欲望。良好的视觉展示有助于建立品牌形象&#xff0c;提高转化率。同时&#xff0c;图片也是商品信息的主要传递媒介&#xff0c;对消费者决策过程至关重要。 使用图快下载器…

Linux内核有什么之块设备驱动有什么第七回 —— 邂逅的三个文件系统之二:实际文件系统(4)

接前一篇文章&#xff1a;Linux内核有什么之块设备驱动有什么第六回 —— 邂逅的三个文件系统之二&#xff1a;实际文件系统&#xff08;3&#xff09; 本文内容参考&#xff1a; 《Linux设备驱动开发详解 —— 基于最新的Linux4.0内核》 宋宝华&#xff0c;机械工业出版社 3…

奥运会大规模使用中国AI大模型!

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 AI圈最近又发生了啥新鲜事&#xff1f; 巴黎奥运会大规模使用中国 AI 大模型 巴黎奥运会成为一场科技与体育的盛宴&#xff0c;其中包括了大量中国科技的应用。AI 技术将在多个方面发挥作用&#xf…

《计算机网络》(第8版)第7章 网络安全 复习笔记

第 7 章 网络安全 一、网络安全问题概述 1 计算机网络面临的安全性威胁 计算机网络上的通信面临两大类威胁&#xff0c;即被动攻击和主动攻击。 &#xff08;1&#xff09;被动攻击 这是指攻击者从网络上窃听他人的通信内容&#xff0c;通常把这类攻击称为截获。 &#xff08…

2.外部中断(EXTI)

理论 NVIC&#xff1a;嵌套向量中断控制器&#xff08;解释教程&#xff09; 外部通用中断线(EXTI0~EXTI15)&#xff1a;每个GPIO设置成中断模式&#xff0c;与中断控制器连接的线 外部中断触发方式 上升沿触发、下降沿触发、双边沿触发 外部中断触发函数 在stm32f1xx_it.c文件…

【AI作图:奥运会游泳冠军】

画一个&#xff1a;水花&#xff0c;上半身&#xff0c;游泳冠军&#xff0c;泳池背景&#xff0c;面部明亮&#xff0c;眼神光&#xff0c;亚洲运动员&#xff0c;超高品质&#xff0c;真人&#xff0c;完美容颜&#xff0c;健美&#xff0c;健身&#xff0c;身材娇好&#xf…

Jackson常用注解详解

Hi &#x1f44b;, Im shy 有人见尘埃&#xff0c;有人见星辰 Jackson常用注解详解 文章目录 Jackson常用注解详解0. 引入依赖1. JsonProperty2. JsonIgnore3. JsonFormat4. JsonInclude5. JsonCreator6. JsonValue7. JsonIgnoreProperties结论 Jackson是Java生态系统中广泛…

例题:使用一条命令将xxx目录下除了xx子目录之外的文件全部删除(find、管道、grep、exec)

文章目录 例题&#xff1a;删除xx子目录以外的所有目录和文件需求方式一方式二 例题&#xff1a;删除xx子目录以外的所有目录和文件 需求 使用一条命令将/opt目录下除了rh子目录之外的文件全部删除 [rootlocalhost opt]# cp /var/log/vm* /opt/ [rootlocalhost opt]# mkdir …

(一)循环依赖,你真的懂了吗?万字解析循环依赖底层原理 - 什么是Bean循环依赖?Spring是如何解决的?二级缓存可以解决吗?遇到相关报错如何处理?

theme: vuepress 一、相关知识点简介 Spring Boot是基于Spring框架的一个快速开发平台&#xff0c;旨在简化Spring应用的创建和部署。通过提供一系列开箱即用的默认配置和自动化工具&#xff0c;Spring Boot使开发者能够专注于业务逻辑&#xff0c;而无需处理复杂的配置和依赖…

【Python机器学习】支持向量机——在复杂数据上应用核函数

上图中&#xff0c;数据中存在某种可以识别的模式&#xff0c;其中一个问题就是&#xff1a;我们能否想线性情况一样&#xff0c;利用强大的工具来捕捉数据中的这种模式&#xff1f; 利用核函数将数据映射到高维空间 在上图中&#xff0c;数据点处于一个圆中&#xff0c;人类…

《零散知识点 · 自定义 HandleMapping》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

[独家原创] CPO-RBF多特征分类预测 优化宽度+中心值+连接权值 (多输入单输出)Matlab代码

[独家原创] CPO-RBF多特征分类预测 优化宽度中心值连接权值 &#xff08;多输入单输出&#xff09;Matlab代码 目录 [独家原创] CPO-RBF多特征分类预测 优化宽度中心值连接权值 &#xff08;多输入单输出&#xff09;Matlab代码效果一览基本介绍程序设计参考资料 效果一览 基本…

算法--初阶

1、tips 1.1、set求交集 {1,2,3} & {2,3} & {1,2} {2} 其实就是位运算&#xff0c; 只有set可以这样使用&#xff0c; list没有这种用法 {1,2,3} | {2,3, 4} | {1,2} {1, 2, 3, 4} 并集 1.2、*与** * 序列(列表、元组)解包&#xff0c;如果是字典&#xff0c;那…

15.75.【C语言】表达式求值

目录 一.整型提升 1.定义 2. 一.整型提升 1.定义 C语言中整型算术运算总是至少以缺省&#xff08;默认&#xff09;整型类型的精度来进行的。为了获得这个精度&#xff0c;表达式中的字符和短整型操作数在使用之前被转换为普通整型&#xff0c;这种转换称为整型提升 2.整型提…

C++初学者指南-5.标准库(第二部分)--移除元素算法

C初学者指南-5.标准库(第二部分)–移除元素算法 文章目录 C初学者指南-5.标准库(第二部分)--移除元素算法remove / remove_ifremove_copy / remove_copy_ifunique / unique_copyerase / erase_if相关内容 不熟悉 C 的标准库算法&#xff1f; ⇒ 简介 remove / remove…

还有谁分不清Oracle认证里的OCA、OCP、OCM?

在IT行业&#xff0c;Oracle认证是许多专业人士提升技能和职业竞争力的重要途径。 Oracle认证是一套由Oracle公司提供的全球认可的专业资格认证体系&#xff0c;旨在证明个人在Oracle数据库及相关技术领域的专业技能和知识水平。 Oracle认证作为数据库认证中的天花板&#xff0…

目标检测——GDXray数据集转为YOLO格式

关于该数据集的介绍可以看我写的另一篇博客&#xff1a;链接 论文题目&#xff1a;《GDXray: The Database of X-ray Images for Nondestructive Testing》论文链接&#xff1a;https://link.springer.com/article/10.1007/s10921-015-0315-7 Github链接&#xff1a; https:…

JavaScript小本本|JavaScript 对象方法定义的演变

在微信中阅读&#xff0c;欢迎关注公众号&#xff1a;CodeFit。 创作不易&#xff0c;如果你觉得这篇文章对您有帮助&#xff0c;请不要忘了 点赞、分享 和 关注&#xff0c;为我的 持续创作 提供 动力&#xff01; 欢迎订阅《Vue 3.x 必修课&#xff5c;2024》&#xff1a;htt…