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

Linux:权限篇

文章目录

  • 前言
  • 1.用户
  • 2.文件的权限管理
    • 2.1 修改文件的权限
    • 2.2 修改文件的拥有者
    • 2.3 修改文件的所属组
  • 3.file指令
  • 4.umask指令
  • 4.目录的权限管理
  • 总结

前言

  Linux权限在两个地方有所体现,一种是使用用户:分为root超级用户员与普通用户。另一个是体现在文件的访问权限上,比如有的可读不可写等等。

1.用户

  Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

  普通用户可以通过su命令+root账号的密码来切换为root,root可以通过su user切换为指定的user普通用户。
  普通用户切换为root用户:
在这里插入图片描述  root用户切换为普通用户:
在这里插入图片描述
  而如果我们仅仅只是对一条指令需要通过root来执行,那么切换账号就比较麻烦了。我们可以直接用sudo来对某一条指令进行提权。
在这里插入图片描述
  这里输入自己的密码就可以了,那么就有人会问了,自己输入自己的密码就可以有用root的权限,那这是不是有些违规了呢?其实并不是的,在Linux中还有一个sudoers的文件,里面保存了可信任用户的名单,只有在这份名单的人才可以使用sudo来进行提权,而只有管理员root才能修改这个文件中的名单,而能被root记录在此文件中的人也一般都是可信任的。

2.文件的权限管理

  权限是什么?权限本质上其实就是你是否被允许做某事。在Linux中,每个文件都有权限方面的属性,属于是伴生于文件的,一般包含 “r” 可读、“w” 可写、“x” 可执行。
  而这些都是文件本身的属性,对于使用者同样是有区分的,就比如上面所说的普通用户和root用户,在使用者方面分为三者:文件和文件目录的所有者:u—User,文件和文件目录的所有者所在的组的用户:g—Group,其它用户:o—Others 。打个比方:你是和小王是一个小组成员,共同使用一个编写一个项目,你在编写项目时创建了一个文件。在这其中你就是user,小王就是Group,你们两个其他干其他工作的人就属于other。

在这里插入图片描述

  我们可以看到一共是有十列,除去第一列,后面九个三三为一组,分别代表着user、group、other的权限, 第一列表示的是文件类型。后面的则分别代表user、group、other是谁,而当你所在组的成员只有你一个人时,那么user和group自然也就是一个人。other显示为0,这是因为除了你和你的所属组之外都是other,是无法穷举的,因此显示为0。
  第一列代表着文件类型,那么它有什么含义呢?在windows中,区分文件的类型是根据文件的后缀来分别的,而在Linux中,区分文件的类型是与后缀无关的!!!它和文件是否具有可执行权限有关。那么在Linux中后缀还有什么意义呢?虽然Linux并不依靠后缀,但是有了后缀更容易方便我们来区别,因此一般情况下还是要加后缀的。同时我们所说的仅仅是Linux不对后缀进行区分,不代表着某些软件不区分,比如gcc,它只会编译以.c为后缀的文件。
  那么在Linux中的文件类型具体都有什么呢?

以-开头的:普通文件,如源代码、可执行程序、库等
d:目录文件
c:字符设备文件
b:块设备文件
l:链接文件
p:管道文件

2.1 修改文件的权限

  那么如何修改一个文件的权限呢?我们可以使用chmod指令。
  chmod
  功能:设置文件的访问权限
  格式:chmod [参数] 权限 文件名
  常用选项:

  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

在这里插入图片描述
  这样我们就发现一个原本不具有可执行权限的文件现在具有了可执行权限。

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户符号:

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

  但是我们要注意,只有这个文件的user才能更改文件的权限。当然root是超级用户,即使不是文件的拥有者,一样可以进行修改,root用户是不受权限限制的。

在这里插入图片描述

  但是我们发现虽然我把自己的权限都删除了,但是我还是所属组的成员,所属组的权限还在,为什么我不能访问了呢?这是因为在匹配时,它是以user、group、other的顺便进行匹配的,只会匹配一次,在匹配成功后就不会继续向后匹配了,它只会认定你是user,所以即使你也是所属组的,但是系统会认为你是user,会根据user的权限来限制你。

  同时在修改权限时还可以通过以下方式修改,每一个权限都可以拿一个二进制进行表示。
在这里插入图片描述
  6也就是110,对于rw-,三个6分别对应user、group、other,这样就可以将三者的权限都改成了rw-。

在这里插入图片描述

2.2 修改文件的拥有者

  chown
  功能:修改文件的拥有者
  格式:chown [参数] 用户名 文件名
在这里插入图片描述
  这里是需要进行提权操作的,因为你将一个文件给别人,那是否需要整得别人的同意呢?别人都忙不过来了,你还给人家事情做,当然是不行的,但是我们经过提权后,我管你同不同意,直接就硬塞给人家。

