这里有你不知道的关于Linux中权限的知识

  ☀️我们在平常玩电脑的时候,经常会遇到这样的情况,系统报错:您无权限访问该资源。☀️
在这里插入图片描述
  这就是因为权限的原因而导致的问题,不仅在windows系统中会遇到这样的问题,在我们Linux系统中我们也会遇到这样的情况。
在这里插入图片描述  通过对本篇文章的阅读,小编会将Linux中权限的知识掰碎了给大家说明一下,希望这篇文章可以对大家对Linux的学习有所帮助。

Linux权限的概念

1.1 Linux用户分类
  各位应该都听说过,Linux是一个多用户操作系统,但许多同学并不知道这个多用户是什么意思,这里的多用户指得是普通用户,我们的Linux下有两种用户:超级用户(root)、普通用户。
    ☀️超级用户:可以在Linux系统下做任何事情,几乎不受限制。
    🌔普通用户:在自己的工作目录下,做有限的事情。
  总结:即我们所有的权限是用来限制普通用户的,而我们的超级用户几乎不受限制。在Linux系统中,默认会有一个root,这个用户是必须存在的,安装系统的时候就自动存在了。此外,还需要注意的是:超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

图1 普通用户
图2 超级用户

1.2 Linux用户切换
  我们知道了Linux中的用户分为普通用户和超级用户,那么两个用户之间应该如何进行切换呢?下面小编来带各位了解这部分内容。
    su - 回车 :输入root密码,会从普通用户切换到超级用户
    ctrl + d :从超级用户返回普通用户,或者是logout、exit也可以完成
  如果开始进入的是root用户,想切换到普通用户:
    su - 普通用户名 : 即可切换到普通用户
  总结: root切换普通用户,不需要输密码,不需要别人同意,但是普通用户切换到root需要输密码。

1.3 补充
  a:当我们想要给普通用户修改密码时,在普通用户下进行passwd操作是不行的,像更改密码这种操作必须是root用户才具备的权限,所以我们有两种方法:
    a-1:su - 切换到root用户,再修改密码
    a-2:sudo passwd 普通用户名,就可以改普通用户的密码了
  b:如果我们想单独提升某一条指令的权限,可以给指令带上sudo
  c:所以到底什么是权限呢?
    权限本质就是一件事情是否允许别人做。
    比如:一个file文件,是否允许xd或者root查看,这就是是否允许别人做,其次,这个文件本身
       是否具有具有rwx的各种属性。

Linux权限管理

1、文件访问者的分类

  文件的访问者有三种分类:
    a:文件拥有者(u-User)
    b:文件所属组(g-Group)
    c:其他人(o-Other)

2、文件权限属性

  r:读取权限;w:写入权限;x:可执行;-:无权限
  r-Read:对文件来说,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
  w-Write:对文件来说,具有修改文件内容的权限;对目录来说,具有删除移动目录内文件的权限。
  x-Execute:对文件来说,具有执行文件的权限;对目录来说,具有进入目录的权限。

3、文件类型

-:普通文件–>文本、可执行程序、库等等
d:目录
c:字符文件–>显示器、键盘等
b:块设备–>磁盘等
l:链接文件
p:管道文件

4、文件属性(事务属性)

  在我们进入一个目录的时候,我们使用ll命令,来显示该目录下文件的详细信息,如图:
在这里插入图片描述  我们通过ll指令,来获得文件的详细信息,包括文件的属性、拥有者、所属组、文件大小、创建时间、文件名等,在上图中我们可以观察到这些信息。总结来说上面图中总共有9列信息,第一列总共具有10个字符,表示文件的属性;第二列表示该文件的标识码;第三列表示该文件的拥有者;第四列表示该文件的所属组;第五列表示该文件的大小;第六七八列表示该文件创建的时间;第九列表示该文件的文件名。

  下面我们分别来讲解文件的属性信息。

