【Linux 学习计划】-- 权限

目录

权限是什么

权限的本质

权限(用户)的修改

权限的匹配机制

目录的权限

初始权限(文件和目录)

粘滞位

结语


权限是什么

在现实世界中就有权限的概念,也就是,一部分人能做但是其他没有相关身份的人做不了

举个例子,爱某艺的会员,当你充了会员之后,那么有很多需要会员才能看的剧你就能看了,但是这并不对非会员开放

这就是权限

那么放在Linux中就是,一个文件(或者目录),你有相关的权限,你在能对这个文件执行相关的操作

权限的本质

权限的本质就是:角色 + 事物本身的属性

角色的概念

在Linux里,我们有角色这个概念,我们可以用su指令(或者su -)进行切换角色

比如我直接su,然后默认切换成root,而我们root也叫做超级用户,root可以在Linux里面为所欲为,一句话,权限只是用来限制普通人的,但是root显然不是普通人

最后还可以不切换身份,直接sudo提权

身份的概念

而我们在权限章节里面,有一个身份·的概念:

拥有者,所属组,other

我们来说一下拥有者,其实就是这个文件是谁的

所属组也是一种身份,而不是拥有者也不是所属组的就是other

(可能会有人疑惑为什么要有所属组,试想一下,如果我们这时候要将一个文件分享给另一个人的话,如果没有所属组,那么我们就只能将other的权限全部打开,这就意味着如果这时候你的竞争对手很坏的话,那你就完蛋了,而现在我们可以将另一个人变成所属组,那么other能不能看得到全部取决于你了)

事物本身的属性

最后来讲一讲这个,其实很好理解,你可以在leedcode上面看电影吗?显然不行,因为leedcode使用来刷题用的

所以事物有没有特权,取决于他的身份,他有了符合条件的身份之后才能做特殊的事情,其次就是,这个事物本身是可以支持做这些特殊的事情的

(你在爱某艺上面充再多你也不能在上面刷算法,因为爱某艺本来就不是用来刷算法的)

权限(用户)的修改

在修改之前,我们需要知道权限在文件中是长什么样的:

首先我们看到蓝色的框框,这个就是文件(或目录,下文会重点讲)权限,而红色框框分为左右两个,其实就是拥有者和所属组(other并不需要标识,因为不是拥有者也不是所属组的就是other)

而我们的文件权限一共可以分为三个部分:

如上图,分为三个部分,分别对应拥有者、所属组、other的权限

每一个身份对应的权限分为三个:rwx

rwx 三个分别代表读权限、写权限、可执行权限

读写权限很容易理解,就是你能不能读这个文件和能不能对这个权限进行写入、修改内容操作

至于可执行,则是比如 .cpp 文件,需要通过g++操作变成对应可执行文件之后才能执行对应内容,或者是,Linux下一切皆文件,我们的指令就是可执行文件,我们所有的指令都是可执行的

而想要执行一个文件,需要有可执行权限的同时,还需要这个文件本身可执行

权限的修改相关操作指令

首先,因为权限分为三种身份,所以我们修改的时候也需要指明对应的角色来修改(当然不全是,下文会讲到二进制的方式修改权限,这种就不需要指明身份了)

身份分为:u(user拥有者)、g(所属组)、o(other)、a(all,代表一次性对上面三种身份同时进行操作)

而我们对应修改的指令则是 chmod

举个例子:

chmod u-x,o-x big.txt

chmod u+x big.txt

chmod g-rw big.txt

chmod a+rwx big.txt

诸如此类

同时我们还可以用二进制的方式进行权限的修改

指令同样还是chmod

rwx,三个权限,我们可以看作三个二进制为,也就是111,那么rw-(-代表没有)也就对应110,而111对应的10进制值就是421

比如rw-,对应的值就是6

最后我们有三个身份,也就是三组rwx,所以我们可以直接对三组进行修改

比如我们想让拥有者和所属组有读写权限,而other则只能读,那么我们就可以这样写

chmod 664 filename

权限身份的修改

一个文件有拥有者、所属组、other

而我们是可以对其进行修改的,但是只有对拥有者和所属组的操作,因为不是他两的就自动是other

修改拥有者:chown

修改所属组:chgrp

举个例子,我们要将一个文件的拥有者换成root(所属组也是一样的):

sudo chown root filename

