Linux中的权限

本文详细介绍了Linux系统中的权限机制,包括shell的作用,用户(root和普通用户)的区别,权限的概念(角色和属性),以及如何使用chmod、chown和sudo进行权限更改。特别关注了目录权限、粘滞位的设置,旨在帮助读者理解和管理Linux系统中的权限设置。
摘要由CSDN通过智能技术生成

大家好,我们在前几篇文章中讨论了Linux中一些常用的指令,今天我们来讨论下一个问题,那就是Linux中的权限问题

01:前言,shell命令与运行原理.

对于Linux操作系统,狭义上指的就是Linux内核,广义上指的是Linux内核+对应的配套程序,我们在Linux系统中操作时,具体过程如下,外壳程序将我们用户输入的指令解释传递给内核,内核执行命令,得到结果,将结果通过外壳传递给用户,这个外壳程序在Linux中叫命令行解释器,也就是shell,那问题来了,我们为什么不直接与内核打交道,而是要借助外壳程序接触到内核呢?

因为我们不擅长直接与操作系统内核打交道,所以必须需要一个中间人来帮我们,这个中间人就是外壳程序。shell外壳的作用:解释命令,保护内核.

注意,shell外壳是对所有命令行解释器的统称,具体的shell有bash,sh,图形化界面等.

02:Linux中的用户

从用户的角度来说,Linux中有两类用户:root用户和普通用户,其中,root账号又叫超级管理员,从名字就能听出来,是最“厉害”的用户,root账号几乎可以在Linux系统中做任何事情,而普通账户只能做部分事情,在做一些事情时需要得到root账号的同意.

就跟我们使用QQ,微信一样,Linux中root和普通账号是可以切换的.

从普通账号切换为root账号,使用su命令
在这里插入图片描述
如图所示,当我们想使用su命令切换为root用户时,系统会让我们输一个密码,这个密码是啥密码?是普通用户的密码还是root的密码?当然是root的密码啦,你想想,我用普通用户的密码就能切换成root账号,那这不乱套了吗.我们还输入了su-指令,这个指令是重新登录root账号

从root账号切换成普通账号,也是使用su指令,但这个过程中不用输入任何密码,直接就能切换.
在这里插入图片描述
这个时候有个问题,我是一个卑微的普通用户,我有一条指令必须是root账号才能实现,我能不能短暂的拥有root账号的权限?
大方的root用户说:可以,我允许你使用sudo指令进行提权,暂时拥有我的权限
在这里插入图片描述
在我们使用sudo时,发现也需要输密码,但输的不是root账号的密码,而是普通账号的密码.

这时,我们机智的朋友似乎发现了不对劲的地方,哎,我用sudo进行提权,输入的密码不是root账号的,而是自己的,自己的密码我可是一清二楚的,这不是意味着,我能用自己账号的密码用sudo来暂时拥有root账号的权限吗?这不乱套了吗?

大家发现了盲点.在这个过程中,我们忽略了一件事,那就是我们默认sudo指令一定是无条件运行的.但事实并未如此,只有root用户将普通用户添加到一个名为sudoers的文件夹中,普通用户才能使用sudo指令

03.权限的概念

我们前面说了这么多,终于开始说权限了。

其实,"权限“的概念我们在日常生活中接触的非常多,比如,某视频平台上架了一部你非常喜欢的电视剧,你兴冲冲的打开观看,却发现弹出一行字:该电视剧只支持VIP用户观看.此时你只是个普通用户,不是VIP,所以,我们此时没有观看该电视剧的权限.可以说权限这个概念在我们的生活中无处不在,那么在Linux中的权限到底是什么呢?

所谓权限,就是一件事能否去做,们讨论权限主要分为两方面,一方面是角色,即一个事情允许被谁做,(拥有者,所属组,other),另一方面是事物属性,如r,w,x(读,写,执行)

