【Linux】文件权限与类型全解:你的文件安全指南

 欢迎来到 CILMY23 的博客

🏆本篇主题为:文件权限与类型全解:你的文件安全指南

🏆个人主页:CILMY23-CSDN博客

🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营

🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注


前言: 

Hello,大家好,这里是 CILMY23 的频道,上期我们接触了Linux中组和用户,组是为了让我们在多人协作的时候,更好的进行权限的管理,而角色和用户又是相补相成的,用户扮演具体的角色,角色又对用户进行补充,今天我们将了解文件权限和不同的文件类型。


文件的权限

回顾前言,我们说Linux中普通用户分为拥有者,所属组,other,root账户角色分root和other。真正存在的用户其实是root账户和普通用户。这两者之间是互相补充的,也就是说,root账户可能是拥有者,所属组,other,普通用户也可能是拥有者,所属组,other。接下来推荐是使用普通用户来进行操作,不使用root账户。

在上一期文章中,我们创建了三个文件,分别是file1,file2,file3. 

 

​  这一串字符串从左到右依次代表了什么?

第一个和第二个我们暂时不看,第三个开始是,文件的拥有者,文件的所属组,文件的大小,文件最近一次的修改时间或者创建时间,文件名。

这次,我们要重点关注第一串字符串。 

​ 

 第一个字符"-",表示这个文件的文件类型。我们说看到开头是"-",它代表一个普通文件,如果是目录,开头则是"d"。这个我们在之前的文章中有写到过(指令篇ls)。

除此之外,还剩下九个字符,那为什么是九个字符呢?这个其实跟文件的属性权限有关:常见的是三种,下一篇会讲第四种(可执行权限)。

常见的文件权限:

  1.  "r",读权限
  2. "w",写权限
  3. "x",可执行权限

所以我们经常描述一个文件的权限的时候,因为权限等于人+事物的属性,也就是角色+事物的属性,所以我们要谈一个文件的权限,必定是这个文件,它的拥有者具有什么权限,所属组具有什么权限,other具有什么权限,所以权限等于我们对应的人+事物属性,所以权限得分人去讨论。而我们的Linux当中,得分我们的账号,就是我们的角色一共会有三种角色。叫做拥有者,所属组和other。所以为什么这里是9列呢?

​因为这九列是三三为一组。第一组表示拥有者权限,第二组表示所属组权限,第三组表示other权限。所以我们的权限是三三一组。 

​那我们先着重搞懂一组后,再搞懂其他组,因为搞懂一组之后,另外两组可以类推。我们从第一组拥有者权限开始,它有三个权限位置。rwx。

 拥有者权限

拥有者权限(Owner Permissions) 是指文件或目录的创建者(即拥有者)对该文件或目录所具有的权限。具体来说:

  1. 读权限(r):允许拥有者查看文件的内容或列出目录中的文件名。
  2. 写权限(w):允许拥有者修改文件的内容或在目录中添加、删除文件。
  3. 执行权限(x):允许拥有者执行文件(如果是可执行文件)或进入目录。

 说白了,也就是有这个权限,它就有对应的字母,没有这个权限,就是-。

修改文件对应权限

 1.如何快速修改权限?

我们既然知道了拥有者的权限由三种构成,那能不能修改,如果能修改,应该如何修改?但是在探讨这个问题之前,我们得先了解一下,谁能修改?

其实一个文件的权限,能由对应的文件拥有者,或者root来修改。

我们可以通过实际操作来验证是否只能由这两个账户来修改文件的权限。

 whoami,查看后确认我是文件的拥有者,所以我可以修改权限

我们可以使用指令chmod 来修改拥有者权限 ,chmod [用户类别][操作][权限] 文件名

  • u:文件的拥有者(user)
  • g:所属组(group)
  • o:其他用户(others)
  • a:所有用户(all)
移除权限 

实操如下: 

指令:chmod

拥有者:u

减去权限,r,也就是删除权限。 

功能:删除文件的读权限

​ 

指令:chmod

拥有者:u

减去权限,r,也就是删除权限。 

功能:删除文件的拥有者的读权限

加权限

我们还可以把权限加回来 

​ 同样的,对修改所属组和other的使用方法也一样

总结起来就是,我们对单个人,它的任意权限组合,都可以采用字符组合的方式,来去掉一个人的一个权限,或一个人的多个权限。用户通过指令来修改权限,角色拥有对应的权限才能对文件进行对应的操作。 

​ 

