这里有你不知道的关于Linux中权限的知识
Posted 做1个快乐的程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这里有你不知道的关于Linux中权限的知识相关的知识,希望对你有一定的参考价值。
☀️我们在平常玩电脑的时候,经常会遇到这样的情况,系统报错:您无权限访问该资源。☀️
这就是因为权限的原因而导致的问题,不仅在windows系统中会遇到这样的问题,在我们Linux系统中我们也会遇到这样的情况。
通过对本篇文章的阅读,小编会将Linux中权限的知识掰碎了给大家说明一下,希望这篇文章可以对大家对Linux的学习有所帮助。
Linux权限
Linux权限的概念
1.1 Linux用户分类
各位应该都听说过,Linux是一个多用户操作系统,但许多同学并不知道这个多用户是什么意思,这里的多用户指得是普通用户,我们的Linux下有两种用户:超级用户(root)、普通用户。
☀️超级用户:可以在Linux系统下做任何事情,几乎不受限制。
🌔普通用户:在自己的工作目录下,做有限的事情。
总结:即我们所有的权限是用来限制普通用户的,而我们的超级用户几乎不受限制。在Linux系统中,默认会有一个root,这个用户是必须存在的,安装系统的时候就自动存在了。此外,还需要注意的是:超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
|
|
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权限的理解更深了,如果你有收获,记得给我点个赞,小编会继续努力写更好的文章,让我们大家一起进步。
以上是关于这里有你不知道的关于Linux中权限的知识的主要内容,如果未能解决你的问题,请参考以下文章