当前位置: 首页 > news >正文

Linux之权限

目录

一、shell运行原理

二、权限

1、对人操作

2、对角色和文件操作

修改权限(改属性):

①ugo+-

②二进制数的表示

修改权限(改人):

三、权限的相关问题

1、目录的权限

2、umask

3、粘滞位


一、shell运行原理

shell的运行原理外壳程序!

首先要清楚,我们人并不是直接访问操作系统的,原因如下:

1、人是不善于直接使用操作系统的

2、如果让人直接访问操作系统会有两个问题:

        ①操作成本很高

        ②人也会犯一些错误,从而带来不安全的因素

所以我们日常使用的图形化界面(Windows)或是指令操作(Linux)都是操作系统所提供的外壳程序


那么外壳程序也有它存在的意义:

1、外壳程序是用户和操作系统交互的中间软件层

2、可以在一定程度上起到保护操作系统的作用

所以人是和shell外壳程序打交道,然后外壳程序再与操作系统打交道;处理结束后,操作系统将结果反映给外壳程序,外壳程序再将结果传递给人


总结一下就是外壳程序将使用者的命令翻译给操作系统处理,同时再将操作系统的处理结果翻译给使用者


二、权限

1、对人操作

Linux下有两种用户,root和普通用户

root:只有一个,具有Linux下最高权限(一般不受权限约束)

普通用户:可以有多个,要受权限的约束

所以Linux下是可以存在多个用户的,Linux是一个对用户的操作系统


所以在Linux中切换root和普通用户,也就是在切换当前的权限

切换的命令:su [用户名]

从root用户切换到普通用户user,要使用su user

从普通用户切换到root用户,要使用su root,root可以省略,也可以su -


关于输入密码的问题,root用户切换普通用户不需要密码

普通用户切换到root用户需要root密码

普通用户1切换到普通用户2需要用户2的密码


普通用户切换到root用户后,如果想退回到刚刚的普通用户,可以Ctrl+d也可以输入命令logout


2、对角色和文件操作

权限是针对人的,事物的基本属性决定权限相关的概念

文件权限也就是一件事情是否允许被你做

因此权限的核心就是人+事物属性r/w/x->读/写/执行

下面看Linux中的文件的详细信息

部分含义已经备注在图上了,今天主要学习最前面的这10个字母或字符

这10个字符可以分成两部分理解,第一个和后九个


ls -l后显示的第一列的第一个字符,表明该文件的文件类型Linux中不以文件后缀来区分文件类型,但是不代表不可以使用,虽然在系统层面没有意义,但是可以给自己看),具体文件类型如下:

d:目录

-:普通文件

p:管道文件

b:块设备(磁盘设备)

c:字符设备(键盘或显示器)

l:链接文件  ...... 

其中前两个是最常用的


Linux将用户身份划分为三类:拥有者,所属组,other(这三个可以理解为一种身份)

拥有者:文件属于谁

所属组:文件属于哪个组

other:不属于上面两种任何一个,就是other 

红框表示的就是拥有者,蓝框表示的就是所属组,至于other即不是这两个的都是other

第一列的十个字符的后九个,三三为一组,分别是拥有者,所属组,other

这三个位置,分别是r/w/x(读/写/执行),位置是固定的,有rwx权限就显示rwx,没有的话就显示-

比如我们的Pro这个目录的权限就可以表示为:

拥有者具有读、写和执行权限;所属组具有读和执行权限,没有写权限;other具有读和执行权限,没有写权限


修改权限(改属性):

①ugo+-

现在有一个普通文件,拥有者权限是rw-,所属组权限是r--,other权限是r--

这时我想修改权限,语法是:chmod [u/g/o/a] [+/-] [r/w/x] [文件名] (其中u/g/o/a分别表示user拥有者/group所属组/other/all所有身份)

将拥有者权限改为rwx,所属组改为rwx,other改为r-x,即:

将拥有者权限改为rw-,所属组权限改为rw,other改为r,即:

将所有身份都加上x权限,即:


