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

【Linux笔记】Linux基础权限

【Linux笔记】Linux基础权限

  • 一、Linux权限的概念
    • 1.1、Linux中一切皆文件
    • 1.2、文件访问者的分类
    • 1.3、、Linux中的“用户白名单”
  • 二、文件访问权限的修改
    • 2.1、权限的增加和减少的基础方法
    • 2.2、以八进制数修改权限
  • 三、用户身份的修改
    • 3.1、修改文件的拥有者
    • 3.2、修改文件的所属组
    • 3.3、文件的默认权限与权限掩码

一、Linux权限的概念

就像我们现实生活中的各种单位一样,不同的管理层有着不同的权限,管理的层级越高权限就越大。
就好比一个公司的老板自然就拥有最高权限,可以任意开除或录用某个人。在我们的Linux系统中也是有这样的层级分类的。
在Linux中的用户主要分为两类:超级管理员用户(root)和普通用户,但普通用户也可以细分为在“白名单”内的用户和不在“白名单”之内的用户。
超级管理员用户也就是root用户几乎不受任何权限用户,他可以执行任何指令,也可以不受任何权限限制的查看修改和删除任意文件即用户。

总结来说,Linux中的权限主要是针对各种用户的。

Linux中的权限分为三类:

r --可读权限
w --写(修改)权限
x --可执行权限

1.1、Linux中一切皆文件

想要很好的理解Linux中的权限管理,就要先来理解一个概念——Linux中一切皆文件
简单来说就是Linux中统一以文件的方式来管理各和访问种指令和设备。
反过来理解,就是任何东西只要在Linux操作系统中,不管它是不是文件,Linux都以文件的方式对它们进行管理和访问。
例如我们可以使用which指令和whereis指令来搜索各种指令:
在这里插入图片描述
我们最终会看显示了一堆目录和路径,也就是说Linux中是以文件的形式来存储这些指令的。

1.2、文件访问者的分类

Linux中的文件访问者分为三类:

文件的所有者:u(user)
文件的所有组用户:g(group)
其他人:o(other)

而Linux的文件权限主要就是针对这三中用户的。我们可以随便在一个目录下执行ll指令,就会发现每个文件的开头都跟着一长串的字符:
在这里插入图片描述
其中第一个字符表示的是文件类型,如果是d的话就是目录文件,如果是-的话就表示普通文件:
在这里插入图片描述
后面的这九个字符其实是要分成三组,每一组分别对应着上面的某个访问者所拥有的权限,其所对应的访问者如下:
在这里插入图片描述
如上图举例:该文件的拥有者对该文件有读写和执行权限,所属组有读和执行权限,其他人有读和执行的权限(‘-’ 就表示该用户没有对应的权限)。

1.3、、Linux中的“用户白名单”

Linux中有上千条指令,有些指令是什么用户都能执行的,但有些指令就只有root用户才能执行。
就例如安装软件或各种指令的指令:yum就只有root用户能执行。
那么普通用户就绝对不能执行yum只领了吗?
其实是可以的,我们可以使用sudo指令来对普通用户进行“提权”,这样就算是普通用户也能执行权限更大的指令了:
在这里插入图片描述
但是我们还会发现一个问题,就是当我们输完当前用户的密码之后会发现指令并没有被执行,而是给出了下面这条提示:
在这里插入图片描述
系统提示我们,当前用户并不在一个名为“sudoers”的文件中。

那这是怎么回事呢?

其实,虽然我们可以通过sudo来对我们的用户进行提权,但并不是所有的用户都可以被提权的。
想想如果每个普通用户都可以通过sudo来执行权限更高的指令,然后只需要输入自己的密码就能执行指令了,那Linux的权限设计岂不是有大bug?
所以普通用户想要提权成功就必须要经过root用户的同意,而同意的方式就是在sudoers文件中加入该普通用户的名字。
怎么操作呢,我们可以先打开这个文件,注意这个文件必须是root用户打开才是正确的。
该文件在root用户下的路径是 /etc/sudoers:
在这里插入图片描述

