【Linux常见指令以及权限理解】权限理解(4)

news2025/4/18 10:15:35

写在前面

这篇文章,我们来聊一聊Linux下权限相关的知识,我打算从这几个方面展开:

1. 认识Linux下用户的分类

2. 什么叫做权限

3. 没有权限会是什么样子

4. 如何修改权限

5. 其它重要的问题

那么废话不多说,我们现在开始。

目录

写在前面

1. Linux下用户的分类

如何切换用户

如何提高用户权限

2. 什么叫做权限

3. 如果没有权限是什么样的

普通文件:

目录文件:

4. 权限如何修改

6. 第一个问题:文件的起始权限

7. 第二个问题:目录的权限

8. 第三个问题:粘滞位

总结

写在最后:


1. Linux下用户的分类

Linux下有两种用户:

1. root(超级用户)

2. 普通用户

我们adduser添加的就是普通用户。

他们有什么区别呢?

root 基本不受权限的约束,而普通用户受权限的约束。

如何切换用户

我们如何切换两个用户呢?

Linux下所有的用户都有自己的密码,

我们可以通过su/su- 指令切换用户:

例:(切换到root用户)

 输入的密码是root的密码,

另外,su- 指令是切换到root的根目录下,su 还是在当前的目录下面。

我们可以用Ctrl d这个快捷键回到之前的用户:

当然,直接输入 exit 也是一样的效果。

如何提高用户权限

我们可以通过sudo指令可以临时提升用户的权限,(持续时间可能十几分钟不等)

例:

 我们可以观察到,在指令前面加上sudo,用户就临时切换成了root

这里输入的密码是当前用户的密码,

你可能会问:为什么我输入我的用户密码却能获得root的用户权限?

实际上,我们需要将该用户添加到系统信任的白名单才能享受sudo指令,

至于如何添加,我会在讲Linux工具的时候介绍,如果有兴趣的话,可以自己上网搜教程。

2. 什么叫做权限

权限,其实就是一件事情 是否允许你去做。

权限的认证是身份还有事物的属性,我们拿一个文件举个例子:

比如说我们刚刚建立的test.txt文件和目录:

 最前面的这个:

 是代表文件的类型:

- 代表普通文件(文本、可执行文件等等)

d 代表目录文件

b 代表 块设备文件(磁盘文件)

c 代表字符设备文件(键盘、显示器)

p 代表管道文件(用来通信的)

我们这里主要讨论普通文件和目录文件。

补充:(文件类型)

Linux系统中的文件后缀名是没有直接意义的(系统内核不靠这个区别文件类型)

(注:只是系统内核,不代表Linux下的一些软件他不需要后缀名)

(比如说gcc编译器,他编译的时候还是需要你是.c的后缀名)

我们继续来看权限:

Linux中表示文件权限的是这个地方的字符,

他们三个为一组,分别代表拥有者,所属组,other的权限,

这些字符的意思分别是:

r 代表读权限

w 代表写权限

x 代表执行权限

- 代表没有这个位置的权限 

另外:

 文件的这两个地方分别代表的是该文件的拥有者和所属组。

3. 如果没有权限是什么样的

普通文件:

这里,我们重定向了一句话进test.txt文件中:

并查看了test.txt 文件的内容,

如果这个文件没有写权限会如何?

我们发现当该文件没有写权限的时候,我们的追加重定向就失败了

没有追加这句话进文件,Permission denied 了。

如果没有读权限呢?

我们可以发现,cat 指令也用不了了,无法读文件了。 

当我们给test.txt 加上可执行权限:

我们甚至也可以执行该文件,当然,啥事都不会发送就是了。

这就是文件的权限。

如果我们用root用户操作呢?

来试试:

 

我们可以看到,这个文件啥权限都没有

但是root想干啥就能干啥,这就是超级用户。

目录文件:

 我们接下来测试一些目录文件的权限:

我们发现,当目录没有可执行权限的时候,我们就进不去了

 如果没有写权限呢:

我们发现目录文件没有写权限的话,我们在目录里无法创建新文件

如果没有读权限呢:

 

 我们发现没有读权限,可以查看文件的内容,

但是我们无法查看该目录里面有什么文件。

当然,root 用户无论如何,什么功能都能使用。

这里补充一点,other的权限就是指其他用户来访问我的文件是后的权限。

4. 权限如何修改

我们可以使用chmod指令

直接看例子:

给我自己增加读权限:(chmod u+r 文件名)

给所属组增加写权限:(chmod g+w 文件名)

 给other增加可执行权限:(chmod o+x 文件名)

通过这三个例子,

我们可以观察出:u就是用户,g就是所属组,o就是other,+就是添加权限

取消所有人的权限:(chmod a-rwx 文件名)

 

总结:a 是所有人,-就是取消权限。

补充,我们还能这样理解权限:(通过八进制的形式)