4.1 文件类型
  在第一列中的10个字符中,第一个字符表示的是文件的类型,关于文件类型的知识我们在第3节中已经给出,所以上图中的文件中,除了第二个文件属于目录文件,其余皆为普通文件。
  为什么Linux中要以第一列中的第一个字符来区分文件类型呢?
  答:对Linux操作系统来说,文件类型和后缀无关,只跟第一列字符有关(比如生成一个a.out可执行程序,将其mv为a.txt、a.exe仍可正常运行)。但是对Linux上的软件来说,不是的,比如gcc a.out可以编译通过,gcc a.exe就无法正常通过,显示文件格式不认识。所以我们在创建文件的时候,还是希望大家把文件后缀名带上,这是为什么呢?因为符合我们的windows使用习惯,并且直观上容易识别,方便阅读。

4.2 文件权限
在这里插入图片描述
  还是参考上图数据,除了第一列是文件的类型之外,剩下的9个字符是跟权限有关,剩下的9个字符,3个为一组,依次对应拥有者、所属组、other。

r:读取权限;w:写入权限;x:可执行;-:没有对应权限

  那么如何阐述一个文件的权限?对于file2.txt文件来说,拥有者所有的权限是可读可写没有可执行,所属组所有的权限是可读可写没有可执行,other所有的权限是只读
  -:没有对应权限,怎么理解对应这两个字呢?
  - - - 三个字符对应的权限也是对应的,第一个-是表示:是否有读权限,如果有就是r,如果没有就是-;第二个-是表示:是否有写权限,如果有就是w,如果没有就是-;第三个-是表示:是否有执行权限,如果有就是x,如果没有就是-。所以对应是读写可执行中的其中一个。

4.3 三种角色和两个用户之间的关系
  A:我们有文件访问者三种分类:拥有者、所属组、其它;同时Linux具有普通用户和超级用户两种类型的用户,他们中间存在什么关系呢?
  答:拥有者、所属组、other相当于角色,而我们的root、普通用户是人,要扮演某种角色,即root和普通用户可以充当拥有者,也可能充当所属组,也可能充当other。

  其中,拥有者和other是好区分的,一个文件不是属于拥有者就是other。

  B:为什么要有组的存在?
  答:比如有组A和组B同时开发一款软件,组A中的小王写的代码肯定不想让组B中的小李看到,如果只有拥有者和other的话,小王只能看到自己的代码,其他任何人包括同组中的人,谁也看不到。组A的组长想审阅代码,也是没有权限的,如果放开了,那么组B的小李也是可以看到的,所以我们一定需要权限,让other看不到,让同组的人能看到,包括自己。想让谁看到,添加到组内就可以。 这样一个文件,除了other,自己和组内的所有人都有权限查看。
  结论:为什么要有所属组:更灵活的进行权限配置,满足团队协作。

5、修改文件权限(chmod)

  修改文件权限需要的指令是chmod。对于指令的修改,我们分单个人单权限和多个人多权限给大家举例说明,其它情况依次推测规律即可。
   A:单个人单权限操作:
    chmod u-r file.txt = 更改file.txt中user(拥有者)的权限,-r去除其可读权限,变为不可读,即第一个位置从r变为-
在这里插入图片描述
    chmod u+x file.txt = 更改file.txt中user(拥有者)的权限,+x给其增加可执行权限,变为可执行,即第三个位置从-变为x
在这里插入图片描述

    chmod u-rwx file.txt = 去掉file.txt中user(拥有者)的权限,-rwx去掉其所有权限
在这里插入图片描述

  这里需要注意的是,具备可执行权限,并不代表这个文件可执行,因为一个文件可执行,代表这个文件内部必须得有二进制或者脚本程序。
  另外:更改所属组的权限,是g;更改other的权限,是o

  B:多个人多权限操作:
  chmod u-r,g+wx file.txt = 更改file.txt中user(拥有者)和group(所属组)的权限,-r去除user的可读权限,+wx给group增加可写可执行权限