2.3 修改文件的所属组

  chgrp
  功能:修改文件或目录的所属组
  格式:chgrp [参数] 用户组名 文件名
  常用选项:-R 递归修改文件或目录的所属组
在这里插入图片描述
  当然拥有者和所属组也是可以一起更改的:
在这里插入图片描述

3.file指令

  功能说明:辨识文件类型。
  语法:file [选项] 文件或目录…
  常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
在这里插入图片描述

  这就说明/usr/lib64/libz.so.1是一个链接文件。

4.umask指令

  可能有人会觉得为什么新建一个文件的权限就是rw-,这其实与Linux中的掩码有关。
  umask功能:查看或修改文件掩码
  新建文件夹默认权限=0666
  新建目录默认权限=0777
  但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
  格式:umask 权限值
  说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
在这里插入图片描述
  我们发现当umask改变时,对应创建的新文件的权限也会发生改变。实际上002的意思就是—>000 000 010,分别对应user、group、other,也就是凡是在权限掩码中出现的权限,最终都要在起始权限中去掉。起始权限为666(不同平台是不一样的),可以将umask设置为0000来看(最终权限 = 起始权限 & (~umask) )。
  比如当权限掩码为777时。也就是111 111 111,那么创建出来的文件的权限应该就是什么都没有了。
在这里插入图片描述

4.目录的权限管理

在这里插入图片描述

  rwx权限在文件与目录中的含义是不一样的,我们知道x是执行,那么目录怎么执行呢?

  • 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “—”表示不具有该项权限

  缺少r权限,我们可以进去目录,但是无法查看目录的内容。
在这里插入图片描述
  缺少w权限,我们可以进去目录,也可以查看目录的内容,但无法在目录中创建新的文件。
在这里插入图片描述
  缺少x权限,我们无法进入该目录。
在这里插入图片描述
  于是, 问题来了,换句话来讲,就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。这好像不太科学啊,我张三创建的一个文件,凭什么被你李四可以删掉?为了解决这个不科学的问题, Linux引入了粘滞位的概念。
在这里插入图片描述
  当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由超级管理员删除、该目录的所有者删除、该文件的所有者删除。

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限

总结

  关于权限的内容,主要还是理解谁能干什么,不能干什么,并不涉及难以理解的知识,更多的还是需要继续熟悉Linux环境下的各个操作。
  如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续深入学习Linux,希望能与大家共同进步,那么本期就到此结束,让我们下期再见!!觉得不错可以点个赞以示鼓励!!

相关文章:

Linux:权限篇

文章目录 前言1.用户2.文件的权限管理2.1 修改文件的权限2.2 修改文件的拥有者2.3 修改文件的所属组 3.file指令4.umask指令4.目录的权限管理总结 前言 Linux权限在两个地方有所体现,一种是使用用户:分为root超级用户员与普通用户。另一个是体现在文件的…...

Lua热更新(xlua)

发现错误时检查是否:冒号调用 只需要导入asset文件夹下的Plugins和Xlua这两个文件即可,别的不用导入 生成代码 和清空代码 C#调用lua using Xlua; 需要引入命名空间 解析器里面执行lua语法 lua解析器 LuaEnv 单引号是为了避免引号冲突 第二个参数是报错时显示什么提示…...

并查集(基础+带权以及可撤销并查集后期更新)

并查集 并查集是一种图形数据结构,用于存储图中结点的连通关系。 每个结点有一个父亲,可以理解为“一只伸出去的手”,会指向另一个点,初始时指向自己。一个点的根节点是该点的父亲的父亲的..的父亲,直到某个点的父亲…...

基于 Java 的数据结构和算法 (不定期更新)

