指令的运行原理及Linux权限解读

news2024/12/23 5:50:57

目录

一. 指令的运行原理

二. Linux下的用户

2.1 Linux的用户分类

2.2 用户之间的切换 

三. 文件权限的概念

3.1 文件类型

3.2 文件的权限

3.3 ls -l 打印文件全部信息的解读

四. 权限的修改

五. 拥有者和所属组的修改

六. 起始权限问题和权限掩码umask

七. 目录文件可读、可写、可执行的含义

八. 粘滞位


一. 指令的运行原理

输入指令的过程,本质上就是输入字符串。指令本质上就是编译好的程序和脚本,被存储在特定的路径下(默认/user/bin/)

我们所有的指令,都要在操作系统OS内运行,但是直接使用OS的难度较高,不适用于普通用户,这就需要图形化界面或命令行解释器来充当中间角色,来让用户方便地使用操作系统。

Linux操作系统没有图形化界面,需要通过指令来进行操作。用户输入指令后,会先发送给命令行解释器进行处理,然后再交给操作系统核心(kernal),并将核心kernal的处理结果反馈给使用者。

图1.1 指令运行的原理

命令行解释器的作用:

  1. 将使用者的命令翻译给操作系统核心(kernal)处理。
  2. 将核心kernal的处理结果翻译过后反馈给用户。

命令行解释器存在的意义:

  1. 对用户输入的命令行进行翻译并交由操作系统运行。
  2. 拦截用户的非法指令,对操作系统进行保护。

二. Linux下的用户

2.1 Linux的用户分类

在Linux下,用户分为超级用户(root用户)和普通用户,普通用户由root用户进行创建。每一个普通用户都有一个家目录/home,存储该用户的相关文件。

root用户创建和删除普通用户的指令为:

  • adduser + 用户名:创建普通用户
  • userdel + 用户名:删除普通用户
  • passwd + 用户名:为普通用户设置密码

root类似于Window下的管理员,root用户基本不受权限的约束,而普通用户会受到权限的约束。

如果我们是普通用户,但希望运行一条需要由root用户执行的指令,那么,可以通过sodo对某一条指令进行提权,语法为:sudo + 指令  -> 输入普通用户密码。

但是,默认情况下普通用户无法使用sudo对某条指令进行提权,需要root用户将该普通用户添加信任之后才可以。

图2.1 使用sudo对某条指令提权

2.2 用户之间的切换 

  • 普通用户 --> 超级用户:su root/su -  -> 输入root用户密码
  • 超级用户 --> 普通用户:su 用户名 -- 不需要输入密码
  • 普通用户 --> 普通用户:su 用户名  -> 要切换到的用户的密码
  • exit:退出当前用户(回到原来的用户) 
图2.1 普通用户切换超级用户
图2.2 普通用户和普通用户见的切换

三. 文件权限的概念

权限,通俗的理解就是一件事是否运行你去做。

  • 权限认证的是身份
  • 权限也与事务的属性有关

3.1 文件类型

Window系统以后缀名来区分文件类型,Linux的后缀名没有特别的意义,但也不是说没用。因为Linux系统上运行的软件,可能需要用到后缀名。

Linux系统通过特定的标识符,来区分文件的类型。

标识符文件类型
-普通文件(源代码、文本文件、可执行程序等)
d目录文件/文件夹
b块设备文件(磁盘文件)
c字符设备文件(键盘、显示器等)
p管道文件(用于计算机通信)

3.2 文件的权限

文件的权限分为:可读、可写和可执行。

在Linux下,权限身份有三种,分别为拥有者、所属组、其他人。root用户和普通用户可以是上面三种身份的任意一种,文件可以为每种身份设定不同的权限。但是:root用户不受权限约束。

权限标识符含义
r可读
w可写
x可执行
-对应的位置没有权限
图3.1 用户和权限身份之间的关系

3.3 ls -l 打印文件全部信息的解读

  • 第一个字符:文件类型。
  • 后面第2-10个字符:每三个一组,对应拥有者、所属组、其他人的权限。
  • 再往后依次为:链接数、拥有者、所属组、文件大小、最后一次修改或创建的时间、文件名
图3.2 文件属性信息解读

对于文件权限的打印,三三为一组,每个位置的含义是确定的(从左往右依次为:读权限、写权限、执行权限),每个位置只有是或者否,用来表征是否具有特定权限。

图3.3 每个位置处权限的含义

四. 权限的修改

文件的权限,可以由文件的拥有者或者root用户来修改。

  • chmod指令:文件权限的增加或删除
  • 语法:chomd u+rwx,g-rwx,o+rwx(新权限) 文件名
图4.1 chmod修改权限的选项
图4.1 使用chmod指令修改文件权限

