【Linux权限管理】文件:毁灭我与我无关

news2024/9/27 22:17:00

一.预备知识

1.LInux用户分类

一台Linux机器的用户分为两类:

超级用户和普通用户

注意我这里说的用户的并不是一个固定的人,例如你本身就有root账号,但你也可以使用自己创建普通账号。当你使用root账号时,你就是一个超级用户,当你使用普通账号时,你就是一个普通用户。更简单地说,这里的用户对应的是正在使用的账号。

root账号无所不能,不受权限约束,而普通账号则受权限约束。具体怎么一回事下面再说。

2.切换用户的指令

当你想切换到不同用户时,可以使用su指令,后面加上想要切换成哪个用户,如果不加,默认是root用户

从普通用户切换到超级用户:

su

接下来会提示你输入密码,这里输入的是root账号的密码。

从超级用户切换到普通用户:

su zhangsan

假设你添加了zhangsan这个用户,就可以使用本条指令切换用户,root用户可以任意切换身份,不需要输入密码

从普通用户切换到普通用户

su lisi

假设你现在登录的是张三的账号,你想要切换成李四,就可以使用上述的命令,前提是你要知道李四的密码

su -

你也可以使用这条指令切换账号,他和su的效果基本一样,只不过su只是单纯地账号切换,而su -是重新登录账号,最终的效果就是前者仍然在以前的目录,而后者会回到切换账号的家目录

二.权限的理解

怎么理解权限?权限就是能不能做某件事,它是一个是否的问题,所以权限必然包含两个要素,谁能不能做事?(who)   做什么事?(what)

Linux系统当中,“一切皆文件”,故我们操作一台机器,实际上就是访问机器当中的各种各样的文件。所以我们说,“权限是伴生文件的”,某个具体的文件(这里是广义的文件,包括目录等),权限就是约束用户对文件能做哪些事情。

三.文件访问者的分类

根据和某个文件的关系,所有用户可以被分为三类:

  1. 拥有者 u--User
  2. 所属组 g-Group
  3. 其它人 o-Others

拥有者默认就是创建这个文件的人

所属组是专门为这个文件划的一个群体,里面可以有一个或多个用户,并且有一个组长,最初默认只有文件的创建者一个人,并且担任组长、

这里可能会有一个疑问,不是说用户分为超级用户和普通用户吗?这里不是和上面冲突了吗?

超级用户和普通用户是某个具体的人,而拥有者,所属组和other是某种角色,二者是相互补充,互相成就的关系。

例如,张三是一名学生,想去教职工食堂吃饭但是被拦住了。于是张三奋发图强,大学毕业后当上了老师,可以正大光明地去教职工食堂了。张三能去教职工食堂吃饭,是因为他是张三吗?不是,是因为他是老师。张三从学生这个角色向老师转变,但他的姓名,身份证号没有改变,从他出生起,他就叫张三。所以我们说张三这个人的角色先是学生,后是老师。

四.文件类型和访问权限

我们可以使用ls -l 指令来查看当前目录下所有文件的属性,一个文件的属性如下

1.文件类型

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

文件类型很多,我们只需记住普通文件和文件夹的表示符号就可以了。

2.基本权限

你能对一个文件做什么呢?无非就是读,写,执行,所以基本权限也就是这三种

i.读:Read对文件而言,具有读取文件内容的权限;对目录来说,具有查看该目录下文件信息的权限

ii.写:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

iii.执行:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.“—”表示不具有该项权限

针对helloworld这个文件,它的文件类型是- ,即普通文件,拥有者的权限是rw- ,(可读可写不可执行)所属组的权限是r-- (可读不可写不可执行), 其它人的权限是r--(可读不可写不可执行)。

顺便提一下,Window中一个文件能否被执行要看它的文件名后缀,例如exe就是可执行文件。而在Linux中一个文件能否被执行取决于你有没有x权限,与后缀名无关。

注意我的用词,Linux系统本身不按照文件后缀来区分文件类型,不代表上面的软件不认后缀哟。例如用gcc编译一个txt文件就不行。

现在正式提出问题:dir这个文件的权限是什么?