普通用户缺失某些权限时,对应的功能就不能正常进行了,例如:普通用户没有r权限,那么就不能正常使用cat test.c这种命令了,没有w权限,就不能进行echo "hello" > test.c这种命令,等等

如果输入不符合权限的指令,就会出现这样的提示:

但是root用户不受权限的约束,即使root是other,也可以有rwx权限


②二进制数的表示

因为拥有者、所属组和other的rwx权限位置是固定的,所以只会有两种情况,要么有,要么没有,这时有可以表示为1,没有可以表示为0

当rwx都有时,表示成二进制数就是111,这时111表示的十进制数是7

如果只有rw,表示成二进制就是110,这时110表示的十进制数是6

所以我们也可以使用这种二进制数的方式来改变权限,即:

全部都有rwx属性

拥有者有rwx权限,二进制是111,对应的十进制为7;所属组和other都只有rw权限,二进制是110,对应的十进制是6,即:


修改权限(改人):

chown/chgrp,更改拥有者或所属组需要提升权限

比如说我目前是普通用户,有一个普通文件test.c,test.c目前的拥有者和所属组都是zhangsan,我想改变拥有者/所属组为lisi

语法是:sudo [chown/chgrp] lisi test.c

如果想一次性将拥有者和所属组都改为lisi,输入sudo chown lisi:lisi tejike即可

加上sudo后,表示执行后续的命令,要以root的权限级别来执行,这时输入的密码就是lisi的密码

当然了,如果用户想执行sudo,提升权限,需要该用户在信任列表里面,才能够执行sudo,而添加用户到信任列表里是需要root身份的,所以不会出现普通用户随随便便就可以修改拥有者所属组的行为

而如果我是root用户,则直接[chown/chgrp] lisi test.c 就可以

三、权限的相关问题

1、目录的权限

首先,一个普通文件的拥有者和所属组如果是同一个人,那么我将拥有者的权限全部去掉,虽然所属组也是这个人,并且所属组的权限都有,但是这个人实际上是没有任何权限的,因为权限只被认证一次,被认证为拥有者就不管是不是所属组了

注意:

进入一个目录需要x权限,如:cd ...

查看目录下面的文件列表需要r权限,如:ls -al

要在目录下创建文件或目录需要w权限,如:touch test.c

2、umask

umask叫做权限掩码,凡在umask中出现的权限,都不应该在最终权限中出现

我们目前只研究umask的后三位,即0 2 2

并且目录的起始权限是7 7 7开始的,普通文件的起始权限是6 6 6开始的

目录的起始权限7 7 7说明拥有者、所属组、other的rwx权限都有,即对应位置为1,所以二进制1 1 1转换为十进制就是7

umask为0 2 2,而0 2 2的第一个数是0,由于凡在umask中出现的权限,都不应该在最终权限中出现,而第一个数为0,说明umask不会影响拥有者的rwx权限,所以拥有者的最终权限仍然是rwx

而后面的两位都是2,而2变为二进制是0 1 0,所属组和other所对应的7,变为二进制是1 1 1,由于凡在umask中出现的权限,都不应该在最终权限中出现,所以umask中1所在的位置,也就是w的权限,在umask中出现了,所以所属组和other的最终权限都不应该有,所以所属组和other的最终权限都变为了r-x

所以最终目录test的权限显示为rwxr-xr-x


其实也就是   最终权限=起始权限&(~umask)

即0 2 2变为二进制是0 0 0 0 1 0 0 1 0,而7 7 7变为二进制是 1 1 1 1 1 1 1 1 1

先取反~umask,变为1 1 1 1 0 1 1 0 1,再与1 1 1 1 1 1 1 1 1按位与

变为了1 1 1 1 0 1 1 0 1,也就是rwxr-xr-x


所以有了这个计算方法,我们如果想设置权限,也可改变umask值,例如umask变为0777,设置完后,拥有者所属组other都没有权限了

3、粘滞位

有一种情况是:大家所有用户都在一个共同的目录下,对该目录都有读写执行的权限,同时需要满足两个要求:

①、当多个用户共享一个目录时,需要在该目录下,进行读写,创建、删除文件

②、同时要保证自己只能删除自己的,而不能删除别人的(因为原本other权限是有w的,但是这可以互删,不满足要求)

在同一个目录下,大家各自有各自的文件,如果保证自己能创建自己的文件或删除自己的文件,那么必须要保证该目录other要有w权限,但是这种情况又会导致互相看不见对方的文件,但是却可以互相删除对方的文件要解决这个问题,就需要用到粘滞位

粘滞位语法就是 chmod +t test

这时候可以发现,原本other的x权限变为了t,这个t权限可以理解为x的特殊情况

这时就满足了上面的两个条件

注意:粘滞位只能给目录设置,一般是谁设置谁取消(root)

相关文章:

Linux之权限

目录 一、shell运行原理 二、权限 1、对人操作 2、对角色和文件操作 修改权限(改属性): ①ugo- ②二进制数的表示 修改权限(改人): 三、权限的相关问题 1、目录的权限 2、umask 3、粘滞位 一、s…...

【产线故障】线上接口请求过慢如何排查?

文章目录 前言一、内存使用过高导致CPU满载案例代码分析思路 二、出现了类似死循环导致cpu负载案例代码分析思路 三、死锁案例代码分析思路 前言 首先线上接口变慢,原因可能有很多,有可能是网络,有可能是慢 SQL,有可能是服务本身…...

Increment Selection 插件

Increment Selection 插件实现递增 初次使用 按下快捷键 Alt Shift 鼠标左键向下拖拽 向下拖拽之后,在输入一个数字,比如我这里输入了一个数字1 然后按下快捷键 Ctrl Shift ← 进行选中数字 然后按下快捷键 Ctrl Alt i 建自动递增。 然后鼠标随…...

LeetCode刷题笔记【26】:贪心算法专题-4(柠檬水找零、根据身高重建队列、用最少数量的箭引爆气球)

文章目录 前置知识860.柠檬水找零题目描述解题思路代码 406.根据身高重建队列题目描述解题思路代码 452. 用最少数量的箭引爆气球题目描述踩坑-进行模拟正确思路的贪心 总结 前置知识 参考前文 参考文章: LeetCode刷题笔记【23】:贪心算法专题-1&#x…...

LeetCode:移除元素

题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度…...

Spring中的JdbcTemplate的使用

在最近的一个工作中,为了简单方便我就是用了Spring自带的JdbcTemplate来访问数据库,我以为之前自己很熟练的掌握,后来才发现我太天真了,踩了很多坑。 基本方法 JdbcTemplate自带很多方法可以执行SQL语句,以下我主要列举&#xf…...

机器学习——boosting之GBDT

现在要开始重点关注名字了,名字透漏了很多信息!名字暗藏线索! GBDT,Gradient Boosting Decision Tree: 梯度提升决策树 果然信息很丰富 梯度:意味着计算有迭代递进关系,但还不明确是怎么迭代递进的 提升&…...

如何选择报修管理系统?报修工单管理系统有哪些功能和优势?

报修管理系统是一种能够帮助企业快速反应设备故障和异常情况,并将问题及时通知到相关人员,并对问题进行统计和分析的系统。它能够有效提高企业的工作效率,并减少人员成本的支出。那么,报修工单管理系统有哪些功能和优势呢?下面以“…...

Matlab图像处理-

有些时候,直接利用图像的灰度直方图选择阈值不是非常直观,这时,可以利用图像三个通道的直方图来进行图像分割,操作步骤如上文所示,下图为原始图片。 下图为三通道直方图。 下图将三个通道的直方图会绘制到一个图表上&a…...

数据接口工程对接BI可视化大屏(二)创建BI空间

第2章 创建BI空间 2.1 SugarBI介绍 网站地址:https://cloud.baidu.com/product/sugar.html SugarBI是百度推出的自助BI报表分析和制作可视化数据大屏的强大工具。 基于百度Echarts提供丰富的图表组件,开箱即用、零代码操作、无需SQL,5分钟即可完成数…...