文件的权限还可以通过八进制数的方式进行修改,每种角色(权限身份)的三个权限信息位置,1表示具有权限,0表示不具有权限。

  • 如:110 -- 具有读权限的写权限,没有执行权限 --> 2^2 + 2^1 + 0 = 6。  
  • 如664:等价于110 110 100,即:拥有者和所属组具有读写权限没有执行权限,其它人只有读权限。
图4.2 采用八进制的方法更改文件权限

五. 拥有者和所属组的修改

  • chown指令:修改拥有者
  • 语法:chown  新的拥有者  文件名
  • chgrp指令:修改所属组
  • 语法:chgrp  新的所属组  文件名

注意:如果拥有者是普通用户,那么它无法通过chown指令和chgrp指令更改拥有者和所属组。因为新的拥有者和所属组用户并未同意接收。但是,由于root用户不受权限的约束,可以直接通过chown和chgrp更改。

图5.1 在普通用户拥有者和root用户下更改所有者和所属组

六. 起始权限问题和权限掩码umask

如图6.1所示,在Linux下,我们所观察到的创建目录的默认权限是775,创建普通文件的默认权限是775。 

图6.1 文件创建后的属性

但是,从理论上讲,Linux默认给目录文件的权限是777,给普通文件的权限是666,这好像与我们看到的相矛盾。

造成这种现象的原因是因为存在权限掩码umask,凡是在权限掩码中出现的权限,都不会在在最终的权限中出现。一般情况下,Linux的默认权限掩码是0002(000 000 010),即:不允许其他人拥有写的权限。

因此:文件最终权限 = Linux默认起始权限 & (~权限掩码)

Liunx默认目录权限777,普通文件权限666,但是文件掩码不允许其他人写,因此目录文件最终权限变为775,普通文件变为664。

七. 目录文件可读、可写、可执行的含义

  • 读权限:是否允许用户查看指定路径下的文件内容
  • 写权限:是否允许用户对目录下的文件进行增、删、改等操作
  • 执行权限:是否允许用户进入对应目录

注:如果执行权限为0,读权限和写权限为1,那么可以读出目录下文件的文件名,但不能读取文件详细的属性,并且不能执行写文件操作。 

图7.1 目录文件权限

八. 粘滞位

有时候我们需要多个用户共享一个文件,但是用户家目录的权限为770,因此,共享文件不会放在家目录下。一般来说,会由root用户,在Linux根目录'/'下创建一个共享文件夹share,share允许所有普通用户读、写、执行(777权限),共享的文件会被放在share文件夹下。

图8.1 共享文件夹的创建和权限修改

在实际项目中,我们在share文件夹下创建一个文献,一般而言,只希望允许他人读文件或执行文件,最多允许他人写文件,却不希望他人可以删除文件。

但是,Linux下文件是否能被删除,不是由文件本身的属性决定的,而是由文件所在的目录决定的。可我们不能将共享文件的写权限改为0,这样在不允许删除文件的同时也禁止了写文件。

为了解决这一问题,引入了粘滞位t,粘滞位是一种特殊的权限,一般而言只存在于共享文件,它只允许文件的拥有者和root用户删除,禁止所属组和其它人删除文件。

  • 添加粘滞位语法:chmod +t 共享文件
图8.1 为共享目录添加粘滞位权限

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

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

相关文章

ArcGIS之克里金插值教学

本文来自:GIS科研实验室 基本概念 1.什么是克里金插值? 克里金插值又称空间局部插值法,是以半变异函数理论和结构分析为基础,在有限区域内对区域化变量进行无偏最优估计的一种方法,是地统计学的主要内容之一。南非矿产…

【消息中间件】RocketMQ消息重复消费场景及解决办法

文章目录 前言那么在什么情况下会发生RocketMQ的消息重复消费呢?消息重复消费的场景大概可以分为生产者端重复消费和消费者端重复消费,那么如何来解决消息的重复消费呢?既然在生产者做幂等性的方案都不是特别靠谱,那就再在消费者端…

信创办公–基于WPS的EXCEL最佳实践系列 (宏的录制)

信创办公–基于WPS的EXCEL最佳实践系列 (宏的录制) 目录 应用背景操作步骤1、宏的录制启用2、宏的使用3、宏的保存4、宏的禁用 应用背景 宏是一个自动化完成重复性工作的工具,使用宏可以提高我们的工作效率,那应该怎样使用宏这一…

日志与时间戳,客户端与服务器端,打包压缩解压解包介绍,date,cal,zip,unzip,tar指令等

日志与时间戳 计算机世界里面,时间其实很重要的,首先我们需要有日志这个概念,这个日志其实就跟日记一样,那么在日记里面的话就会有时间。时间真的非常关键,比方在出现问题的时候去找到这个问题出现的时间点&#xff0…

EEPROM读写测试实验(主要记录IIC通信协议)

一、简介 EEPROM,电可擦除可编程只读存储器,是一个非易失性的存储器件。RAM: 随机访问存储器,可读也可写,断电不保存数据,常用的RAM有ddr3、SDRAM。ROM仅支持读,不可写,但断电可以保…

