前言

我们在平常玩电脑的时候,经常会遇到这样的情况,系统报错:您无权限访问该资源。

这就是因为权限的原因而导致的问题,不仅在windows系统中会遇到这样的问题,在我们[Linux]()系统中我们也会遇到这样的情况。

通过对本篇文章的阅读,小编会将Linux中权限的知识掰碎了给大家说明一下,希望这篇文章可以对大家对Linux的学习有所帮助。

Linux权限

Linux权限的概念

Linux权限管理

1、文件[访问者]()的分类

2、文件权限属性

3、文件类型

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

5、修改文件权限(chmod)

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

7、修改文件所属角色

8、粘滞位

Linux权限的概念

1.1Linux用户分类

各位应该都听说过,Linux是一个多用户[操作系统](),但许多同学并不知道这个多用户是什么意思,这里的多用户指得是普通用户,我们的Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以在Linux系统下做任何事情,几乎不受限制。

普通用户:在自己的工作目录下,做有限的事情。

总结: 即我们所有的权限是用来限制普通用户的,而我们的超级用户几乎不受限制。在Linux系统中,默认会有一个root,这个用户是必须存在的,安装系统的时候就自动存在了。此外,还需要注意的是:超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

1.2Linux用户切换

我们知道了Linux中的用户分为普通用户和超级用户,那么两个用户之间应该如何进行切换呢?下面小编来带各位了解这部分内容。

su-回车:输入root密码,会从普通用户切换到超级用户

ctrl+d:从超级用户返回普通用户,或者是logout、exit也可以完成

如果开始进入的是root用户,想切换到普通用户:

su-普通用户名:即可切换到普通用户

总结: root切换普通用户,不需要输密码,不需要别人同意,但是普通用户切换到root需要输密码。

1.3补充

a:当我们想要给普通用户修改密码时,在普通用户下进行passwd操作是不行的,像更改密码这种操作必须是root用户才具备的权限,所以我们有两种方法:

a-1:su-切换到root用户,再修改密码

a-2:sudopasswd普通用户名,就可以改普通用户的密码了

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上的软件来说,不是的,比如gcca.out可以编译通过,gcca.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:单个人单权限操作:

chmodu-rfile.txt=更改file.txt中user(拥有者)的权限,-r去除其可读权限,变为不可读,即第一个位置从r变为-

chmodu+xfile.txt=更改file.txt中user(拥有者)的权限,+x给其增加可执行权限,变为可执行,即第三个位置从-变为x

chmodu-rwxfile.txt=去掉file.txt中user(拥有者)的权限,-rwx去掉其所有权限

这里需要注意的是,具备可执行权限,并不代表这个文件可执行,因为一个文件可执行,代表这个文件内部必须得有二进制或者脚本程序。

另外:更改所属组的权限,是g;更改other的权限,是o

B:多个人多权限操作:

chmodu-r,g+wxfile.txt=更改file.txt中user(拥有者)和group(所属组)的权限,-r去除user的可读权限,+wx给group增加可写可执行权限

C:默认情况为所有人:

如果没有指明给那个角色加权限,默认给所有人都加权限。

chmod+xfile.txt=给file.txt的所有角色加上可执行权限

chmoda+xfile.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进制数字,此时更改权限的操作就可以用数字代替。

chmod000file.txt=将file.txt文件的拥有者权限改为000,所属组权限改为000,other权限改为000,每一组中的每一位对应的0和1代表是否具有对应权限

chmod656file.txt=将file.txt文件的拥有者权限改为110,所属组权限改为101,other权限改为110,每一组中的每一位对应的0和1代表是否具有对应权限

7、修改文件所属角色

对于三种角色修改文件和目录的权限,以及单角色多角色修改已经掌握,那么能不能修改文件三种角色对应的人呢?答:a:chown=修改拥有者

chownrootfile.txt=将file.txt的拥有者从xd改为root(目前只有xd和root两个人),但是会报错,显示操作不允许

sudochownrootfile.txt=输入root密码后,操作完成

b:chgrp=修改所属组

也是需要+sudo的,sudo后输入密码,一段时间内sudo是不需要再输入的

c:没有更改other的命令

d:同时修改多个角色

chownxd:xdfile.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权限的理解更深了,如果你有收获,记得给我点个赞,小编会继续努力写更好的文章,让我们大家一起进步。

最后修改:2021 年 11 月 02 日
如果觉得我的文章对你有用,请随意赞赏