首先我们先思考一下,为什么需要权限呢?
原因是在公司中我们的项目往往是许多人一起分工合作的,我们每个人负责每个人相应的部分,如果每个人都可以更改与操作我们项目中的所有文件,那么我们的数据一定会面临各种风险与问题,所以这个时候我们就需要权限来限制每个人,让每个人各司其职,限制每个人所操作的区域;
在正式介绍权限之前,我们还需要了解一些问题:
怎么使用操作系统?
大家认为我们平时在用电脑的时候有没有在直接使用windows操作系统呢?是不是在思考我们平时点击app打开app这些操作是不是属于使用操作系统呢?其实我们这并不是在直接使用操作系统;同理,我们使用云服务器,利用shell工具远程登陆云服务器时利用命令行指令控制云服务器这也不是在直接使用操作系统;
为什么要有这样的外壳程序呢?
1.操作系统是非常复杂的,学习它的成本非常高,如果有了外壳程序我们只需要简单的使用这个软件就可控制操作系统了;
2。可以起到保护操作系统的作用,我们不会直接对操作系统内部进行修改,破坏数据等;
如图我们的外壳程序就是这样的链接操作系统的软件层(保护层),有了这层操作系统,我们的使用成本将会低很多,人人都可以使用电脑;
下图大概就是我们shell的作用:
1.用户
在我们的云服务器中,往往有普通用户还有root用户两种用户,普通用户的操作权限是受限制的,而我们的root用户就如帝王一样一般是不存在限制的;我们可以通过su 【user】来切换用户
通过这个图片我们还可以发现一些小区别,我们可以发现普通用户的命令提示符是$,root用户的命令提示符是#
2.管理权限
权限核心=访问者 + 文件属性(文件的权限和类型)
A.文件的访问者
文件和文件目录的所有者:u---User
文件和文件目录的所有者所在的组的用户(所属组):g---Group
其它用户:o---Others
如图我们的myfile文件属性方框中的就是我们的拥有者与所属组;
这有什么用呢?
当我们在公司中做项目的时候我们难免需要合作,我们各自编写我们的文件,当你的上司或者你们组的成员需要你的文件的时候,如果你们两个用户不属于同一组,那么你是无法使用的(因为你是other其他用户),当然这也要与下面的文件类型和访问权限(事物属性)联系在一起说,我们先有一个大概的概念;
B.文件属性(文件的权限和类型)
文件类型:
d:文件夹 -:普通文件(图中就是此类型)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
总结:这一串字符一共10位,第一位表示文件的类型,后面9位每三位为一组,每一组都是固定的rwx三个字母按顺序组合,或者将字符改为-符号,这些字符是两态的非本身即为 - ;其中r代表可读,w代表可写,x代表可执行但在目录文件中代表可打开;而我们的三组分别对应着后面文件访问者的权限;三组一一对应,u,g,o拥有者,所属组,其他;
拓展:因为我们的这些字符是二态的所以我们自然也可以使用01来代替这些字符;三个字符为一组有三组;当文件可读可写可执行的时候就是111都不可的时候就是000其他时候以此类推;111代表的八进制数是7,所以全可行时就为7,假设我们三组都全可行就为777;
这样就回到了我们最开始说到的那一段方程了:
权限核心=访问者 + 文件属性(文件的权限和类型)
小tip:Linux系统不以文件名后缀来区分文件类型(使用刚刚我们说到的首字符来区分),但是后缀可以帮助我们来区分文件类型,这样我们就可以方便的观察到文件类型;
C.chmod
这个命令是用来修改用户权限的,如果需要改变用户权限的话就可以使用下面的操作来更改权限:
操作:chmod [参数] 权限 文件名
选项:R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
操作1:
用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
例子:
此时我们把myfile目录的权限全部修改为了-就是说我们的拥有者和所属组和其他人都不可以对我们文件进行任何操作了(当然root除外)
操作二:
我们可以直接把augo+-=rwx改为三个八进制数,此时也可实现上面的操作:
D.chown和chgrp
这个指令是用来修改文件拥有者的;
操作:chown 拥有者:所属组 文件/目录
小tip:我们的权限需要注意,如果你使用的是普通用户的话你的指令会不被允许,因为你的权限不够
补充一个chgrp指令这个指令和chown没有多大区别但是它只能更改所属组不能更改拥有者;
E.粘滞位
这是为了一种特殊环境而产生的权限;
它适用于当我们用户在做项目的时候在同一个文件夹下编辑文件时;
我们会产生这样一种矛盾,就是我们都具有rwx的权利,所有我们可以删除其他人的文件,如果这样的话我们的文件安全必定会受到影响,所有我们的大牛们添加粘滞位这一概念,我们可以通过把这个公共文件改为粘滞位(chmod +t),使得我们可以rwt文件,我们无法删除别人所编辑的文件。
可以删除的用户有
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
F.umask
我们之前有说到文件属性中的10个字符,这十个字符,他们在一起组成了我们的文件的权限,但是当我们使用ll命令来查看我们文件属性的时候,我们可以清楚的看到我们文件属性是有共同点的,也就是说我们的文件是有默认权限的;我们目录的默认权限是0777,文件的默认权限是0666;
但是我们实践后发现,默认权限并不是我们所想的那样,这是为什么呢?
其实这是因为我们的umsk权限值的影响;
我们的实际权限=默认权限& ~权限值;
如上图我们的默认权限值为0002,把它化为二进制数后为 000 000 010,按位取反后为111 111 101;再将权限值按位与我们的目录默认权限777-->111 111 111;得到111 111 101也就是三个八进制位数775;这样我们的权限值就得到了,我们可以通过修改我们的umask值来修改我们的初始权限值;
总结:有了权限,就像是社会有了秩序,我们的分工合作才能稳定的进行,我们的项目也才能更顺利的完成。
2023.9.17