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

Linux 权限的理解

内容摘要

本文内容包括shell的运行原理,包括外壳程序的原理、理解、和意义,以及从两个方面对于权限的理解(人和事物的属性)、修改文件的权限,包括修改文件的拥有者、修改文件拥有者所在的组的用户以及修改文件的三类用户的访问文件的权限、最终权限与起始权限和umask的关系、以及粘滞位的作用和使用。

shell的运行原理

shell的运行原理:外壳程序

首先思考:我们作为操作者(用户)使用操作系统的过程,是在直接使用操作系统吗??

外壳程序的理解

不管是我们操作widows还是Linux,其实我们都不是在直接使用操作系统,在使用window时我们通过图形化界面进行访问操作系统,在Linux我们通过命令行进行访问,这里的图形化界面、命令行就是外壳程序。

外壳程序的意义

为什么我们要通过外壳程序进行访问操作系统,而不是直接访问操作系统呢??

Linux操作系统的内核是十分复杂的,我们直接进行访问操作系统的成本比较高

我们是人,是人就会犯错误,通过外壳程序可以帮我们规避错误,增加容错率,极大的减少了系统崩溃的概率

外壳程序的原理

将使用者的命令翻译给核心(kernel),然后将核心处理结果翻译给用户

权限的理解

权限的概念

通俗的来说就是是否被允许去做一些特定的事情的资格

权限的两个方面 人和文件的属性

对于人

第一方面:

分为普通用户和root用户,root用户也成为超级用户,相当于人身上的身份

对于普通用户:通常会受一些权限的约束,不同的用户可能会受不同的权限约束

对于root用户而言:几乎不会受权限的控制

举个栗子

比如一个人是字节的员工,那么他可以随意进出字节公司,但是他是进不去腾讯的大门的,他能够进入字节,是因为他是字节员工的身份,这个身份给予了他允许进入字节的资格,也就是说字节给了他权限,但是腾讯没有 。

第二方面:

通过文件访问者进行分类

通过文件访问者可以分为三类:文件和文件拥有者文件和文件目录拥有者所在组的用户其他用户三类

通过ls -l指令进行查看目录的详细信息

这里的的三个目录都是通过用户的身份进行创建的,所以目录的拥有者和目录拥有者所在的组的用户都是root。
这里解释一下拥有者所在组的用户的概念,如上图所示,创建文件或者创建文件目录的用户既然既是文件和目录的拥有者,也是文件和目录拥有者所在的组的成员,那么文件和目录拥有者所在的组的用户有什么作用呢??其实文件和目录拥有者所在的组还是十分重要的,假设我们以后步入企业,对于同一个项目,公司分配两个及以上的组进行研发,这两个组是竞争关系,如果没有文件目录拥有者所在的组,那么除了创建文件的用户,这个组的其他用户都成了其他用户,和另一个项目组的成员权限一样了,所以Linux引入了文件和文件目录拥有者所创建的组的概念,可以单独分配权限给这个组,完美解决了这种问题。

对于事物属性

文件类型和访问权限

文件类型

  • d:目录
  • -:普通文件
  • l:软连接(相当于window下的快捷方式)
  • b:块设备(硬件部分)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

对于Linux来说文件类型只有通过以上类型来定义,和文件的后缀名无关,既然无关我们为什么在创建文件时还要定义后缀,这里的后缀有什么作用呢??对于Linux系统来说,没有任何作用,这里的后缀只是用来给用户看的。

我们通过gcc g++进行编译文件生成可执行程序要求我们需要特定的文件后缀,并不能说明任何问题,gcc g++相当于Linux下的程序。

权限

对于权限那一列,每三个字母为一组,分别是文件所有者的权限、文件拥有者所在组的用户的权限、其他用户的权限,字母 'r' 代表有读的权限、 字母 'w' 代表有写的权限字母 'x'代表可执行权限,如果没有相对应的权限则在相对应的位置用 '-' 表示。每类用户的三个位置的字母不能够随意改变。

如上图所示,code目录的权限就是,对于文件拥有者来说,拥有可读可写可执行的权限;对于文件拥有者所在的组的用户来说,拥有可读可执行的权限,没有可写的权限;读于其他用户来说,也是拥有可读可执行的权限,没有可写的权限

目录权限的总结(易混淆)

  • 进入目录:需要拥有可执行权限
  • 查看目录下的文件列表:也就是ls指令,需要读权限
  • 在目录下进行创建、删除目录或者文件:需要拥有写权限

修改权限

修改文件的拥有者

格式:chown + 将要修改成的成员名 + 被修改的文件名

修改文件的拥有者所在组的用户

格式:chown + 将要修改成的成员名 + 被修改的文件名

注意:这里进行修改文件的拥有者和拥有者所在组的对象,对于root用户而言是可以完成的,但是对于普通用户来说是需要进行权限提升的。