如何修改多个人的权限 
 多人的权限移除

 如果我们想修改拥有者和所属组给他们两个都去掉w,可以采用逗号组合的形式。

 多人的权限添加

 所以我们可以更改一个人的多个权限,也可也更改多个人的一个权限,或者多个人的多个权限,只是组合时用,分离。 

所有人移除权限 

这样一个个选择过于麻烦了,所以我们可以直接用a(all)来代表所有人

所有人加权限 

通过这些我们知道,所有人可以同时移除权限, 也可以所有人都加权限。而三种权限字符组合的顺序是无所谓的,当然不推荐这么干。

总结: 

 2.权限有无的表现

普通用户 

我们在上述过程中体会了权限的修改,我们知道了用户能够通过chmod来修改对应角色的权限,可是 有权限和没权限的最终表现是什么?并且root本身叫超级管理员,什么都能做,可是在权限这里能否体现超级管理员的身份呢?

现在我们在同一个服务器下,可以看到左边是普通用户,右边是root账户,现在file1.txt没权限了,想用cat阅读,发现没法阅读,被拒绝了。用echo 想将字符串“hello world”输出到file1文件中,发现同样也被拒绝了。

文件是我的,但是没有权限,所以既不能读,也不能写,更不能执行。 但当我们开放对应权限,普通用户就能进行对应的操作。

所以我们能得到结论:对于普通用户,自身要受到对应权限的约束,即便这个文件是自己的! 

root账户 

那root就不信邪,就来尝试了,对于file1.txt文件来说,root相当于other。 那如果有权限,我root肯定是可以访问的,所以我们只要验证没有权限的情况就可以了。

 我们可以发现,我们想怎么做都可以,我们可以进行读写而不被对应权限限制。就透露出一种我想读就读,想写就写,反正root不受权限的约束。

 所以结论也比较明显,结论:root不受权限约束的!那能不能限制别人?也就是拦截普通用户。

权限匹配 

 通过上述我们可以看到,普通用户受到文件对应权限的约束,而root账户不受权限约束,但我们在验证普通用户的时候还漏掉一种情况,那就是如果我拥有者没权限,而所属组有权限呢?

如果我们当前,给拥有者去掉读写,细节是,我们此刻是文件的拥有者和文件的所属组。我当前去掉了拥有者的读写,他对于文件当前什么权限都没有。

 我们发现都没权限:我现在是拥有者什么权限都没有,这一切都符合权限的定义,可是我当前也是文件的所属组,拥有者没权限,所属组是具有权限的呀,为什么不拿所属组权限匹配?

这是因为Linux进行权限匹配的时候,对用户身份进行识别的时候,只识别一次。 

 

也就是说,当前你这个用户,首先操作系统是认识你的,另外,你的名字是会被操作系统记到属性里的,所以系统在做对比的时候发现,这个用户当前是拥有者,一旦把你这个人和拥有者的这个名字匹配成功了,就是只看拥有者的权限,只匹配一次。只匹配一次,虽然你是所属组,对不起,我不做了,不去匹配你的所属组权限,你的权限和身份只匹配一次。 

如何证明? 

我们可以通过修改拥有者来验证。如果第一次匹配拥有者失败的时候,操作系统会接着往下匹配,匹配后,是所属组,你就有所属组的权限。那么如何更改一个文件的拥有者,包括所属组,包括other呢?等会再说,我们现在操作一下。但是注意更改文件的拥有者要有root权限

 我们通过使用指令,chown来修改文件的拥有者(注意,我们是在root的情况下操作的)

 我们发现,我们可以进行正常的读写,所以身份识别的时候,我们只识别一次,那么一旦匹配成功,就不往后匹配了,匹配不成功,就自动匹配,你不是拥有者,就自动匹配你是不是所属组,如果两者都不是,你就是other

 接下来我们修改对应的所属组

 我们发现,这个时候我们无法进行对应的读写操作了。所以你是普通用户也不行。

然后把other的权限公开了。

所以你又可以进行读写了。

所以我们已经证明了,权限是可以限定人的。 我们这两个知识点已经掌握了。

 

3.修改权限的第二套做法 

根据我们之前讲的权限的本质,是等于人+具体事物的属性。

 

  =所以我们现在也说。权限 = 用户角色+文件权限,所以刚刚写的第一点,和第二点,一直是在修改文件的属性。而且修改文件属性,我们已经看到有和没有的表现了,下一个问题就是我们能不能更改文件的角色呢?关于这个用户的角色问题呢?我们刚刚已经演示,做过了。但是我们现在重点谈一谈。我们除了能改文件属性外,还能修改它的用户角色。我们想具体修改,它的拥有者,所属组,这样的概念。

