【Linux】shell 及权限理解

news2024/11/15 13:45:46

​🌠 作者:@阿亮joy.
🎆专栏:《学会Linux》
🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根
在这里插入图片描述

目录

    • 👉shell命令以及运行原理👈
    • 👉Linux权限的概念👈
    • 👉Linux权限管理👈
      • 文件访问者的分类(角色)
      • 文件类型和访问权限(事物属性)
        • 1.文件类型
        • 2.基本权限
      • 文件权限值的表示方法
        • 1.字符表示方法
        • 2.8进制数值表示方法
      • 文件访问权限的相关设置方法
      • 文件相关指令
        • 1.file指令
        • 2.umask指令
      • 目录的权限
      • 粘滞位
    • 👉总结👈

👉shell命令以及运行原理👈

在这里插入图片描述
其实,我们平时敲的指令都是可执行程序,都是用 C语言或 C++ 代码写的。那这些指令是什么在 shell 上运行起来的呢?shell 又是什么呢?

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

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

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

在这里插入图片描述

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

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

  • 帮助理解:假如你是一个闷骚且害羞的程序员张三,那 shell 就像媒婆,操作系统内核就是你们村头漂亮的且又让你心动的姑娘如花。你看上了如花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给如花,而我们找到媒婆姓王,所以我们叫她王婆,她对应我们常使用的 bash。张三不能和如花直接沟通,就如同用户不善于和操作系统打交道,也不能直接和操作系统进行交互。

shell 除了降低用户和操作系统交互的成本,还有一个作用就是变相保护操作系统。因为当用户输入一些非法指令时,shell 就会拒绝执行该指令,这样就起到保护操作系统的作用了。

在这里插入图片描述
一般而言,shell 本身并不执行对应的指令,而执行指令是通过派生子进程的方式执行用户的指令。这样做是为了保护 shell。shell,是命令行解释其的一个统称,而 Centos 7 采用的命令行解释器是 bash。当用户登录成功后,第一个在系统上跑起来的程序就是 bash。

在这里插入图片描述
一个标准的 shell 命令提示符的组成格式

在这里插入图片描述

在这里插入图片描述

👉Linux权限的概念👈

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

  • 超级用户:可以在 Linux 系统下做任何事情,不受限制
  • 普通用户:在 Linux 系统下做有限的事情,受权限的约束
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

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

在这里插入图片描述
注:当从普通用户切换到 root 用户(su、su root 或者 su - 指令),需要输入 root 用户的密码;而当 root 用户切换到普通用户(Ctrl + d 或者 su 普通用户名),则不需要输入普通用户的密码。因为 root 用户的权限是最高的。su 和 su root 指令切换到 root 用户的时候,并不会改变所处的路径,而su - 指令切换到 root 用户的同时将路径改为 root 的家目录,即 /root

在这里插入图片描述

当我们是 root 用户时,输入 ls /home 可以查看所有的普通用户。

在这里插入图片描述
当我是普通用户,我想要 root 用户的身份执行一条指令,但不想变成 root 用户,怎么办呢?那么我们可以使用 sudo 指令,该指令的使用需要改配置文件。当我们学了 vim 工具,再来做这个操作。

在这里插入图片描述
当我们第一次使用 sudo 命令时,是需要输入普通用户的命名的;当使用 sudo 命令时间间隔较短时,就不再需要输入普通用户的密码了。

没有将普通用户添加到配置文件中的情况

在这里插入图片描述
这种情况就相当于系统不信任这个用户,那么如何解决这种情况呢?我们需要将当前用户添加到配置文件 /etc/sudoers 中,现在我们暂时不配置,先使用 root 用户来进行操作。

在这里插入图片描述
那我们使用 sudo 指令进行提权的时候,让我们输入自己的密码,这是为什么呢?这是给受信任的普通用户提供最少的执行障碍,保护操作系统。