当我们打开这个文件之后,找到大于101行左右:
在这里插入图片描述

我们只需要像上图所示,将我们想要被提权的用户的名称加上去即可,然后在保存退出。
然后我们新加的这个用户就可以提权成功了:
在这里插入图片描述
这里我的系统,虽然已经安装了这条指令,但可以证明的是提权成功了。

二、文件访问权限的修改

2.1、权限的增加和减少的基础方法

如果我们想对某个文件的权限进行修改,我们可以使用chmod指令
chomd指令的具体用法是:

chomd u/g/o+r/w/x 文件名
chomd u/g/o-r/w/x 文件名

意思就是针对某种用户对某文件的权限加上或是减去某个权限。
例如我们想去掉“其他人(o)”对某一文件的“读”权限,我们就可以这样做:
在这里插入图片描述
而如果我们又向把读权限加回来就可以这样做:
在这里插入图片描述
而如果在chomd后面没有指明何种用户的话,那就是默认对所有类型用户都修改权限:
在这里插入图片描述

2.2、以八进制数修改权限

除了上面的基础修改方法,其实我们还有一种更“便捷”的修改权限的方式,那就是使用三位八进制数来对文件的权限统一修改。
举一个例子:
在这里插入图片描述
我们会发现当执行完“chmod 777 test.t”指令后所有用户对应的权限都被更改了。

其实想要理解这3个数组并不难,我们只需要将对应有权限的位置用1来表示没有权限的位置用0来表示,例如目前ExerciseDir的权限是:

rwx rwx r-x

我们用数字对应就变成了:

111 111 101

我们可以把每种用户对应的权限看做是一个三位的二进制数,然后再转化成八进制就变成了:

775

我们将test.t的权限也设置成775,就可以看到这两个文件的权限变得一样了:
在这里插入图片描述

但是这种方法看起来是比较简便的,但是如果不常进行二进制转8进制的话可能还是需要一段计算时间的。
所以如果是想要快速修改所有用户的权限的话可以考虑使用这种方法,但如果只是想修改单种用户的单个权限的话,我感觉还是使用基础方法会比较直观一点。

三、用户身份的修改

3.1、修改文件的拥有者

如果我们想要修改某个文件的拥有者,我们可以使用chown指令,该指令的使用方法如下:

chown 新拥有者 文件名

但是需要注意的是,修改文件的拥有者是需要root的权限的,所以我们得加上sudo指令。

例如我们可以对test.t修改以下拥有者:
在这里插入图片描述
我们就会发现test.t的拥有者由原来的Mr_Lin1变成了Mr_Lin2了。
上面的第一个用户名表示的是拥有者,第二个用户名表示的是所属组的组长,而除了所属组和拥有者以外的用户就都属于其他人,所以其他人也就没必要在显示出来。

3.2、修改文件的所属组

而修改文件的所属组我们可以使用chgrp指令,该指令的用法如下:

chgrp 新所属组 文件名

同样这条指令也是需要root权限的:
在这里插入图片描述

3.3、文件的默认权限与权限掩码

其实我们在新建一个普通文件或者目录的时候是有对应的默认权限的,普通文件的默认权限是666,目录的默认权限是777
但当我们真的创建一个文件和目录并查看其权限的时候却发现并不是这样:
在这里插入图片描述
我们会发现对应的权限分明是664和775。

新建一个文件的权限其实是默认权限减去该用户的权限掩码,也就是将权限掩码中有的权限减去。对于每个类型用户对应的三位二进制数来说其实计算的方法很简单,就是将权限掩码按位取反后再与默认权限按位与即可。