修改问文件被访问权限

  • 用户加标识符法

修改文件拥有者访问文件时的权限

chmod u 运算符 权限字母 文件

修改文件拥有者所在组的用户访问文件时的权限

chmod p 运算符 权限字母 文件

修改其他人访问文件时的权限

chmod o 运算符 权限字母 文件

  • 八进制法

通过二进制的八进制法进行修改文件权限,每类用户的权限都是由三个字符进行表示分别为r(-)、w(-)、x(-),当有相对应的权限时在相对应的位置记作1,否则记作0。例如上图中10.24code这个目录的用户权限分别用二进制进行表示时为101 111 101 ,用八进制进行表示为575。

我们可以用这种形式进行更改文件用户的权限

通过chmod将文件中各个用户的读、写、可执行权限全部打开。

最终权限与起始权限和umask的关系

新建目录的默认起始权限为0777 

新建文件的默认起始权限为0666

通过创建一个目录和文件进行观察

通过创建文件我们可以看到,在没有任何修改的条件下,刚刚创建的目录的权限为775,文件权限为664,这和我们的结论有所不同,这是为何呢??这和umask值有关

那么最终权限和起始权限与umask的关系

凡是在umask中出现的权限都不应该在最终权限中出现

最终权限不是我们看到的通过减法进行实现的,而是起始权限和umask按位取反然后按位与得到的。

粘滞位

粘滞位的作用

当用户在同一个目录下,进行创建文件,通过粘滞位避免文件拥有者的创建的文件被除自己以外的用户删掉。

举个栗子:

通过超级用户root创建一个目录文件,并将文件目录对于各个用户的读写执行权限全部打开,方便后续各个用户进行,创建并储存文件

切换至一个普通用户,然后创建一个普通文件,并将文件对于其他用户的读写可执行权限全部不给予

切换至另一个用户,想要查看ys用户的文件,因为ys将文件对于其他用户的读写执行的权限全部不给予,wyt用户所以说不具备查看ystest.c文件的权限,因为查看不了,wyt用户直接执行将ystest.c这个文件进行删除,竟然删除成功了

这里解释一下为什么删除成功,文件是否能够被删除是由文件所在的目录的权限进行决定的,这里就会产生这样的疑惑,直接把目录文件对于其他用户的写权限直接进行不给予不就直接妥了吗?但是真的就是这样吗?将其他用户的写权限进行关闭,那么文件的拥有者也不在拥有写文件的权限。所以就需要粘滞位进行解决这个问题

粘滞位使用

格式:chmod +t  目录名

注意事项:

  • 只能给目录进行使用粘滞位
  • 粘滞位是谁设置的,只能谁取下

其他用户再进行删除时,就会删除失败。

相关文章:

Linux 权限的理解

内容摘要 本文内容包括shell的运行原理,包括外壳程序的原理、理解、和意义,以及从两个方面对于权限的理解(人和事物的属性)、修改文件的权限,包括修改文件的拥有者、修改文件拥有者所在的组的用户以及修改文件的三类用…...

『完整代码』按钮开关UI界面

创建按钮Button 作为开关坐骑UI界面的按钮 创建Image 作为坐骑UI界面 在父类脚本添加其中函数即可 绑定脚本在父类窗口对象 在按钮上响应事件 隐藏UI界面 运行项目 - 实现点击按钮开关UI界面 再次点击按钮 - 关闭UI界面 end...

梦结束的地方 -- 爬楼梯

梦结束的地方 — 爬楼梯 力扣70 : 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例如下: 何解? 最后要爬上楼顶,无非两种上法,最后一…...

身份证识别JAVA+OPENCV+OCR

一、相关的地址 https://github.com/tesseract-ocr/tessdata Releases - OpenCV opencv要装好,我装的是4.5.3的,最新版的没试过。 tessdata就下载了需要用的。好像还有best和fast的版本,我试了一下报错,不知道是不是版本不支持…...

独立开发者如何利用AI实现高收入

引言 在探索独立开发领域时,AI技术的出现为开发者打开了新世界的大门。本文将分享如何利用AI技术提高开发效率,实现更高的收入。 AI在编程中的应用 AI技术的快速发展为独立开发者带来了前所未有的机遇。通过使用AI,我们可以: …...

Go第三方框架--gorm框架(一)

前言 orm模型简介 orm模型全称是Object-Relational Mapping,即对象关系映射。其实就是在原生sql基础之上进行更高程度的封装。方便程序员采用面向对象的方式来操作数据库,将表映射成对象。 这种映射带来几个好处: 代码简洁:不用…...

ONLYOFFICE文档8.2:开启无缝PDF协作