大家别急,下面为大家详细介绍,我们先使用ll查看一个文件的信息.
在这里插入图片描述
我们观察一下这个文件信息,其中0是文件大小,0后面的Jan 19 08.47是修改日期,log.txt是文件名,这些我们可能一眼就看出来了,但是前面的那些,什么杠,rw,还有两个root是啥?

  • 我们的root用户与普通用户充当的角色是拥有者,所属组,other中的一个
  • 所属组是多个用户的集合,特殊情况下一个所属组可以只有一个用户,用组长的名字来对组进行命名
  • 为什么要有所属组?假如没有所属组。小A在一个项目上写了一段代码,他的领导想看,目前这个代码只有拥有者小A能看,为了让领导来看,只能开放other权限,这样一来,领导是能看了,但是项目组之外的人也能看了,很不好。于是小A把自己和领导拉到了一个组里,这样领导能看了,开发进度也不会泄露。所属组的使用很好的解决了团队的权限管理问题。
  • 文件属性里为啥没写other是谁?拥有者和所属组是确定的,other有很多,不是拥有者,不是所属组,就是other
  • 在Linux系统中,区分文件类型与后缀无关(不意味着Linux上的软件不会区分),1.那与什么有关呢?2.后缀的意义是什么呢?和文件是否具有可执行权限有关!后缀是可以加的,是给我们人看的,方便识别文件类型
  • 我们用第一列的第一个字符来区分文件类型,第一个字符是-,文件类型为普通文件,源代码,可执行程序,库等第一个字符是d,代表是目录文件第一个字符是c,是字符设备文件(显示器,键盘,就是字符设备文件,操作的基本单位是字符),第一个字符是b,是块设备文件(如磁盘)l,链接文件,p,管道文件
  • 第一个字符搞明白了,我们看其他几个字符,剩下9个字符,我们三三划为一组,以上面的文件为例,为rw-,r–,r–。第一个为拥有者权限,第二个所属组权限,第三个是other权限一个文件的最大权限是rwx,如果没有r,写成-wx,没有x,写成rw-,没有wx,写成r–,没有的权限用-代替。

04.权限的更改

权限不是一成不变的,是可以更改的,使用chmod指令
(一般用户不能修改权限,只能使用root账户修改)
这个我们直接用例子说更易懂

删除file文件中拥有者的w权限
在这里插入图片描述
(u,g,o,a分别代表拥有者,所属组,other,以及全部用户)

给file文件中的拥有者,所属组w权限.
在这里插入图片描述
在这里插入图片描述
这两条命令同理.

05.八进制数字表示权限

我们除了用rwx来表示权限,也可以用1,0来表示权限,1代表有,0代表无
rw-:110(二进制)->6(8进制)
r–:100(二进制)->4(8进制),也就是说,6代表rw-,4代表r–
即可以用八进制数字来表示权限.
在这里插入图片描述

06.更改拥有者,所属组,other.

更改拥有者,使用chown指令
在这里插入图片描述
更改所属组,使用chgrp指令
对于other,拥有者改了,所属组改了,other也就改了,不用对other进行额外操作

07.权限掩码

不同系统的默认权限可能不同,在我自己的系统中,目录文件的起始权限是777,普通文件的起始权限是666.
在这里插入图片描述
但在上图中我们发现,目录文件dire1的权限是775,普通文件的test1的权限是664,这是为什么呢?这是因为权限掩码的存在
查看权限掩码:使用umask指令
在这里插入图片描述
权限掩码的形式是8进制,第一个0是八进制前缀,故0002转化为2进制为000 000 010,我们目录文件的起始权限为777,转化为二进制为111 111 111,对于权限掩码,我们有这样的规则:凡是在权限掩码中出现的权限,最终都要在起始权限中去掉(1表示出现),所以,我们目录文件777的初始权限为111 111 101,也就是775

所以我们得到,最终权限=起始权限 去掉 权限掩码中出现的权限

具体算法,最终权限=起始权限 & (~umask)

08.关于目录的权限

进入一个目录,需要什么权限?x权限
对于一个目录来讲,r,w权限是什么意思?
r权限:能否看这个目录里的文件列表? w权限:能否在当前目录新建文件
一个文件一定是属于一个目录的,一个文件属性能否被查看,是由目录的权限决定的,一个文件能不能被删除,由所属的目录与对应账户是否有w权限决定.

09.粘滞位

上面我们提到,只要用户有了目录的w权限,用户就可以删除目录中的文件,而不论这个用户是否拥有这个文件的w权限

这就意味着,张三在该目录下创造的文件,李四也能删,很不对

为了解决这个问题,Linux引入了粘滞位粘滞位只对目录操作,用t表示,是目录的一种属性,跟rwx一样,设置为粘滞位t会替代x)

如果一个目录被设为粘滞位,那就不能随便删了,只有root,该目录的所有者,该文件的所有者能删(要么是root,要么是自己)

在这篇文章中,我们谈到了权限相关概念的理解,如果这篇文章对您有帮助,请点个赞,如有错请在评论区指正,欢迎大家前来交流.

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值