我们可以使用umask指令来查看权限掩码:
在这里插入图片描述
将权限掩码002转化成二进制为:000 000 010,按位取反后为:111 111 101,所以和普通文件的默认权限110 110 110 和目录文件的默认权限111 111 111 按位与后就得到了110 110 100和111 111 101,也就是664和775。

我们也可以使用**umask + “三位八进制数”**指令来修改权限掩码:
在这里插入图片描述

相关文章:

【Linux笔记】Linux基础权限

【Linux笔记】Linux基础权限 一、Linux权限的概念1.1、Linux中一切皆文件1.2、文件访问者的分类1.3、、Linux中的“用户白名单” 二、文件访问权限的修改2.1、权限的增加和减少的基础方法2.2、以八进制数修改权限 三、用户身份的修改3.1、修改文件的拥有者3.2、修改文件的所属组…...

汽车屏类产品(三):抬头显示Head-Up Display(HUD)

前言 你的下一台车,一定要考虑加装一个HUD。 汽车抬头显示器或汽车抬头显示器(也称为汽车HUD)是任何透明的显示器,它可以在汽车中显示数据,而不需要用户将视线从平时的视角移开。这个名字的由来源于飞行员能够在头部“向上”并向前看的情况下查看信息,而不是向下倾斜查…...

vue2技能树(1)

目录 Vue.js 是什么响应式数据绑定组件化开发简单的模板语法生态系统逐渐增强社区支持 安装、导入和使用 Vue.js步骤 1: 安装 Node.js步骤 2: 创建新项目或添加到现有项目创建新项目添加到现有项目 步骤 3: 导入 Vue.js步骤 4: 创建 Vue 实例步骤 5: 创建 HTML 模板步骤 6: 启动…...

Kotlin中的选择结构语句

在Kotlin中,选择结构语句有多种形式,包括条件分支、三元表达式、if-else if-else语句、when语句等。下面将逐个说明每种形式的使用。 条件分支: var max: Int 0 var a: Int 5 var b: Int 6if (a > b) {max a } else {max b }printl…...

【AIFEM案例操作】压力容器强度分析

AIFEM是由天洑自主研发的一款通用的智能结构仿真软件,助力用户解决固体结构相关的静力学、动力学、振动、热力学等实际工程问题,软件提供高效的前后处理工具和高精度的有限元求解器,帮助用户快速、深入地评估结构的力学性能,加速产…...

Hadoop3教程(十八):MapReduce之MapJoin案例分析

文章目录 (118)MapJoin案例需求分析ReduceJoin的问题如何解决ReduceJoin的问题如何将一个文件主动缓存到集群的内存里 (119)MapJoin案例代码实现参考文献 (118)MapJoin案例需求分析 ReduceJoin的问题 在R…...

SOAR安全事件编排自动化响应-安全运营实战

SOAR是最近几年安全市场上最火热的词汇之一。各个安全产商都先后推出了相应的产品,但大部分都用得不是很理想。SOAR不同与传统的安全设备,买来后实施部署就完事,SOAR是一个安全运营系统,是实现安全运营过程中人、工具、流程的有效…...

连锁药店的自有品牌之争:老百姓大药房能否突围?

文丨新熔财经 作者丨楷楷 近年来,随着医保谈判药品的“双通道”(即消费者可在有资质的药店买到新进医保的创新药),以及“门诊统筹”将药店纳入医保报销等医改政策出台,药企开始重新重视起零售药店渠道,很…...

智能台灯语音控制丨解放双手

台灯是日常生活中一种常见的照明产品。以往的台灯大多都是采取手动控制,通过按键去对台灯的亮度进行调整。随着科技的发展,台灯也开始走向了智能化。人们已经能够对智能台灯进行语音控制,通过调节灯光开关、色温、灯光亮度等操作,…...

网络库OKHTTP(2)面试题