实际上,每个位置的权限都是用二进制来表示的:

比如:(我们的test.txt文件)

他的权限现在是 rw- rw- r--

用二进制表示就是:110 110 100

转换成八进制就是:6 6 4

例:(通过数字修改权限)

 我们当然也可以:

这就是权限的修改,

实际上我们还可以修改文件的拥有者和所属组,

分别是:

chown + 用户名 + 文件名

chgrp + 所属组名 + 文件名

选项 -R 可以修改目录。

这里我就不演示了,感兴趣的话可以自己去试试。

6. 第一个问题:文件的起始权限

为什么我们一创建文件,他的权限是这样的?

普通文件是:664

目录文件是:775

实际上,Linux系统给普通文件的起始权限是666

而默认给目录文件的起始权限是777

而Linux中存再权限掩码,我们可以用umask查看:

666的权限是:110 110 110(666)

而权限掩码是:000 000 011(0002)

最终的权限是:110 110 100(664)

我不废话,直接说计算规则:

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

补充,当然,我们也可以自己修改umask:

我们可以看到,改了umask 之后,起始权限确实变化了。

 7. 第二个问题:目录的权限

前面我已经介绍了目录权限相关的操作和现象,

现在有个场景:

  

有两个用户同时在一个公共目录下工作:(在d1目录下)

 xl用户写了个文件,

test 用户可以查看这个文件

 因为这个文件给other开发了读权限:

 那么,如果我们把读权限取消呢?

 这样,test 用户就无法阅读了:

这个时候,test 用户一气之下,想着不给我读是吧,你也别想好过

就想把这个文件删除:

 结果这个文件真的被他删了,

明明这个文件不是test用户的,他却能够删除该文件,

很显然,这样的设计并不合理。

实际上,我们刚刚探索过目录的权限,

目录的权限是:

r 代表我们是否能够查看指定目录下的文件

w 代表我们是否能在当前目录下创建、更改和删除文件

这样一说,你可能会想到,那我么直接将该目录的w权限取消,

被人不久删不了文件了吗?是的,但是你要无法操作文件了。

那我们该怎么办?

8. 第三个问题:粘滞位

为了解决前面出现的问题,我们可以给目录设置粘滞位。

具体是怎么操作呢?

我们添加一个隐藏权限 t 给other,t 其实是一种特殊的 x 权限。

这就叫做粘滞位,

我们来看看效果如何:

xl 用户创建了一个test文件

 我们发现,test 用户已经无法删除这个文件了:

 这就是粘滞位。

实际上,被设置粘滞位的目录只有目录的所有者和文件的所有者才能删除文件。

其实啊,操作系统也提供了一个共享的粘滞位目录在根目录下:

 如果有兴趣的话,也可以去体验一下。

总结

本文基本将权限涵盖的知识点都介绍了,相信你对权限的理解能够更上一层楼。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

PDF怎么转换成Word?将PDF转换为Word的三种方法!

在我们需要将PDF文件转换为Word文件时,有几种方法可以选择。通常,我们在文件传输过程中使用的文件格式是PDF,但如果我们需要对文件进行编辑,就需要将其转换为可编辑的Word格式。下面是几种转换方法的介绍,让我们一起来…

【Python从入门到进阶】Python异常处理

接上篇《18、文件内容序列化和反序列化操作》 上一篇我们学习了文件读取及写入数据序列化和反序列化的操作。本篇我们来学习Python中有关异常(捕获异常、处理异常等)的知识。 一、异常的定义 在编写代码时,我们无法完全掌控程序运行过程中会…

原神服务端建模修改模型贴图(SpecialK)教程

原神服务端建模修改模型贴图(SpecialK)教程 我是艾西,今天跟大家闲聊一下原神建模修改模型等。在一个游戏里开发者会按照自己这个游戏的大方向去运营,而总是有一些小伙伴有不一样的需求,如果是建模拥有独一无二的角色或者是外观装扮等那么艾…

多系统启动U盘Ventory下载、安装、使用

官网链接 Ventoy Ventoy 简介 简单来说,Ventoy是一个制作可启动U盘的开源工具。 有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件直接拷贝到U盘里面就可以启动了,无需其他操作。 你可以一次性拷贝很多个…

OpenCL编程指南-4.4矢量操作符

矢量操作符 如下描述了可用于矢量数据类型或矢量和标量数据类型组合的各类操作符。 算术操作符 算术操作符(加()、减(–)、乘(*)和除(/)),可以作用于内置整数、浮点标量和矢量数…

次郎家书——第一天关于数值计算方法考试后——的一些思考和反思