普通用户是没有权限修改拥有者和所属组的。所以想把一个文件的拥有者和所属组更改,的本质是,你把文件给另一个人,或者给另一个组。

为什么我们能修改我们文件的权限?就是我们刚刚已经证明我们是可以修改我们文件的权限的。那为什么能改这个文件的权限?那是因为我们是这个文件的拥有者对不对?

所以你我们能改,或者我们是root。但是当我们在改这个文件的时候,其实并没有直接的去影响别人,间接肯定是影响了,现在我把文件的拥有者改了,那它的本质是不是把文件给别人?

在现实生活中,你把一个东西给别人都不要征得别人的允许,给你五百万,一个亿,不需要征求你的意见。虽然总有一些桀骜不驯,或者清高的少年,说我不要,你给我再多钱我都不要,那就当我没说。哈哈哈。

但是,万一这个钱是不干不净的呢?所以我们把一个文件给别人的时候,这个文件的好坏得清楚。所以一个文件,我们轻易不能把文件给别人。所以默认这里,即便你这个文件,你是它的拥有者,也给不了别人,你得让别人愿意接收这个文件。

但是我们把文件给别人的时候还要征得同意,打招呼?Linux也考虑到这一点。所以当我们想把文件给别人,但是你的权限不允许你把文件给别人的时候,那就强制给别人。所以一般,更改文件的拥有者,如果你是普通用户的话,那么你就需要进行sudo。也就是说呢,此时,我们需要对chown短暂提权。

所以如果你想把文件给别人,不能用普通权限给别人,要么sudo,要么su 成root。给别人是强制给的。

推荐使用su

当然最后再说一下,就是我们的root,不用加sudo,因为root不受权限约束,那怎么没见修改other的指令呢?

因为不需要。那么为什么呢?

其实你只要把拥有者改了,把所属组改了,other自然而然就变了。


总结:

1. 对于普通用户,自身要受到对应权限的约束,即便这个文件是自己的! 

2.root不受权限约束的!

3.Linux进行权限匹配的时候,对用户身份进行识别的时候,只识别一次。 

4.不需要修改other,因为你只要把拥有者改了,把所属组改了,other自然而然就变了。

快捷键:shift + alt + t 快捷打开新窗口。


 🛎️感谢各位同伴的支持,本期文件中的权限专题就讲解到这啦,下期我们将讲解可执行权限和目录权限,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。        

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

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

相关文章

激光雷达点云处理—学习随记

一、激光雷达基本概念 激光雷达(Light Detection and Ranging,LiDAR),是一种发射激光(可见光-近红外)于被瞄准物体表面并记录反射光被信号接收器接收到的时间以测定距离的方法。激光雷达通过以下公式确定物…

基于springboot酒店管理系统

酒店管理系统 552酒店管理系统 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,…

【MySQL】查询语句之inner、left、right、full join 的区别

前言: INNER JOIN 和 OUTER JOIN 是SQL中常用的两种连接方式,用于从两表活多表中提取相关的数据。两者区别主要在于返回的 结果集 如何处理 匹配 与 不匹配 的行。 目录 1、INNER JOIN 2、OUTER JOIN 3、总结 1、INNER JOIN 称为内连接,只…

【Python机器学习】NLP信息提取——命名实体与关系

我们希望计算机能够从文本中提取信息和事实,从而略微理解用户所说的内容。例如,当用户说“提醒我星期一浏览***.org网站”,我们希望这句话触发当天后下一个周一的日程或者提醒的操作。 要触发上述操作,需要知道“我”代表一种特定…

5.内容创作的未来:ChatGPT如何辅助写作(5/10)

引言 在信息爆炸的时代,内容创作已成为连接品牌与受众、传递信息与知识、以及塑造文化与观念的重要手段。随着数字媒体的兴起,内容创作的需求日益增长,对创作者的写作速度和质量提出了更高的要求。人工智能(AI)技术的…

感谢问界M9一打二十,让我们买到这么便宜的BBA

文 | AUTO芯球 作者 | 雷慢 国产豪华车,终于扬眉吐气了, 你敢信吗?在50万以上豪华车中, 现在问界M9一款车的月销量, 是其他前20名销量的总和! 要知道,它的对手是各种宝马、奔驰、雷克萨斯的…

私有化通讯工具:安全、高效、个性化,重塑企业沟通生态