序、慢慢来才是最快的方法。 背景 OkHttp 是一套处理 HTTP 网络请求的依赖库,由 Square 公司设计研发并开源,目前可以在 Java 和 Kotlin 中使用。对于 Android App 来说,OkHttp 现在几乎已经占据了所有的网络请求操作。 OKHttp源码官网 问1…...

探索Java NIO:究竟在哪些领域能大显身手?揭秘原理、应用场景与官方示例代码

一、NIO简介 Java NIO(New IO)是Java SE 1.4引入的一个新的IO API,它提供了比传统IO更高效、更灵活的IO操作。与传统IO相比,Java NIO的优势在于它支持非阻塞IO和选择器(Selector)等特性,能够更…...

论文阅读 Memory Enhanced Global-Local Aggregation for Video Object Detection

Memory Enhanced Global-Local Aggregation for Video Object Detection Abstract 人类如何识别视频中的物体?由于单一帧的质量低下,仅仅利用一帧图像内的信息可能很难让人们在这一帧中识别被遮挡的物体。我们认为人们识别视频中的物体有两个重要线索&…...

Java 常用类(包装类)

目录 八大Wrapper类包装类的分类 装箱和拆箱包装类和基本数据类型之间的转换常见面试题 包装类方法包装类型和String类型的相互转换包装类常用方法(以Integer类和Character类为例)Integer类和Character类的常用方法 Integer创建机制(面试题&a…...

ES|QL:Elasticsearch的 新一代查询语言

作者:李捷 “学会选择很难。学会正确选择更难。而在一个充满无限可能的世界里学会正确选择则更难,也许是太难了。” 巴里-施瓦茨(Barry Schwartz)在《选择的悖论--多就是少》(The Paradox of Choice -More is Less&…...

C语言实现句子中的单词颠倒排序

一、运行结果 二、源代码 # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <assert.h>//实现逆转函数&#xff1b; void reverse(char* left, char* right) {//断言left和right都不能为空&#xff1b;assert(left);assert(right);//循环逆转字母…...

MySQL学习(八)——锁

文章目录 1. 锁概述2. 全局锁2.1 全局锁的必要性2.2 语法2.3 全局锁的特点 3. 表级锁3.1 表锁3.2 元数据锁3.3 意向锁3.4 自增锁 4. 行级锁4.1 介绍4.2 记录锁4.3 间隙锁4.4 临键锁 1. 锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传…...

让iPhone用电脑的网络上网

让iPhone用电脑的网络上网&#xff0c;可以按照以下步骤操作&#xff1a; 在iPhone上找到并点击“设置”选项&#xff0c;进入“蜂窝移动网络”。打开“个人热点”选项。此时下方的弹出对话框会显示“仅USB”。用数据线将你的iPhone与电脑相连&#xff0c;并在电脑上打开“控制…...

ThreeJS-3D教学十-有宽度的line

webgl中线是没有宽度的&#xff0c;现实的应用中一般做法都是将线拓宽成面来绘制。默认threejs的线宽是无法调节的&#xff0c;需要用有厚度的线 THREE.Line2。 先看效果图&#xff1a; 看下代码&#xff1a; <!DOCTYPE html> <html lang"en"> <he…...

安装Elasticsearch步骤(包含遇到的问题及解决方案)

注&#xff1a;笔者是在centos云服务器环境下安装的Elasticsearch 目录 1.安装前准备 2.下载Elasticsearch 3.启动Elasticsearch 非常容易出问题 第一次运行时&#xff0c;可能出现如下错误&#xff1a; 一、内存不足原因启动失败 二、使用root用户启动问题 三、启动ES自…...

网络编程面试笔试真题

网络编程笔试面试真题 1、关于Linux系统中多线程的信号处理&#xff0c;说法中不正确的是&#xff1f; A&#xff1a;在线程环境霞&#xff0c;产生的信号是传递给整个进程的 B&#xff1a;一般情况下&#xff0c;信号会随机给进程的一个线程 C&#xff1a;对某个信号处理函数…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

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

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

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...