ONLYOFFICE 开源办公套件的最新版本新增约30个新功能,并修复了超过500处故障。 什么是 ONLYOFFICE 文档 ONLYOFFICE 文档是一套功能强大的文档编辑器,支持编辑处理文档、表格、幻灯片、可填写的表单和PDF。可多人在线协作,支持插件和 AI 集…...

内网python smtplib用ssh隧道通过跳板机发邮件

Python 自带 smtplib 包可以发邮件,示例见 [1,2],在邮箱设置启用 IMAP/POP3 就能用。有些邮箱需要设置授权码,如新浪、163 邮箱,然后以授权码作为 smtplib 登录服务器的密码。邮箱端配置参考 [3,4]。 现在情况是: 邮…...

基于C#开发游戏辅助工具的Windows底层相关方法详解

开发游戏辅助工具通常需要深入了解Windows操作系统的底层机制,以及如何与游戏进程进行有效交互。本文将基于C#语言,从Windows底层方法的角度来详细讲解开发游戏辅助工具的相关技术和概念。 一、游戏辅助工具的基本概述 游戏辅助工具,通常被称…...

SSRF+Redis进行内网渗透

SSRFRedis进行内网渗透 一 环境搭建 准备一台服务器,开启了lampp以及redis,redis只允许内网访问 把上面这个注释放开后,redis就只能内网访问 启动redis 使用kali进行端口扫描,扫不到6379端口 kali连接不上redis ssrf漏洞代码 &…...

栈与队列-Java【力扣】【算法学习day.7】

前言 我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&#…...

最新版本!IntelliJ IDEA 2024.2.4 (Ultimate Edition) 的新特性

IntelliJ IDEA 2024.2版本(Ultimate Edition)的关键新特性包括: 改进的Spring Data JPA支持: 允许在IDE中直接运行Spring Data JPA方法,进行即时仓库查询验证。 无需运行应用程序或分析日志文件,即可查看…...

从头学PHP之运算符

关于运算符的图片均来自网络,主要是自己写太麻烦了,程序是个简化自己工作量的方式,能复制粘贴就不要手写了(建议初期还是多写写,加深下记忆)在这里我就偷个懒,图片涉及到侵权及时,请…...

使用 Git LFS(大文件存储)

Git LFS(Large File Storage)是一种扩展 Git 的工具,旨在更有效地管理大文件的版本控制。它通过将大文件的内容存储在 Git 之外来解决 Git 在处理大文件时的性能问题。 主要特点 替代存储:Git LFS 不直接将大文件存储在 Git 仓库…...

js 将一维数组转换成树形结构的方法

一维数组的数据结构,如下 const flatArray [ { id: 1, parent_id: null, name: ‘root1’ }, { id: 2, parent_id: null, name: ‘root2’ }, { id: 3, parent_id: 1, name: ‘child1’ }, { id: 4, parent_id: 2, name: ‘child2’ }, { id: 5, parent_id: 3, nam…...

HarmonyOS NEXT开发实战:实现高效下拉刷新与上拉加载组件(二)刷新核心逻辑与空页面集成

前言: 在上一篇文章中,我们深入探讨了如何在HarmonyOS中实现一个功能完备的空页面组件。现在,我们将进入下拉刷新和上拉加载功能的核心逻辑实现。这不仅仅是技术实现,更是对用户体验的深刻理解。本文将详细介绍如何将空页面与下拉刷新、上拉加载逻辑相结合,打造一个既高效…...

Crawler4j在多线程网页抓取中的应用

网页爬虫作为获取网络数据的重要工具,其效率和性能直接影响到数据获取的速度和质量。Crawler4j作为一个强大的Java库,专门用于网页爬取,提供了丰富的功能来帮助开发者高效地抓取网页内容。本文将探讨如何利用Crawler4j进行多线程网页抓取&…...

【无标题】Django转化为exe,app

目录 1. 将 Django 项目转换为 .exe 文件(Windows)2. 将 Django 项目转换为 .app 应用程序(macOS)3. 发布到微信公众号将一个 Django 项目转换为 .exe 文件或 .app 应用程序,并发布到微信公众号,实际上涉及多个步骤和技术。下面我将分别介绍这些过程。 1. 将 Django 项目…...

HTML5_标签_各类表格的实现

目录 1. 表格标签 1.1 表格的主要作用 1.2 表格的基本语法 1.3 表头单元格标签 1.4 表格属性 案例分析 先制作表格的结构. 后书写表格属性. 代码示例: 1.5 表格结构标签 1.6 合并单元格 合并单元格方式: 目标单元格:(写合并代码) 合并单元…...

C语言数据结构之单向链表(SingleList)

C语言数据结构之单向链表(SingleList) 自定义结构体数据类型SListNode表示单向链表的节点,成员包括一个无类型的data用来存贮数据和一个SListNode本身类型的指针next,指向下一个节点。围绕SListNode写一系列函数以slist_开头实现…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...