什么是权限?

  • 权限是约束人的(某一个人或者某一类人)。例如:非会员不能看需要会员才能看的电影,不能听会员才能听的音乐等等。
  • 目标对象(电影网站、音乐APP等)本来就没有对应的属性(业务)。例如:你不可能在电影网站上做 OJ 题。因为电影网站没有这样的业务,那么你也就没有在电影网站上面做 OJ 题的权限。
  • 通俗来说,权限就是一件事情是否允许被谁做。例如:Linux 的文件权限 = 人(角色) + 文件属性。

👉Linux权限管理👈

文件访问者的分类(角色)

一个人能做什么事,并不取决于这个人的名字是什么,而是取决于这个人的角色。比如:张三是某个学校的校长,他能够进入校长办公室,是因为他名字是张三就能够进入校长办公室吗?并不是,是因为他的角色是校长,所以他能够进入校长办公室。换了另一个张三,就不能进入校长办公室了。

那文件的访问者(角色)的分类有什么呢?

  • 文件和文件目录的所有者: u—User(拥有者)
  • 文件和文件目录的所有者所在的组的用户: g—Group(所属组)
  • 其它用户: o—Others (其他人)

那普通用户和上面的三类访问者是冲突的关系吗?并不是,某个用户可能是一个文件的拥有者,也有可能是另一个文件的所属组或者其他人。文件的访问者是一种角色,或者说是一种身份,普通用户可以被赋用不同的角色(省份)。而操作系统约束的就是角色,并不是特定的普通用户(人)。

那么文件的三个角色究竟在哪呢?我们来看一下:
在这里插入图片描述
注:不属于拥有者和所属组的用户就是其他人。

为何要存在所属组?

在一个公司里,会存在两个团队做一个项目,那么谁把这个项目做更好,这个项目就归属于谁。那么团队 A 有团队 A 的代码目录,团队 B 也会有团队 B 的代码目录。这时候,就肯定需要所属组这样的概念。如果没有所属组这样的概念,那么其他团队的成员也能够看你们团队的代码了。所以所属组的概念也就必须存在。

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

在这里插入图片描述

文件 = 文件内容 + 文件属性。文件的属性包括读权限(r)、写权限(w)和可执行权限(x)。

那么,我们输入ll指令,显示器上显示的都是文件的属性。

在这里插入图片描述

1.文件类型

  • d:文件夹
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

各种文件的例子

在这里插入图片描述
虽然说 Linux 系统不以文件后缀来区分文件,但是这并不代表Linux 下的工具(如:gcc)可能会对文件后缀有要求。

在这里插入图片描述
刚才我们学习的一个字符是文件的类型,那么剩下的九个字符是文件的访问权限,那这是如何对应起来的呢?我们来学习一下。

2.基本权限

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

剩下的九个字符三三为一组,第一组是拥有者的权限,第二组是所属组的权限,最后一组是其他人的权限。

在这里插入图片描述
如何描述文件的权限

在这里插入图片描述
以目录文件 dir 为例,dir 这个文件的拥有者是 Joy,所属组是 Joy。拥有者具有读权限、写权限和可执行权限,所属组具有读权限、写权限和可执行权限,其他人具有读权限、没有写权限和具有可执行权限。

文件权限值的表示方法

1.字符表示方法

在这里插入图片描述

2.8进制数值表示方法

在这里插入图片描述

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

如何操作权限呢?

操作文件的权限有两种:一是设置文件属性(chmod),而是设置文件所属角色(chown 或者 chgrp)。

注:当你是 root 用户或者是文件的拥有者时,才能更改文件的属性。

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

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

① 用户表示符+/-=权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • 用户符号:
    • u:拥有者
    • g:拥有者同组用
    • o:其它用户
    • a:所有用户
chmod u-r 文件名	#去除文件拥有者对该文件的读权限
chmod u+x 文件名	#给文件拥有者加上对该文件的可执行权限
chmod u-rwx 文件名 #去除文件拥有者对该文件的所有权限
chmod u+rw 文件名 #给文件拥有者加上对该文件的读权限和写权限
chmod g-rw 文件名 #去除所属组对该文件的读权限和写权限
chmod g+rwx 文件名 #给所属组加上对该文件的所有权限
chmod o-rwx 文件名 #去除其他人对该文件的所有权限
chmod u-rwx,g-rwx 文件名 #去除拥有者和所属组对该文件的所有权限
chmod a+rwx 文件名 #给所有人加上对该文件的全部权限
chmod a=rwx 文件名 #给所有人加上度该文件的全部权限

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