答:对于helloworld这个文件,拥有者具有rwx权限,所属组具有rwx权限,others具有rx权限,没有w权限

前文说过,要描述一个文件权限需要包含两个要素,who?拥有者,所属组和others。what?r、w、x

五.文件访问权限的相关设置方法

1.chmod

功能:设置文件的访问权限

chmod u+x test.txt

给test.txt文件的拥有者加上x权限

chmod u-x,o+w test.txt

给test.txt文件的拥有者取消x权限,others加上w权限 

chmod a-w test.txt 

给test.txt的拥有者,所属组和其他人都取消w权限 

注意:只有文件的拥有者和root才能改文件的权限。

root虽然是others,但它是不受权限约束的。即使是文件的拥有者也是受到权限约束的,也就是说,当拥有者把自身的w权限取消时,也不能向文件中写入内容,但这样做是没有意义的,因为自己能把权限改回来。

还有一个问题,虽然我是拥有者,w权限被取消了,但我同时还是所属组的组长啊,假设所属组是有w权限的,那我能否向文件中写入内容呢?也不能。因为一个用户在匹配角色的时候,只会匹配一次,先判断你是不是拥有者,如果是就不再匹配了。

2.chown

功能:改变文件的拥有者

chown zhangsan test.txt

将test.txt的拥有者改为zhangsan

注意:只有root才能更改文件的拥有者

3.chgrp

功能:改变所属组的组长

chgrp zhangsan test.txt

注意:只有root才能更改文件的所属组组长

六.文件权限的八进制表示方案 

前面我们知道,要表示一个文件的权限,需要9个位,每三个为一组,分别表示拥有者,所属组和others的权限,每一位只有两种情况,要么是-,要么是对应的字母(r,w,x)。故我们也可以采用9个二进制位来表示权限,0表示没有对应权限,1表示有。然后将二进制转换为八进制,为什么是八进制呢?因为三个二进制为一组,故采用这种八进制方案。

例如

拥有者:rw-     110      6

所属组:rw-     110      6

其它人:r--      100      4

文件权限用八进制方案表示:664

故我们也可以这样使用chmod指令

chmod  664  test.txt

七.文件的默认权限

 

 这是新创建的三个目录和普通文件 ,权限没有经过任何修改,可以发现目录的默认权限是775,普通文件的默认权限是664。

要弄清楚背后的逻辑,需要知道三个点

1.目录的起始权限是777,普通文件的起始权限是666

那为什么目录的的权限不是777呢?别着急,往下看

2.Linux系统中存在权限掩码

什么是权限掩码呢?我们可以用以下指令来查看

umask

默认的权限掩码是0002,我们还可以自己设置掩码

umask 0000

 

将掩码更改后我们再创建目录和文件

 结果发现目录的默认权限变成了777,普通文件变成了666,默认权限变了!!!所以我们可以大胆猜测,文件的默认权限受到起始权限和权限掩码影响 。那么具体是如何影响的呢

3.默认权限 = 起始权限 去掉 权限掩码中出现的权限

例如0002这个权限掩码,第一个0是八进制的前缀,所以这是一个八进制数002,转换为二进制就是000 000 010,故others的w权限最终会在起始权限中去掉。而目录的起始权限是111 111 111,经过掩码作用就是111 111 101,即八进制的775。

归纳为一个表达式就是最终权限 = 起始权限 & (~umask)当然既然有位运算,那么肯定要先将八进制转换为二进制。

八.目录权限的特殊说明

1.进入一个目录需要什么权限?

答:需要该目录的x权限

2.目录的r权限是什么?

答:查看当前目录的文件列表(ls指令)

3.没有目录的x权限,但是有r权限,能拥ls指令查看文件列表吗?

答:不能,没有x权限则无法对目录执行任何命令,甚至无法进入

4.在一个目录下创建文件需要什么权限?

答:需要该目录的w权限

5.一个文件的属性能否被查看由什么决定?

答:由文件所属目录的权限决定!!!

 6.一个文件能否被删除本身能决定吗?由谁决定?

答:不能,由文件所属目录与对应账户是否有w权限

