Linux权限讲解!

本文详细介绍了Linux中的用户分类(root和普通用户)、权限概念、角色(拥有者、所属组和other)、文件属性(rwx权限)、权限修改(chmod和chown/chgrp)以及默认权限和粘滞位的使用。通过实例帮助读者深化对Linux权限体系的理解。
摘要由CSDN通过智能技术生成

本文旨在讲解Linux中权限相关的知识,希望读完本文,能使读者对linux中权限有更深一步的认识!

在讲解权限之前,我要先给大家介绍一波Linux中用户有哪些?


1.Linux中的用户

Linux中的用户分为两大类,一类是root用户,一类是普通用户,对于root用户而言,其就是超级管理员,没有权限的限制,基本上所有的指令都可以执行。而对于普通用户而言,其权限就受到了一定的限制,部分的指令是无法执行的,比如要执行yum安装一些软件的时候,我们的普通用户就无法执行!那么这时我们可以进行(sudo)提权的操作,让普通用户可以这些指令,在对用户进行提权的时候,我们需要将普通用户加入到sudoers文件中,才能让我们的用户进行提权操作!


2.Linux权限

在讲解了Linux中的用户之后,我们再来进行讲解一下权限的知识。

在讲解权限的时候,我们就不能将人和某件事分开而谈,因为一旦谈及到权限的话,一定要涉及到某个人以及某个事物。例如教师可以在教师餐厅中用餐,校长在校长办公室办公,而学生则没有权限在教师餐厅中用餐,以及教师不能在校长办公室办公!

在谈及权限的时候,我们发现,我们针对的不是某一个人,而是针对的一种角色,以及对一种事物的权限。在linux中的事物一般都指的是我们要操作的文件!所以谈及到权限的时候,我们需要紧紧关注角色,以及文件的属性两大点!

用户担任的角色:

对于linux中的用户担任的角色有:拥有者,所属组,以及other!

1.拥有者:

拥有者,顾名思义,就是一个文件的拥有者,即这个文件时是谁创建的。

2.所属组:

所属组,指的是一个文件包含于那个组,该组可以有一个用户,也可以有多个用户!

3.other

对于other而言,其很容易理解,只要不是一个组的,或者一个文件的拥有者的就是other!


看到了用户担任的角色之后,可能有许多小伙伴会有许多疑惑,为什么要存在所属组呢?其存在的意义又是什么呢?下面我来简单的给大家分析一下为什么会有所属组的存在!

我举一个简单的例子,例如某家it公司,要让多个小组做同一项目,最终从这些小组中挑选一个最好的然后进行上市,假设存在a,b两个小组,那么此时就出现了一些小问题,如果领导想看a小组的进度如何,想看看其代码进展如何,假设没有所属组的话,对于a组而言,领导就是other,如果想要让领导观察进度,那么就不得不把other的权限放开,那么此时的问题就来了,如果other的权限放开了,那么不仅领导可以看见a组的代码,就连b组也能查看了a组的代码,那么如果此时b组查看并抄袭了a组的代码,那么.....,很显然,如果没有所属组的话,会带来一些不必要的麻烦!

文件的属性:

在Linux中,文件的属性分为'r'  'w'   'x',三个权限,下面我们来看一下ls指令来看一下某个文件的属性!

对于上图,我简单的介绍一下,对于第一个zhj,其代表的拥有者,第二个zhj,其代表的是所属组,那么就会有小伙伴问,既然有了拥有者和所属组,那么为什么没有other呢,其实仔细思考一下就可以想出来,other我们可以进行推导得出,对于不是拥有者以及所属组的那剩下的就是other了!

对面前面的10个字符来言,

第一个字符代表的是文件的类型!对于我们的test.c文件,其开头是一个'-',其代表的就是一个普通文件!

Linux中常见的文件类型

下面对于第一个字符的种类,我简单介绍以下几种,这几种就是Linux中常见的文件类型!

1.‘-’

对于‘-’开头的,其一般代表的都是普通文件,源代码,可执行程序,库等!

2.‘d’

对于‘d’开头的,代表的就是一个目录文件!

下面来一个目录文件的例子:

3.'c'

对于‘c’开头的,代表的是一个字符设备文件!

我们可以使用ll /dev/pts*来看一下字符设备文件!

4.'b'

对于‘b’开头的,其代表的就是块设备文件!

我们使用ll/dev/vda查看块设备文件!

5.'l'

对于‘l’开头的,其代表的就是一种链接文件!

对于链接文件而言,我们可以返回到根目录,然后进行ll即可观察到链接文件!

那么如何创建一个链接文件的,我们可以使用ln -s  "加上路径名"   "新的文件名"即可完成链接文件的创建!

6.'p' 

对于‘p’开头的,其代表的是一种管道文件!


既然讲完了Linux中文件的类型了,那么我们再来提一点特别要注意的点:就是,Linux系统区分文件类型不是按照文件后缀进行区分的,而是和我们一个文件具有的权限有关!即 r  w   x这三种属性!那么就有人讲了那是不是就可以随便写后缀了,当然可以,但是我们写的代码都是给人看的,所以我们要对文件后缀名有着良好的习惯!

既然讲到了Linux中 文件类型与后缀无关,那么有些小伙伴就会随意其后缀,然后对一个.txt的文档,进行了gcc,就会发现问题!就会提出问题,不是说Linux中文件和后缀没关系么,那么我的.txt文档为什么不能编译呢?

下面就要着重讲一点:Linux中文件类型与后缀无关,只针对的是Linux系统区分文件,与后缀无关,不代表我们的gcc等一些软件不区分后缀呀!