有和没有普通文件权限的样子

在这里插入图片描述
在这里插入图片描述
为什么我是所属组,且所属组有对该文件的所有权限,我还是不能够对文件进行相关的操作呢?因为系统的角色匹配结构是 if-else if - else 结构,而不是 if-if-if 结构。只要前面的角色匹配上了,就只能拥有该角色对该文件的权限,无法拥有其他角色对该文件的权限。其实如果 Linux 系统采取 if-if-if 的匹配结构,你想去除拥有者的权限,那么你也要去除所属组所对应的权限。这样是不合理的,因为所属组可能还有有其他人。

root 用户不受任何权限的约束

在这里插入图片描述

sudo chown 用户名 文件名 #将指定文件的拥有者改为指定用户
sudo chgrp 用户名 文件名 #将指定文件的所属组改为指定用户
sudo chown 用户名1:用户名2 文件名 #将指定文件的拥有者和所属组改为指定用户
#-R 递归修改文件或目录的拥有者或所属组

注:修改文件的拥有者和所属组都需要使用 root 用户,也可以使用 sudo 指令暂时提权。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
②三位8进制数字

在这里插入图片描述

在这里插入图片描述

文件相关指令

1.file指令

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

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

在这里插入图片描述

2.umask指令

为什么要有权限呢?便于我们和系统进行安全管理!

那又为什么我们创建的目录或者普通文件,其默认权限是我们所看到的样子呢?

在这里插入图片描述
其实,Linux 规定了目录的起始权限是 777,而普通文件的起始权限是 666。除了起始权限,Linux 系统还有一个权限掩码,超级用户默认掩码值为0022,普通用
户默认为0002。(注:最开头的 0 不需要管,可以看做八进制数的标志)系统默认会配置好 umask 权限掩码。凡是在 umask 权限掩码中出现的权限,都必须在起始权限中去掉。

在这里插入图片描述
那去掉 umask 权限掩码中出现的权限是什么意思呢?是做减法吗?学习这个之前,我们先来学习一下 umask 指令的用法。

umask
功能: 查看或修改文件掩码
用法: umask 权限值

umask #查看权限掩码
umask 数字 #将权限掩码改为指定数字

在这里插入图片描述
那么现在我们来回答上面的问题:去掉是做减法吗?我们来看一下。

在这里插入图片描述
通过上图的推导,我们可以知道去掉并不是做减法,那么去掉究竟是什么意思呢?其实是通过位运算来达到去掉的目的。最终权限 = 起始权限 & (~mask)

在这里插入图片描述
那为什么这样子就能做到去掉权限掩码中出现的权限呢?因为默认 umask 权限掩码中的 1 表示要去掉的权限位,0 表示要保留的权限位。那么,~umask中的 1 表示要保留的权限位,0 表示要去掉的权限位。那么起始权限和 ~umask 按位与就能够做到去掉权限掩码中出现的权限了。

目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法 cd 到目录中
  • 可读权限: 如果目录没有可读权限, 则无法用 ls 等命令查看目录中的文件内容
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

在这里插入图片描述
在这里插入图片描述
如果我们要进入一个目录,需要该目录的可执行权限。所以,系统就规定目录的起始权限是 777 。因为所有的目录被创建出来,一般都要能够被进入的。而大部分普通文件都是不可执行的,所以普通文件一般被创建出来都是没有可执行权限的。

粘滞位

Linux 系统中有很多用户,有时候用户需要在一个公共的目录下,进行临时文件的操作(增删查改)。那么系统也有这样的目录来满足用户的需求。

在这里插入图片描述
在这里插入图片描述
那为什么张三为什么不在李四的家目录下操作呢?因为没有权限。粘滞位是在一个公共的目录下,大家一起进行文件操作,其创建者是 root 用户。