在当今数字化时代,即时通讯已成为企业日常运营中不可或缺的一部分。随着数据安全和隐私保护意识的日益增强,越来越多的企业开始寻求更加安全、可控的沟通方式。私有化聊天工具应运而生,以其独特的核心优势,为企业构建了一个安全、…

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览 vSphere 8.0U3 | ESXi 8.0U3 & vCenter Server 8.0U3 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u3/,查看最新版。原创作品,转载请保留出处。 作者主页…

【Leetcode】70. 爬楼梯

题目来源 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶…

webpack5 构建优化方案看这篇就够了!【Node.js进阶】

无论在面试还是内部晋升,webpack 构建优化方案 一直都是非常重要的部分。 webpack5构建加持 一、项目完成目标二、搭建项目1. 安装koa、koa/router (如果已经配置可路过)2. 创建入口文件3. 安装构建依赖4. 在项目根目录添加 .babelrc 文件5. …

一般在写SQL时需要注意哪些问题,可以提高查询的效率?

很多人写SQL按照自己喜好,没有规则意识,这对于自主查询影响不大,你爱怎么搞就怎么搞,一旦涉及到提交任务或团队共享,就不能乱写了,会浪费资源影响到开发效率,严重的甚至会服务器瘫痪。 提几个关…

进程的重要函数

进程的重要函数: fork函数 了解fork函数 通过调用fork()函数&#xff0c;则会产生一个新的进程。调用fork()函数的进程叫做 父进程&#xff0c;产生的新进程则为子进程。 其编码过程: 1.函数功能: 函数头文件 #include <sys/types.h> #include <unistd.h> 函数…

运用Java实现倒计时功能

这个功能其实是比较好实现的&#xff0c;一般来说java中实现倒计时有两种方法&#xff1a; 1、使用 scheduledexecutorservice创建一个可重复执行的任务&#xff0c;直到时间到&#xff1a; ScheduledExecutorService 是 Java 中一种用于安排延迟或定期任务的工具。我们可以使…

云计算第四阶段------CLOUD Day4---Day6

Cloud DAY4 项目架构图&#xff1a; 环境准备&#xff1a; 主机名称IP地址配置logstash192.168.1.27最低配置4核8G #书接上文&#xff0c;我们在华为云平台租了几台云服务器&#xff0c;这次买一台性能好的服务器&#xff0c;作为logstash软件部署的载体。 今天给小伙伴们带来…

低代码门户技术:构建高效应用的全新方式

什么是低代码门户技术&#xff1f; 低代码门户技术是一种利用低代码平台构建企业门户网站或应用的技术。门户通常是企业内部和外部用户访问信息和应用的集中平台。低代码门户技术通过图形化界面和预置组件&#xff0c;允许用户快速搭建和定制这些门户平台&#xff0c;而无需深…

TCP并发服务器的实现

一请求一线程 问题 当客户端数量较多时&#xff0c;使用单独线程为每个客户端处理请求可能导致系统资源的消耗过大和性能瓶颈。 资源消耗&#xff1a; 线程创建和管理开销&#xff1a;每个线程都有其创建和销毁的开销&#xff0c;特别是在高并发环境中&#xff0c;这种开销…

性能测试的复习3-jmeter的断言、参数化、提取器

一、断言、参数化、提取器 需求&#xff1a; 提取查天气获取城市名请求的响应结果&#xff1a;城市对查天气获取城市名的响应结果进行响应断言和json断言对查天气获取城市名添加用户参数 1、步骤 查看天气获取城市名 json提取器&#xff08;对响应结果提取、另一个接口请求…

简单了解微服务--黑马(在更)

认识微服务 单体架构 不适合大型复杂项目 微服务架构 将单体结构的各个功能模块拆分为多个独立的项目 拆取的独立项目分别开发&#xff0c;在部署的时候也要分别去编译打包&#xff0c;分别去部署&#xff0c;不同的模块部署在不同的服务器上&#xff0c;对外提供不同的功能…

小间距LED显示屏的技术原理分析

在现代显示技术领域&#xff0c;小间距LED显示屏以其卓越的显示效果和灵活的应用场景&#xff0c;逐渐成为市场的新宠。本文将深入探讨小间距LED显示屏的技术原理&#xff0c;分析其在显示领域的应用优势。 A、小间距LED显示屏的基本概念 小间距LED显示屏是指LED灯珠之间的间距…

linux hadoop-3.3.6 hbase-2.5.7

软件下载 hadoop https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz 可以直接下载到本地&#xff0c;也可以直接下载进虚拟机中 如果速度较慢&#xff0c;可以用&#xff1b;另一个 wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common…