下面再来分析一波,剩下的9个字符代表的意义吧! 

我们可以三三进行分组,那么这三组分别代表的是拥有者,所属组,以及other的权限! 从上图中可以看出,我们的拥有者和所属组具有rw权限,而other只有r权限,其中“r”代表的是可读权限,“w”代表的是可写权限,“x”代表的是可执行权限!既然了解了这九个字符的意义,那么我们再来进一步进行扩展一些知识吧!

对于上图,我们发现,一个字符位只对应于两种状态,要么是"rwx"中的一种,要么就是一个"-",所以我们可以将其表示为二进制位,用0表示没有这种权限,1代表的是拥有这个权限!所以上图的权限就可以这样进行表示:“110110100”!,又因为三三为一组,所以我们也可以将其改变成三个8进制的数字,用于表示该文件的权限!对于上述的权限也可以用664进行表示!


修改权限

那么既然介绍了这9个字符的意义之后,我们接下来再来介绍一下修改权限的命令吧!

在Linux中我们可以使用chmod进行对权限的修改,加上u/g/o+“rwx” +文件名,进行对一个文件权限的修改!

 可以看出当我们执行命令之后我们的拥有者的x权限也加了上去!

 当我们使用a +rwx的时候,我们可以将所有的权限都加上去! 同理的,如果我们不想要某个角色再拥有某些权限的时候,我们进行“-”   +  “w/r/x ”  +文件名即可!


当然使用这种修改权限的方法也行,我们还有另外一种修改权限的方法,就是我们刚才说的,将一个文件的权限用3个八进制位进行表示即可,我们只需进行chmod +数字+文件即可完成对文件权限的修改!例如!

 

可以看出,当我们输入000时,我们的权限将被全部收回,因为000对应的二进制位九个0,即所有权限都不存在,因为在二进制中,1代表权限的存在!


 修改文件的拥有者/所属组

既然我们可以对文件的权限进行修改,那么我们也可以将一个文件的拥有者以及所属组也进行修改!但是我们需要考虑一下这个问题,当我们将一个文件转交给另一个角色的时候,我们能直接将一个文件转交给人家么?答案是否定的,我们肯定不能未经人家同意将一个文件转交给人家,所以我们需要使用sudo提权的命令进行转交文件!

chown

下面来看一下例子!

可以看出,当我们没有进行提权的时候,我们的命令显然被拒绝了,那么我们使用sudo提权之后我们就可以将一个文件转交给要转交的人了!

 可以看出,当我们进行sudo提权的时候能顺利的进行转交!

chgrp

既然文件的拥有者可以改变,那么所属组也一定能改变,同理,我们只需要将chown改为chgrp即可!!例:

可以看出,我们顺利的将文件的所属组顺利的进行了修改!

那么当我们想把拥有者和所属组同时进行修改呢?

我们只需要使用chmod +"用户名“  : “用户名”   文件名 即可!

例 

 此时我们顺利的进行了修改!


3.默认权限

在Linux中,我们每个文件/目录都对应有默认权限!

对于目录文件而言,其默认权限是777,而普通文件默认权限为666!

下面我们来新建一个目录看一下!

这时,有的小伙伴就会问,你不是说目录的默认的权限是777么,为什么这里的权限是775呢?

很简单,因为Linux中存在着权限掩码,正是有着权限掩码的存在,我们的实际权限才会和默认权限存在出入!下面我们可以通过umask查看一下权限掩码!

 umask

        

对于权限掩码的第一位数字我们不需要关注,我们需要关注的就是其后面三位数字,这三位数字与我们的3位八进制位刚好一一对应!

那么我们的实际权限和权限掩码之间存在着什么关系呢?

我来把二者的关系给大家说一下,大家可以自行验证一下!

实际权限=默认权限&(~umask),

其实很好理解,对于权限掩码中存在的数字,我们最终的实际权限是不能存在的!

例如我们的默认权限是111 111 111    

而权限掩码为               000 000 010 

所以对于权限掩码中为1的,我们的最终权限都不能存在该权限,所以就得出了111111101,即775!


对于我们的默认权限掩码为什么要设置为 002呢?这是因为,一个文件是否能够删除,不取决于该文件,而取决于一个该文件的目录!就是为了防止其他和你在一个目录下的人,删除你的文件,所以给该目录的w权限进行关闭!这就是为什么默认权限掩码为002的原因!

对于一个目录而言,是否能进入一个目录,取决于我们的x权限是否拥有,如果x权限没有,那么就无法进入该目录!


粘滞位

下面再给大家介绍一下粘滞位,假设一个公司要分多组进行开发一个项目,他们存储于一个目录下,对于该目录,其必须用于w权限才能让大家进入目录进行创建写文件,那么如果各组之间又设置对other的权限什么都不开放,而other对此很不满意,于是一气之下将其的文件进行了删除,因为目录的权限w是放开的,所以可以进行删除,那么就会导致很不和谐的问题!那么针对于这种情况,Linux又提出了粘滞位的概念,即我们照常将目录的权限放开,只不过我们此时需要加上一个粘滞位,对于一个文件,如果想要删除他,那么必须是文件的拥有者才有该权限删除该文件!

下面就是粘滞位的表示方式!

这时,我们的文件就受到了保护!

但是在一般情况下,这种情况很少发生,因为一个用户一旦创建,其家目录只对自己的开放,对所属组以及other直接是没有任何权限的,他们根本进都进不来!


至此,关于权限的知识介绍完毕,希望读完本文,能对读者有一定的收获!

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值