那现在我们就自己手动创建一个公共目录吧!
在这里插入图片描述
张三和李四在公共目录下创建自己的文件。
在这里插入图片描述
在这里插入图片描述
李四不能没有张三创建的文件的写权限和可执行权限

在这里插入图片描述
李四没有张三创建的文件的任何权限,却可以删除张三的文件。
在这里插入图片描述

其他人对一个文件没有任何权限,却可以删除该文件,这样子合理吗?其实很合理,因为能不能删除一个文件并不取决于用户对该文件有没有权限,而是取决于用户对于该目录有没有读权限。

在这里插入图片描述

一个文件能不能被删除取决于目录权限,而公共目录对任何人都有读写执行权限。所以任何人都能删除其他人在公共目录下的文件。那这样是不是非常不合理?我在公共目录下创建的文件居然被你删掉了,那怎么行呢?

那我们怎么才能让大家在一个公共目录进行 rwx 操作,但禁止大家互删对方的文件呢?那么,这时候就需要给公共目录设置粘滞位(权限的一种特殊情况)。

注:粘滞位只能给目录进行设置。

 chmod +t 目录名 #给公共目录设置粘滞位

在这里插入图片描述
设置完粘滞位后,我们再来看看李四能不能删除张三的文件了。

在这里插入图片描述
通过上图,我们可以看到:给公共目录设置好粘滞位后,用户无法删除别的用户的文件,只能删除自己的文件。

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

  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除

👉总结👈

本篇博客主要讲解了shell 命令及其运行原来、权限的概念、权限管理、文件相关指令以及粘滞位等等。那么以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!谢谢大家!💖💝❣️

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

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

相关文章

计算机基础学习笔记:操作系统篇之硬件结构,存储层次结构

二、存储器的层次结构 本文知识来源小林Coding阅读整理思考,原文链接请见该篇文章 存储层次 寄存器高速缓存,Cache 1-3级内存磁盘(SSD,HDD) 关键点 各层次的存储的 介质、速度、容量 以及工作层次理解CPU Cache的作…

【Spring]SpringMVC

一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层。指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 实体类Bean:专门存储业务数据…

【qt Spin Box | Double Spin Box输入小部件函数学习篇】

Spin Box | Double Spin Box输入小部件函数学习篇【1】UI设计布局【2】setMinimum | setMaximum【3】setPrefix | setSuffix【4】setValue【5】setDisplayIntegerBase【6】setSingleStep【7】value【8】举例【1】UI设计布局 【2】setMinimum | setMaximum setMinimum 此属性保持…

点对点网络与广播式网络的区别

目录 一、点对点网络与广播式网络的区别 二、结点和节点 一、点对点网络与广播式网络的区别 写下本文的原因是笔者在学习计算机网络第一章时看到了下面王道书上的一句话,我不理解这句话想表达的是谁需要“分组存储转发和路由选择机制”。于是当时得出了一个错误…

Python读取excel内容追加到mysql表中赋予字段注释

前言 由于最近遇到一个实体类有特别多的字段,我就想自己一个地在表中创建,并写注释未免太浪费人力和时间了,然后在网上查找资料,果不其然让我看到了一个可以使用Python读取excel内容追加到mysql表中赋予字段注释,这简…

前端零碎知识随笔

一、介绍 本篇博客主要使用来记录一些比较零碎的知识点,都是本人在日常开发工作中遇到的,或者是在学习过程中遇到的。因为这些知识点都比较零碎,为了防止遗忘,所以特意写一篇博客来记录,后面也不会不断慢慢更新的。 …