JavaIsBestLang 数据结构 Collection 是 Java 中的接口,被多个泛型容器接口所实现。在这里,Collection 是指代存放对象类型的数据结构。 ArrayList 函数名功能size()返回 this 的长度add(Integer val)在 this 尾部插入一个元素add(int idx, Integer …...

考研回忆录【二本->211】

备考时长差不多快一年半,从22年的11月底开始陆陆续续地准备考研,因为开始的早所以整个备考过程显得压力不是很大,中途还去一些地方旅游,我不喜欢把自己绷得太紧。虽然考的不是很好,考完我甚至都没准备复试,…...

【XCPC笔记】2023 (ICPC) Jiangxi Provincial Contest——ABCIJKL 做题记录

补题 赛后gym练习及补题,gym链接:2023 (ICPC) Jiangxi Provincial Contest – Official Contest 另外,D题我也打算找机会学习写下,C题的博弈论还需要好好理解,感觉都是比较有趣的数学问题 补题顺序如下 补题L [Zhang …...

猫头虎分享已解决Bug || **URLError (URL错误)** 全方位解析

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...

如何使用极狐GitLab 启用自动备份功能

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何极狐GitLab 自…...

HTML/XML转义字符对照

特殊字符转义表 字符十进制转义字符"&quot;&&amp;<<<>>>不断开空格(non-breaking space) 最常用的转义字符列表 显示说明实体名称十进制编号半方大的空白&ensp;全方大的空白&emsp;不断行的空白格 <小于<<>大于&g…...

设计模式:组合模式示例

组合模式的典型例子通常涉及到树形结构的处理&#xff0c;下面是几个形象且易于理解的例子&#xff1a; 文件系统 在文件系统中&#xff0c;目录可以包含文件或者其他目录&#xff0c;但是从用户的角度来看&#xff0c;目录和文件都可以被“打开”或者“获取大小”。这里的目…...

普通情况和高并发时,Redis缓存和数据库怎么保持一致?

普通情况和高并发时&#xff0c;Redis缓存和数据库怎么保持一致&#xff1f; 普通情况思路 高并发时思路 Q&#xff1a;缓存和数据库怎么保持一致&#xff1f; A&#xff1a;绝对不可能保持一致的&#xff0c;在实际业务开发中&#xff0c;有一些方案可以做取舍。 实际业务中&a…...

Django -- 自动化测试

概述 测试是一种例行的、不可缺失的工作&#xff0c;用于检查你的程序是否符合预期。 测试可以划分为不同的级别。一些测试可能专注于小细节&#xff08;比如某一个模型的方法是否会返回预期的值&#xff1f;&#xff09;&#xff0c; 一些测试则专注于检查软件的整体运行是否…...

NodeJS 在Windows / Mac 上实现多版本控制

NodeJS 的多版本控制 本文介绍一下在 windows/MacOS 上 如何 切换和使用多个版本的 NodeJS。 Windows 本小节介绍一下在windows上管理不同版本的NodeJS。 nvm-windows 工具 nvm-windows 是在 windows 上管理 NodeJS 版本的一个工具。 它可以很方便的 下载、移除、查看、切…...

Web3 游戏周报(3.24-3.30)

【3.24-3.30】Web3 游戏行业动态&#xff1a; Web3 开发平台 Mirror World 在 Solana 上推出首个游戏 rollup 链 NFT 卡牌游戏 Parallel 完成 3,500 万美元融资&#xff0c;Solana Ventures 等参投 加密游戏开发公司 Gunzilla Games 完成 3,000 万美元融资 Telegram 游戏 No…...

算法思想1. 分治法2. 动态规划法3. 贪心算法4. 回溯法

目录 递归和动态的区别:空间和时间复杂度之争 递归空间复杂度低;动态时间复杂度第低...

SpringBoot+ECharts+Html 地图案例详解

1. 技术点 SpringBoot、MyBatis、thymeleaf、MySQL、ECharts 等 此案例使用的地图是在ECharts社区中查找的&#xff1a;makeapie echarts社区图表可视化案例 2. 准备条件 在mysql中创建数据库echartsdb&#xff0c;数据库中创建表t_location_count表&#xff0c;表中设置两个…...

达梦数据库 优化

谁进行优化&#xff1f;优化什么&#xff1f; 优化不能仅从数据库方面考虑&#xff0c;比如&#xff0c;在存储达到数据库极限、应用涉及人员设计的代码稀巴烂的情况下&#xff0c;进行调优就是杯水车薪的效果。 涉及到优化人员&#xff1a; 数据库管理员应用程序架构师应用…...

数据如何才能供得出、流得动、用得好、还安全

众所周知&#xff0c;数据要素已经列入基本生产要素&#xff0c;同时成立国家数据局进行工作统筹。目前数据要素如何发挥其价值&#xff0c;全国掀起了一浪一浪的热潮。 随着国外大语言模型的袭来&#xff0c;国内在大语言模型领域的应用也大放异彩&#xff0c;与此同时&#x…...

idea开发 java web 酒店推荐系统bootstrap框架开发协同过滤算法web结构java编程计算机网页

一、源码特点 java 酒店推荐推荐系统是一套完善的完整信息系统&#xff0c;结合java web开发和bootstrap UI框架完成本系统 采用协同过滤算法进行推荐 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式…...

Linux——线程控制

目录 前言 一、线程创建 1.创建线程 2.线程传递结构体 3.创建多线程 4.收到信号的线程 二、线程终止 三、线程等待 四、线程分离 五、取消线程 六、线程库管理的原理 七、站在语言角度理解pthread库 八、线程的局部存储 前言 前面我们学习了线程概念和线程创建&…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...