sudo chgrp root filename(修改所属组)

当然chown还有一种特殊用法,也就是,如果你想要同时修改拥有者和所属组的话,你可以直接这样:

chown  name1:name2  filename

权限的匹配机制

首先我们来看一下这张图

对于big.txtx这个文件来说,拥有者和所属组都是hjx

但是拥有者什么权限都没有,而所属组什么权限都有

这时候如果hjx想读这个文件的话,会发现读不了,什么都干不了

这是因为,我们的系统会先看,你是不是拥有者,不是的话再去看是不是所属组,不是的话就是other了

但是这时,我们系统看到,我们是拥有者了之后,那就认定了,你有没有权限,他不管

这就是权限的匹配机制,只会匹配一次

目录的权限

上文我们一直讲的都是文件的权限,但其实目录和文件是不一样的

r:代表你能不能查看这个目录里面的文件(比如cd进目录之后能不能ls)

w:代表能否对目录里的文件进行增删改

x:能否 cd 进入目录

初始权限(文件和目录)

创建文件的起始权限:664

创建文件的起始权限:775

为什么是这样的呢?其实是有原因的

首先,新建文件夹默认权限=0666,新建目录默认权限=0777

而我们在Linux里面有一个指令叫做umask,也叫做权限掩码

权限 = 起始权限 &(~umask)

也就是说,我们的权限是由umask决定的,先对其进行取反,然后再用起始权限与上,就是最终的权限,换句话说,如果我们此时将umask修改成0777的话,那么初始的不管是文件还是目录,权限都会是000

因为0777取反之后,对应位置就是全0,那么&的时候,就会全部变成0

粘滞位

粘滞位是长这个样子的:rwt(也就是将原来的x换成t)

假想一下,你现在想要创建一个文件,然后你想和另一个人共享这个文件,那么你只能创建一个目录,将other的权限全部放开

为什么说只能这么做呢,因为单单对文件权限进行操作是没有用的,不是你的文件,你虽然没资格用,但是你可以删啊,因为删文件取决于目录,就好比,虽然这个东西不是我的,但是你为什么要把它放在我家里?

但是这样的话,就有一个隐患,你和另一个人可以看,但是所有人都可以看,因为大家都是other,而且不光可以看,还能删

所以解决办法就是粘滞位,也就是:

chmod o+t 目录名字

粘滞位的作用就是,你想看,无所谓,这个不归我管,但是你不能删,删除不了

结语

这篇文章到这里就结束啦!!~( ̄▽ ̄)~*

如果觉得对你有帮助的,可以多多关注一下喔

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

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

相关文章

okcc呼叫中心系统搭建的方案方式

传统企业呼叫中心多采用 PC和手机软件,很难与客户保持良好的沟通。因此,需要建设一套呼叫中心系统来实现与客户实时有效沟通。那么,呼叫中心搭建的方案方式有哪些呢?下面详细介绍一下。 呼叫中心系统的搭建方式需根据企业规模、预算和业务需…

前端最新面试题及答案 (2025)

前端最新面试题及答案 (2025) JavaScript 核心 1. ES6+ 新特性 问题: 请解释 ES6 中 let/const 与 var 的区别,以及箭头函数的特点。 答案: let/const vs var: 作用域: let/const 是块级作用域,var 是函数作用域 变量提升: var会提升变量,let/const不会(有暂时性死区) 重…

传统轮椅逆袭!RDK + 激光雷达如何重塑出行体验?

为满足特殊群体智能化出行需求,攻克传统轮椅技术短板,本项目研发了一款智能轮椅。该轮椅借助摄像头与激光雷达,精准感知环境、检测障碍物;融合激光 SLAM 技术和互联网地图,实现室内外无缝导航与自主避障;提…

go-中间件的使用

中间件介绍 Gin框架允许开发者在处理请求的过程中加入用户自己的钩子(Hook)函数这个钩子函数就是中间件,中间件适合处理一些公共的业务逻辑比如登录认证,权限校验,数据分页,记录日志,耗时统计 1.定义全局中间件 pac…

【Linux】动静态库链接原理

📝前言: 这篇文章我们来讲讲Linux——动静态库链接原理 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C学习笔记,C语言入门基础…

第八节第三部分:认识枚举、枚举的作用和应用场景