辨析上面几个问题后,我们就能理解为什么要把目录的起始权限设为rwx了,你既然创建了一个目录,肯定要能进入吧,要能创建文件吧,还要能查看文件列表吧,不然你创建它干什么呢?

但同时有一点令人匪夷所思,我们发现删掉一个文件与该文件无关。假如你创建一个文件,把others的所有权限都取消了,正当你以为高枕无忧时,却发现文件被删除了,因为你忘记更改了目录的权限。所以为了防止这种文件被others随意更改的情况,默认的掩码就是0002,无论是目录还是普通文件,都把others的w权限去掉。

还有一个小细节,每个用户的家目录都只对自己开放了权限,其它用户是无法访问的

所以,一般而言,不同的账号是不会在同一目录下的,上面那种others删除文件的情况几乎不会发生 

九.粘滞位

1.粘滞位应用场景

上面说的是一般情况,但总会有特殊场景。

张三和李四现在想要合作开发,共享文件,但是文件放在哪里呢?张三的家目录李四进不去,李四的家目录张三进不去。这时root说,我在根目录下创建了一个目录dir,你们都把文件放在里面吧。于是张三和李四都在dir目录下进行开发,也能互相查看对方的文件。

突然有一天,张三不想让李四看到自己写的内容,于是他把自己文件others的所有权限给关闭了,但是又害怕李四生气把文件给删了,所以张三找到root,让他把李四对dir目录的w权限取消,root答应了。

第二天,李四来找root,你把我的w权限关了,我还怎么新建文件啊!root这下犯了难,不知道该怎么办。

上面问题的根源在于文件能否被删除不由文件本身的权限决定,“毁灭你与你无关”。你取消别人权限可以保证信息不回泄露,但别人不高兴了可以随时删你,但更改目录权限又会引发别的问题,这样显然不合理。

针对这种共享场景下的问题,LInux新增了一个权限,叫做粘滞位

2.粘滞位的使用方法

共享文件时,大家可以不给对方设置权限,但是可以互删文件,这是有bug的。给共享目录添加了粘滞位后,该目录下的文件只能由以下的人删除:

  1. 超级管理员
  2. 文件拥有者
  3. 目录拥有者

 chmod +t dir

给dir目录添加粘滞位 

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

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

相关文章

高等数学教材重难点题型总结(四)不定积分

难点在于量级,不定积分一定要多练多见才能游刃有余~ 1.利用求导公式验证等式 2.计算不定积分

WebRTC中 setup:actpass、active、passive

1、先看一下整个DTLS的流程 setup:actpass、active、passive就发生在Offer sdp和Anser SDP中 Offer的SDP是setup:actpass,这个是服务方: v0\r o- 1478416022679383738 2 IN IP4 127.0.0.1\r s-\r t0 0\r agroup:BUNDLE 0 1\r aextmap-allow-mixed\r amsid-semanti…

csharp开发日常之Activator.CreateInstance构造函数生成实例

目录 一、需求:项目中经常需要动态生成对象,而非采用new关键字方式,例如Java里面的根据类全限定名反射生成对象实例。 二、方案:采用Activator.CreateInstance 三、代码例子演示 1、代码结构 2、创建接口 3、创建IObjcet接口的…

索尼 toio™ 应用创意开发征文|教育与游戏的完美融合:toio™核心Q宝引领数字学习新潮流

引言 在科技与创意碰撞的时代,索尼toio™核心Q宝不仅是一款吸引人的娱乐玩具,更是一种融合编程与教育的创新平台。我一直寻找一个能够将编程和教育完美结合的方式,而toio™给了我这个机会。接下来,我将详细介绍如何用toio™开发一…

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书

文章目录 一、前言二、什么是 DDoS 攻击?三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类?5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …

无需公网IP,实现外网远程访问管家婆ERP进销存系统的方法

文章目录 前言 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 前言 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件,历经十余年市场的洗礼,深受广大中小企业的欢迎&#xff…

跟着视频学习java,发现swagger打不开?怎么解决

前因 现在到处都在卷java,不会java的前端不是好前端。 这不,周围有前端同学开始学java了。 昨天他突然找我问说引入依赖,配置之后swagger打不开了。 分析过程 1、 查看他的swagger版本,让他试了对应路径/swagger-ui/index.h…