考试的复盘:传送门:数值计算方法考试复盘 对此次考试的看法: 这次考试考试内容虽然有没复习到的如复合辛普森和复合梯形公式还有最小二乘的推广(这里上课的时候听懂了但是复习的时候嫌麻烦没看原来,结果大题是真的写错了&#…

nuxt 一直报错 http://localhost:24678/_nuxt/

解决: 这个错误可能是由于Nuxt.js应用程序无法正确加载/_nuxt/路径下的资源而导致的。解决这个问题的方法有以下几种: 1.检查nuxt.config.js文件 在nuxt.config.js文件中,检查build.publicPath属性是否设置为正确的公共路径。例如&#xff1a…

UART驱动情景分析-read

一、源码框架回顾 shell读数据,一开始的时候没有就休眠。数据从串口发送到驱动,驱动接收到中断,驱动读取串口数据,这个数据会传给行规程。 行规程获取到数据后,会回显。按下删除就删除一个字符,按下回车&am…

pytorch 测量模型运行时间,GPU时间和CPU时间,model.eval()介绍

文章目录 1. 测量时间的方式2. model.eval(), model.train(), torch.no_grad()方法介绍2.1 model.train()和model.eval()2.2 model.eval()和torch.no_grad() 3. 模型推理时间方式4. 一个完整的测试模型推理时间的代码5. 参考: 1. 测量时间的方式 time.time() time.…

使用qt creator编译zlib

zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使用。 官网:http://www.zlib.net/ 下载zlib源码:http://www.zlib.net/zlib1213.zip 备用地址&#x…

关于使用API接口获取商品数据的那些事

随着电商行业的不断发展,越来越多的企业和个人需要获取各大电商平台上的商品数据。而最常用的方法是使用API接口获取商品数据。本文将为您介绍使用API接口获取商品数据的步骤和注意事项。 一、选择API接口 首先需要了解各大电商平台提供的API接口,目前…

由浅入深理解java集合(一)——集合框架 Collection、Map

Java 提供了一套完整的集合类(也可以叫做容器类)来管理一组长度可变的对象(也就是集合的元素),其中常见的类型包括 List、Set、Queue 和 Map。从我个人的编程经验来看,List 的实现类 ArrayList 和 Map 的实…

华为OD机试 - 查找树中元素(Python)

题目描述 已知树形结构的所有节点信息,现要求根据输入坐标(x,y)找到该节点保存的内容值,其中x表示节点所在的层数,根节点位于第0层,根节点的子节点位于第1层,依次类推;y表示节点在该层内的相对偏移,从左至右,第一个节点偏移0,第二个节点偏移1,依次类推; 举例:…

手把手教你用代码画架构图 | 京东云技术团队

作者:京东物流 覃玉杰 1. 前言 本文将给大家介绍一种简洁明了软件架构可视化模型——C4模型,并手把手教大家如何使用代码绘制出精美的C4架构图。 阅读本文之后,读者画的架构图将会是这样的: 注:该图例仅作绘图示例使…

【入土级】详解C++类对象(中篇)

目录 前言:类的6个默认成员函数 一, 构造函数 1. 概念 2. 特性 二, 析构函数 2.1 概念 2.2 特性 2.3 牛刀小试 三, 拷贝构造函数 3.1概念 3. 2 特点 四, 赋值运算符重载 4. 1 运算符重载 五&#xff0…

网站测试的主要方法

网站测试的主要方法 网站测试是保证网站质量的重要手段,通过对网站进行测试可以及时发现问题并修复,提高用户体验和网站的可靠性。本文将介绍网站测试的主要方法。 1.功能测试:测试网站的所有功能是否正常。通过模拟用户的操作,确…

最新水果FLStudio21中文版下载及快捷键操作教程

任何一款软件,其快捷键永远扮演着至关重要的作用,熟练运用快捷键不仅能够节省时间,提高工作效率,还有助于熟练掌握所使用的软件。作为一款功能强大的音乐编曲软件,FL Studio有着大量的快捷键,这些快捷键在一…

【ArcGIS Pro二次开发】(28):用地图斑导出用地用海汇总表

本工具的作用是将现状用地或规划用地导出Excel格式的用地用海汇总表。 实现这个功能的Arcpy脚本工具我之前已经做过,详见:ArcGisPro脚本工具【8】——用地图斑导出用地用海汇总表 这次试着在ArcGIS Pro SDK中来实现同样的功能。 一、要实现的功能 如上…

【存储数据恢复】H3C存储卷中的数据恢复案例

存储数据恢复环境&故障: H3C FlexStorage某型号存储,25块磁盘组建的RAID5,其中包含一块热备盘。 工作人员误操作将存储设备中原先的2个卷删除,删除之后又使用和删除2个卷同样大小的空间重建了一个卷。用户希望恢复删除的2个卷…

springboot缓存

1. 认识缓存 一级缓存 - 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质 - 使用缓存可以有效的减少低速数据读取过程的次数,提高系统性能 Service public class BookServiceImplCache implements BookService {Autowiredprivate BookDao book…