[附源码]计算机毕业设计Python-大学生健康档案管理(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

JSP+MySQL基于ssm的环保数据自动采集及预测系统

在21世纪的今天,随着科技的进步和发展,人们的生活逐渐趋于自动化、便捷化、数据化。而发展总会有代价,科技的进步总是伴随着环境的恶化。人类用智慧将地球的资源充分利用,以便丰富人们的生活,推动国家的进步。回过头去看,地球的环境已经成为威胁人类长久生存的主要问题之一。在…

34-Vue之ECharts高级-调色盘

ECharts高级-调色盘前言调色盘主题调色盘全局调色盘局部调色盘渐变颜色前言 本篇来学习下ECharts中调色盘的使用 调色盘 它是一组颜色,图形、系列会自动从其中选择颜色, 不断的循环从头取到尾, 再从头取到尾, 如此往复主要分三种:主题调色盘、全局调色…

基于GDAL的gdb格式数据读写功能实现

一、GDAL类库下载: 下载地址:GISInternals Support Site 比如我下载的是release-1930-x64-gdal-3-4-2-mapserver-7-6-4 点击release-1930-x64-gdal-3-4-2-mapserver-7-6-4的链接,下载这两个文件 二、解压文件和安装gdb插件 1.下载好的两个…

Innodb存储引擎-备份和恢复(分类、冷备、热备、逻辑备份、二进制日志备份和恢复、快照备份、复制)

文章目录备份和恢复分类冷备热备逻辑备份mysqldumpSELECT...INTO OUTFILE恢复二进制日志备份与恢复快照备份(完全备份)复制快照复制的备份架构备份和恢复 分类 (1)根据备份的方法可以分为: Hot Backup(热备)&#x…

【图像去噪】中值+均值+Lee+Kuan图像滤波【含Matlab源码 1179期】

⛄一、图像去噪及滤波简介 1 图像去噪 1.1 图像噪声定义 噪声是干扰图像视觉效果的重要因素,图像去噪是指减少图像中噪声的过程。噪声分类有三种:加性噪声,乘性噪声和量化噪声。我们用f(x,y)表示图像,g(x,y&#xff0…

ADI Blackfin DSP处理器-BF533的开发详解63:DSP接总线屏的硬件和驱动设计(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 EBIU总线LCD屏 硬件实现原理 LCD2.4 寸液晶屏子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT1 和 PORT2 上,板卡插入时&#xf…

基于JAVA的水产批发系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):

【Linux】低级IO

目录 一、文件的概念 二、C语言文件操作回顾 三、使用系统调用进行文件I/O 1、系统调用open 1.1open接口介绍 1.2open形参中标记位flags的意义 1.3open的使用 2、系统调用write 2.1write接口介绍 2.2write的使用 3、系统调用read 3.1read接口介绍 3.2read的使用 …

什么是 SAP ABAP FDA - Fast Data Access 技术?

快速数据访问 (Fast Data Access,缩写为 FDA) 是一种可在 SAP ABAP 环境中访问的协议。 它允许针对 SAP HANA 提交 OPEN SQL SELECT 语句,从而使用 SAP ABAP 的数据格式。 在快速数据访问场景里,SAP ABAP 内表数据传输到数据库并返回。这种方…

Java+MySQL基于ssm的物理竞赛管理系统

物理竞赛是对课堂上所学的理论知识的实践运用,加深所学知识的理解,锻炼团队协作能力。学生可以根据个人爱好,个人特长选择参与,不仅能培养学生的创新意思、提高专业技能,还能锻炼学生的组织能力和协作能力。物理竞赛是在中国科协的领导下,由中国物理学会主办,各省、自治区、直辖…

【力扣周赛#324】6266. 使用质因数之和替换后可以取到的最小值+6267. 添加边使所有节点度数都为偶数+6268. 查询树中环的长度

目录 6265. 统计相似字符串对的数目 - ac 6266. 使用质因数之和替换后可以取到的最小值 分解质因数 1、tle代码 2、优化ac代码 6267. 添加边使所有节点度数都为偶数 - 建图分类讨论 关于建图 6268. 查询树中环的长度 - LCA最近公共祖先 6265. 统计相似字符串对的数目…

[附源码]Nodejs计算机毕业设计基于微信平台的车险投保系统设计与实现Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

Vue实现后台管理系统

目录 前言 登录页面 后台界面 前言 今天用Vue实现一个简易的后台,不借助接口和后端代码,仅通过前端实现,本案例涉及Vue路由相关知识,不熟悉Vue路由可以先看一下右边的文章再接着看下面的项目案例:Vue路由 这篇文章详…