4 通道3.2GSPS(或者配置成2 通道6.4GSPS)采样率的12 位AD 采集FMC+子卡模块

板卡概述 FMC_XM134 是一款4 通道3.2GSPS(或者配置成2 通道6.4GSPS)采样率的12 位AD 采集FMC子卡模块,该板卡为FMC标准,符合VITA57.4 规范,可以作为一个理想的IO 模块耦合至FPGA 前端,射频模拟信号数字化后…

外网远程访问公司内网用友畅捷通T财务软件 - 远程办公

文章目录 前言1.本地访问简介2. cpolar内网穿透3. 公网远程访问4. 固定公网地址 前言 用友畅捷通T适用于异地多组织、多机构对企业财务汇总的管理需求;全面支持企业对远程仓库、异地办事处的管理需求;全面满足企业财务业务一体化管理需求。企业一般将其…

老胡的周刊(第090期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 privateGPT[2] 为保证数据私密性&#xff0c…

antd——实现不分页的表格前端排序功能——基础积累

最近在写后台管理系统时,遇到一个需求,就是给表格中的某些字段添加排序功能。注意该表格是不分页的,因此排序可以只通过前端处理。 如下图所示: 在antd官网上是有关于表格排序的功能的。 对某一列数据进行排序,通过…

字符串运算公式:muParser公式库在linux平台使用

muParser是一个跨平台的公式解析库,它可以自定义多参数函数,自定义常量、变量及一元前缀、后缀操作符,二元操作符等,它将公式编译成字节码,所以计算起来非常快。 1 、muParser源码下载 官方网址http://sourceforge.net/projects/muparser/ gitee下载地址:Gitee 极速下…

使用国产chatglm推理自己的数据文件_闻达

最近大火的chatgpt,老板说让我看看能不能用自己的数据,回答专业一些,所以做了一些调研,最近用这个倒是成功推理了自己的数据,模型也开源了,之后有机会也训练一下自己的数据。 使用国产chatglm推理自己的数…

【C++】引用重新赋值?

(点击上方公众号,可快速关注) 前段时间解决了一个关于引用的bug,原因是引用“重新赋值”造成的,原来的代码逻辑关于队列的选择,为了凸显问题,这里使用一个简单的例子重写。示例代码如下&#xf…

第七章 TensorFlow实现卷积神经网络

7.2TensorFlow实现简单的CNN import matplotlib.pyplot as plt import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from tensorflow.python.framework import ops ops.reset_default_graph()# 创建计算图 sess tf.Ses…

SpringBoot及其配置文件

目录 1.SpringBoot简介 2.第一个SpringBoot项目 3.SpringBoot配置文件 3.1 配置文件介绍 3.2 properties配置文件 3.2.1 properties配置文件——写 3.2.2 properties配置文件——读 3.2.3 properties配置文件——缺点 3.3 yml配置文件 3.3.2 yml配置文件——初阶写 …

RocketMQ入门

文章目录 一. 基本概念1. 概述2. 基本概念3. RocketMQ的特性4. 整体架构 二. RocketMQ整体流程1. 流程图2. 流程介绍 一. 基本概念 1. 概述 RocketMQ 是阿里巴巴在 2012 年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于 2017 年 9 月…

【数据结构】--- 几分钟走进栈和队列(详解-下)

文章目录 前言🌟一、队列的概念及结构:🌟二、队列实现的两种方式:🌟三、队列的实现:🌏3.1队列结构:🌏3.2初始化:🌏3.3释放(类似单链表)&#xff1…

八股文!这么背!

作者:阿秀 校招八股文学习网站:https://interviewguide.cn 这是阿秀的第「267」篇原创 小伙伴们大家好,我是阿秀。 不知道什么时候八股文这个说法开始流传出去了,以前是没有这个说法的,我印象中就是近三五年流传开来的…

大模型激战正酣,王坚能否带领阿里云王者归来?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 5月11日,有消息称,十年前卸任阿里云总裁的王坚,将于近日以全新职位,全职加入阿里云。公开资料显示,作为阿里云创始人,王坚在2009年创办阿里云&#xff…

Go 的 IO 流怎么并发

今天聊一个存储的实现细节,数据副本的并发写入。 存储的高可靠性和高可用,必须依赖于数据的冗余机制。比如 3 副本就是把用户数据复制成 3 份。然后把 3 份数据分发到不同的地方。这个写下去的动作是有讲究的,因为肯定不希望时延线性增加&am…

【Win10错误】从0x80190001错误码恢复

目录 一、说明 二、操作过程和错误显示 三、一个可行的修复过程 四、推荐的另一个修复过程 4.1 由控制面板进入 4.2 删除cooki 4.3 进入Tab-高级--->重置 4.4 运行命令重新启动后;执行: 五、网上的其它参考意见 一、说明 出现0x80190001错误码…