在这里插入图片描述
   C:默认情况为所有人:
  如果没有指明给那个角色加权限,默认给所有人都加权限。
  chmod +x file.txt = 给file.txt的所有角色加上可执行权限
  chmod a+x file.txt = 也是给所有角色加可执行权限
在这里插入图片描述

6、文件权限的数值表示法及修改

  上面所说的文件权限r、w、x,以及修改权限使用的u、g、o是字符表示法,对于文件权限的表示,我们还有数值表示法。
  在显示更多文件属性的第一栏,除了第一列表示文件类型之外,剩下的9个字符3个为一组分别表示拥有者、所属组和other的权限,每3个里面对应位置按顺序分别代表:是否可读、是否可写、是否可执行。那么我们能否将这三个—位置看作三个比特位,其中比特位具体的位置仍代表该位置所具有的权限,比特位为0或者1,代表是否具有此权限。比如:111代表可读可写可执行,110代表可读可写不可执行。 3个比特位具有8种状态,把其看作8进制(0-7;000-111),把三个组都看成8进制后,可以根据三种角色得到3个8进制数字,此时更改权限的操作就可以用数字代替。
在这里插入图片描述
  chmod 000 file.txt = 将file.txt文件的拥有者权限改为000,所属组权限改为000,other权限改为000,每一组中的每一位对应的0和1代表是否具有对应权限
在这里插入图片描述

  chmod 656 file.txt = 将file.txt文件的拥有者权限改为110,所属组权限改为101,other权限改为110,每一组中的每一位对应的0和1代表是否具有对应权限
在这里插入图片描述

7、修改文件所属角色

  对于三种角色修改文件和目录的权限,以及单角色多角色修改已经掌握,那么能不能修改文件三种角色对应的人呢?答:a:chown = 修改拥有者
  chown root file.txt = 将file.txt的拥有者从xd改为root(目前只有xd和root两个人),但是会报错,显示操作不允许
  sudo chown root file.txt = 输入root密码后,操作完成
在这里插入图片描述

b:chgrp = 修改所属组
也是需要+sudo的,sudo后输入密码,一段时间内sudo是不需要再输入的
在这里插入图片描述

c:没有更改other的命令

d:同时修改多个角色
  chown xd:xd file.txt = 将file.txt的拥有者和所属组改为xd
在这里插入图片描述

8、粘滞位

  root拥有者的文件,对于xd来说是other,我们设置other权限为- - -,即不可读不可写不可执行,但是我们可以删除,如何避免呢?
在这里插入图片描述

  法一:我们将root的这个文件所在的目录,这个目录还是xd属于拥有者,更改其拥有者权限,-w设置为不可写,那么xd就不能作为other删除root拥有者的文件了。
在这里插入图片描述
  法二:设置粘滞位
    粘滞位是对目录进行设置的!!!粘滞位是对other进行设置的!!!!
    chmod +t 目录 = 给目录加上了粘滞位,作为other就不能删除目录里面属于所属组和拥有者的文件

  比如目录test是root,test目录下对拥有者、所属组、other都是rwx,然后在xd用户下进入test目录下创建xd拥有者的文件,利用sudo 创建root拥有者的文件,然后此时xd对于test目录来说是other,但是因为test目录对于other是rwx,所以xd可以在该目录下创建,删除所有拥有者的文件,但是当我们给test目录添加粘滞位后,xd用户进入test目录,就不能删除拥有者的文件了,当然可以读写,但是没有权限进行删除了。

当一个目录被设置为粘滞位,则该目录下的文件只能由:
a:超级管理员删除
b:该目录的所有者删除
c:该文件的所有者删除

💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛💛
💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙💙
❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️
  本篇文章就讲到这里,不知道亲爱的小伙伴有没有对Linux权限的理解更深了,如果你有收获,记得给我点个赞,小编会继续努力写更好的文章,让我们大家一起进步。

在这里插入图片描述

  • 26
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做1个快乐的程序员

感谢支持,一起加油努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值