Struts.xml 配置文件说明

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--…...

阿里巴巴API接口解析,实现获得商品详情

要解析阿里巴巴API接口并实现获取商品详情&#xff0c;你需要按照以下步骤进行操作&#xff1a; 了解阿里巴巴开放平台&#xff1a;访问阿里巴巴开放平台&#xff0c;并了解相关的API文档、开发者指南和规定。注册开发者账号&#xff1a;在阿里巴巴开放平台上注册一个开发者账…...

9.(Python数模)(分类模型一)K-means聚类

Python实现K-means聚类 K-means原理 K-means均值聚类算法作为最经典也是最基础的无标签分类学习算法。其实质就是根据两个数据点的距离去判断他们是否属于一类&#xff0c;对于一群点&#xff0c;就是类似用几个圆去框定这些点&#xff08;簇&#xff09;&#xff0c;然后圆心…...

MinIO集群模式信息泄露漏洞(CVE-2023-28432)

前言&#xff1a;MinIO是一个用Golang开发的基于Apache License v2.0开源协议的对象存储服务。虽然轻量&#xff0c;却拥有着不错的性能。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据。该漏洞会在前台泄露用户的账户和密码。 0x00 环境配置 …...

【从零单排Golang】第十五话:用sync.Once实现懒加载的用法和坑点

在使用Golang做后端开发的工程中&#xff0c;我们通常需要声明一些一些配置类或服务单例等在业务逻辑层面较为底层的实例。为了节省内存或是冷启动开销&#xff0c;我们通常采用lazy-load懒加载的方式去初始化这些实例。初始化单例这个行为是一个非常经典的并发处理的案例&…...

常见注意力机制

注意力机制 &#xff08;具有自适应性&#xff09; 18年提出的一种新的 卷积注意力模块 &#xff1b;对前馈卷积神经网络 是一个 简单而有效的 注意力模块 &#xff1b; 因为它的 轻量级和通用性 &#xff0c;可以 无缝集成到任何CNN网络 当中&#xff0c; 对我们来讲&…...

解决报错之org.aspectj.lang不存在

一、IDEA在使用时&#xff0c;可能会遇到maven依赖包明明存在&#xff0c;但是build或者启动时&#xff0c;报找不存在。 解决办法&#xff1a;第一时间检查Setting->Maven-Runner红圈中的√有没有选上。 二、有时候&#xff0c;明明依赖包存在&#xff0c;但是Maven页签中…...

java之SpringBoot基础篇、前后端项目、MyBatisPlus、MySQL、vue、elementUi

文章目录 前言JC-1.快速上手SpringBootJC-1-1.SpringBoot入门程序制作&#xff08;一&#xff09;JC-1-2.SpringBoot入门程序制作&#xff08;二&#xff09;JC-1-3.SpringBoot入门程序制作&#xff08;三&#xff09;JC-1-4.SpringBoot入门程序制作&#xff08;四&#xff09;…...

golang中如何判断字符串是否包含另一字符串

golang中如何判断字符串是否包含另一字符串 在Go语言中&#xff0c;可以使用strings.Contains()函数来判断一个字符串是否包含另一个字符串。该函数接受两个参数&#xff1a;要搜索的字符串和要查找的子字符串&#xff0c;如果子字符串存在于要搜索的字符串中&#xff0c;则返…...

ONNX OpenVino TensorRT MediaPipe NCNN Diffusers ComfyUI

框架 和Java生成的中间文件可以在JVM上运行一样&#xff0c;AI技术在具体落地应用方面&#xff0c;和其他软件技术一样&#xff0c;也需要具体的部署和实施的。既然要做部署&#xff0c;那就会有不同平台设备上的各种不同的部署方法和相关的部署架构工具 onnx 在训练模型时可以…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品&#xff08;包括KL357NU、KL3H7U和KL817U&#xff09;&#xff0c;专为高温环境下的汽车应用设计&#xff0c;具备以下核心优势和技术特点&#xff1a; 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计&#xff0c;确保在…...