直饮水表和智能水表有什么区别?

直饮水表和智能水表是两种不同类型的水表,它们的主要区别在于功能和应用场景。下面小编整理了这两款水表的一些知识点,一起来看下吧! 直饮水表是一种特殊的水表,主要用于家庭和公共场所的直饮水系统中。它可以实时监测水的流量,帮…

JavaScript 之 Symbol 数据类型

一、简介 ​ symbol类型是ES6新引入的一种基本数据类型,该类型具有静态属性和静态方法。其中静态属性暴露了几个内建的成员对象,静态方法暴露了全局的symbol注册。 ​ symbol类型具有以下特点:① 唯一性:每个symbol值都是唯一的…

大厂面试题之影响项目测试进度的因素有哪些?如何解决?

测试进度,是领导层非常关心的问题,测试同学把控好项目测试进度,必然能让面试官为你加分。 在日常测试过程中,要把控好测试进度,了解影响测试进度的因素是必不可少的,那么,影响项目测试进度的因…

【牛客刷题】bfs和dfs (二叉树层序遍历、矩阵最长递增路径、被围绕的区域)

二叉树层序遍历 vector<vector<int> > levelOrder(TreeNode* root) {// write code herevector<int> res;vector<vector<int>> result;if (root nullptr) return result;queue<TreeNode*> que;que.push(root);while (!que.empty()) {int …

LeetCode刷题笔记【25】:贪心算法专题-3(K次取反后最大化的数组和、加油站、分发糖果)

文章目录 前置知识1005.K次取反后最大化的数组和题目描述分情况讨论贪心算法 134. 加油站题目描述暴力解法贪心算法 135. 分发糖果题目描述暴力解法贪心算法 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【23】&#xff1a;贪心算法专题-1&#xff08;分发饼…

Java8实战-总结19

Java8实战-总结19 使用流映射对流中每一个元素应用函数流的扁平化 使用流 映射 一个非常常见的数据处理套路就是从某些对象中选择信息。比如在SQL里&#xff0c;你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 对流中每一个元素应用函数 流支持…

回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现PCA-BP主成分降维算法结合BP神经网络多输入单输出回…

java八股文面试[设计模式]——行为型模式

目录 策略模式 观察者模式 责任链模式 模板方法模式 状态模式 行为型模式关注的是各个类之间的相互作用&#xff0c;将职责划分清楚&#xff0c;使得我们的代码更加地清晰。 策略模式 策略模式太常用了 下面设计的场景是&#xff0c;我们需要画一个图形&#xff0c;可选…

leetcode872. 叶子相似的树(java)

叶子相似的树 题目描述递归 题目描述 难度 - 简单 leetcode - 872. 叶子相似的树 请考虑一棵二叉树上所有的叶子&#xff0c;这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子&#xff0c;如上图所示&#xff0c;给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果…

cuda显存访问耗时

背景&#xff1a; 项目中有个数据量大小为5195 * 512 * 128float 1.268G的显存&#xff0c;发现有个函数调用很耗时&#xff0c;函数里面就是对这个显存进行128个元素求和&#xff0c;得到一个5195 * 512的图像 分析 1. 为什么耗时 直观上感觉这个流程应该不怎么耗时才对&a…

TDengine 官网换了新“皮肤”,来看看这个风格是不是你的菜

改版升级&#xff0c;不同以“网”&#xff01;为了更好地服务客户&#xff0c;让大家能够更便捷、清晰地了解我们的产品和功能&#xff0c;我们决定给 TDengine 官网换个新“皮肤”~精心筹备下&#xff0c;新官网终于成功与大家见面啦——https://www.taosdata.com/。TDengine…

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3稳定性

在当今的互联网时代,稳定性是所有系统和应用程序的关键要素。无论是大型数据中心还是个人电脑,稳定性都是保证正常运行和用户体验的基础。在这个背景下,我们来谈谈 Milvus,一个开源的向量数据库,它在 2.1.0 版本中引入了内存多副本的概念。 Milvus 是一个开源的向量数据库…

9:00面试,9:08就出来了,问的实在有点变态

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降30%,…