认识枚举 枚举的概述 枚举的特点 枚举的应用场景 代码: 代码一:认识枚举 A(枚举) package com.d6_enum;public enum A {//注意:枚举类的第一行必须罗列的是枚举对象的名字X,Y,Z;private String name;public String…

Android framework 中间件开发(二)

上篇文章中我们讲述了怎么去开发中间件 Android framework 中间件开发(一) 这篇我们讲一下怎么打包中间件给外部应用使用 目录 1.新建项目 2.编写jar包代码 3.打包jar包 4.使用jar包 我们可以直接将系统编译出来的framework的jar包拿出来直接用,但是为了安全起见,防止用户调用…

FC7300 IO 无法正常输出高低电平问题排查

现象:Port、Dio配置正常的情况下,IO写或者翻转函数正常执行后,IO电平未按照预期切换电平。 排查: 第一步:检查PORTx_PCRy寄存器值: DWP: 域写保护:此字段指示允许哪个内核或 DMA 写…

7 个正则化算法完整总结

哈喽!我是我不是小upper~之前和大家聊过各类算法的优缺点,还有回归算法的总结,今天咱们来深入聊聊正则化算法!这可是解决机器学习里 “过拟合” 难题的关键技术 —— 想象一下,模型就像个死记硬背的学生&am…

如何有效的开展接口自动化测试?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、简介 接口自动化测试是指使用自动化测试工具和脚本对软件系统中的接口进行测试的过程。其目的是在软件开发过程中,通过对接口的自动化测试来提高测…

我设计的一个安全的 web 系统用户密码管理流程

作为一名有多年经验的前端,在刚开始学习web后端的时候,就对如何设计一个安全的 web 系统用户密码管理流程有很多疑问。之前自己也实践过几种方法,但一直觉得不是十分安全。 我们知道,用户在注册或登录界面填写的密码是明文的&…

炼丹学习笔记3---ubuntu2004部署运行openpcdet记录

前言 环境 cuda 11.3 python 3.8 ubuntu2004 一、cuda环境检测 ylhy:~/code_ws/OpenPCDet/tools$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Mar_21_19:15:46_PDT_2021 Cuda compilation tools, release 11.3…

在 Linux 系统中过滤文件中的字符串

在 Linux 系统中过滤文件中的字符串,可以使用多种命令行工具实现。以下是几种常见方法及详细说明: 一、使用 grep 命令(最常用) grep 是 Linux 中最强大的文本搜索工具,支持正则表达式。 基础语法: grep…

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡 一款基于3U PXIE 总线架构的高性能数据预处理FMC 载板,板卡具有1 个FMC(HPC)接口,1 个X8 GTH 背板互联接口,可以实现1 路PCIe x8。板卡采用Xili…

Java 使用 PDFBox 提取 PDF 文本并统计关键词出现次数(附Demo)

目录 前言1. 基本知识2. 在线URL2.1 英文2.2 混合 3. 实战 前言 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD…

Vue百日学习计划Day16-18天详细计划-Gemini版

重要提示: 番茄时钟: 每个番茄钟为25分钟学习,之后休息5分钟。每完成4个番茄钟,进行一次15-30分钟的长休息。动手实践: DOM 操作和事件处理的理解高度依赖于实际编码。请务必在浏览器中创建 HTML 页面,并配…

SearchClassUtil

路径扫描工具SearchClassUtil,用于扫描指定包(XXXX)下的所有.class文件,并将它们的全限定类名(如tomcat.SearchClassUtil)收集到列表中返回。该工具使用递归文件遍历和反射机制,是实现 Spring 框…

云服务器的运用自如

云服务器的运用自如:从基础到高阶的实战指南(2025版) 云服务器作为数字化转型的核心工具,其灵活性和高效性已覆盖从个人开发者到企业级应用的广泛场景。以下是基于当前技术趋势的云服务器深度运用策略,涵盖核心应用、…

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析 这里面有很重要的原因其中一个很其中一个原因是因为如果你使用docker的方式,你可以在虚拟环境下就类似于这个沙箱的这个机制可以进行隔离。这对于安全,…

快慢指针算法(Floyd 判圈算法)

快慢指针(又称龟兔赛跑算法)是一种常用的链表操作技巧,通过两个移动速度不同的指针遍历链表,用于解决链表中环检测、中点查找等问题。以下是其核心应用场景和实现方法: 1. 链表环检测 问题描述: 判断链表中…