【Linux】权限(1):初识权限与使用理解
目录
一 Linux权限的概念
Linux 下有两种用户:超级用户(root)、普通用户
什么是白名单机制呢?
su && su root
su~
sudo
exit
ctrl+D
二 Linux的权限管理
1 权限的本质
2 权限角色
3 groups
3 权限属性 rwx
4 示例
5 几个问题
1 整体如何理解?
2 为什么要有所属组?
6 如何修改权限
方法一
chmod 命令
方法二
7 修改拥有者&&所属组
chown 命令
chgrp 命令
8 文件类型
9 三个关于权限的问题(面试题)
(1)进入一个目录需要什么权限?
(2)什么决定了文件或目录的默认权限?
(3)root新建的文件,普通用户不读不写不执行,可以删除吗?
一 Linux权限的概念
Linux 下有两种用户:超级用户(root)、普通用户
・超级用户:可以在 Linux 系统下做任何事情,不受限制
・普通用户:在 Linux 下做有限的事情。・超级用户的命令提示符是 “#”,普通用户的命令提示符 是 “$”。

那怎么解决呢?
解决方案1:把普通账号,变成root账号。但是只能是管理员做
解决方案2:对指令进行提权! 所有的合法用户做。
指令提权就用到了指令sudo,在使用sudo时输入密码输入的是自己的密码
但是如果所有的指令都能提权的话,那么权限不就形同虚设了吗?
在默认情况下,普通账号是无法进行sudo的


普通用户之间,无法sudo
为什么有些用户能直接执行提权,而有些用户不能呢?
是因为白名单机制:只有在白名单里面的人,才能执行sudo
什么是白名单机制呢?
白名单机制是一种用于限定允许访问或授权成员资格的安全策略。
白名单机制的工作原理是基于一种筛选机制,通过验证实体是否在预定义的白名单中,来决定是否允许其进行特定操作或访问资源。只有出现在白名单中的项目才被允许通过或执行,其他所有未明确授权的都被自动拒绝,遵循 “未被明确允许的,就是被禁止的” 原则。
可以将白名单理解为Linux中的一个配置文件
su && su root
定义:切换账号/用户
特点:路径不改变
指令:su[用户名] 从当前用户切换为su后的用户
su~
定义:让超级用户宠幸登录
使用前提:root账号才能这么干
sudo
定义:对指令进行提权
特点:第一次sudo之后10~15分钟的登录期间不用再输密码;默认情况下,普通账号是无法进行sudo的。
exit
定义:切换回普通账号
ctrl+D
这个热键和exit功能相同,都是切回普通账号。
区别:Ctrl + D两次,会推出XShell。
二 Linux的权限管理
1 权限的本质
权限的本质是主体(如用户、进程)对客体(如文件、数据库、网络资源)执行特定操作(如读、写、执行)的资格或能力的约束与管理
权限的本质是限制:“角色”
什么是角色呢?
例如:你叫张三,是一个校长。只有校长才能进入校长室,那么你能进入校长室是因为你是张三,还是你是校长?
很显然:是因为你是校长。此时校长就是你的角色。
角色+具体的人=人
2 权限角色
在Linux系统中,权限角色有三类:文件的拥有者 文件的所属组 文件的other
1 文件的拥有者
文件的拥有者是指创建该文件的用户(或被特权用户指定的用户),是对文件拥有核心控制权(可修改权限、内容等)的 “默认负责人”。
2 文件的所属组
文件的所属组是指该文件所归属的一个用户组,组内所有用户可共同享有系统为该组设定的对文件的访问权限,其核心作用是方便多用户间共享文件权限。
3 文件的other
指既不是文件拥有者,也不属于文件所属组的所有系统用户,是权限范围最广的一类
举个例子:你买了一个电脑,这个时候你就是电脑的拥有者。但是你的爸爸妈妈也可以使用这个电脑,这个时候爸爸妈妈就是所属组。而像你的邻居,过路人等等,就是other
3 groups
定义:查看所属组
3 权限属性 rwx
◦ 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息 的权限
◦ 写(w/2):Write对⽂件而言,具有修改文件内容的权限;对⽬录来说具有删除移动目录内文件的权限
◦ 执行(x/1):execute对文件而言,具有执行文件的权限;对⽬录来说,具有进入目录的权 限
◦ “—”表示不具有该项权限
4 示例

我们发现,在文件类型的后面,有九位字母:三位为一组,分别代表拥有者的属性,所属组的属性,other的属性
注意:rwx的顺序不能改变!!!
以拥有者权限为例:
角色:拥有者
人:root
文件权限:rwx
为什么这里没有other?
因为other指的是出来拥有者和所属组之外的人!很多!不需要记录!!
怎么理解拥有者,所属组,other和root,whb,zhangsan的区别?
5 几个问题
1 整体如何理解?
权限 = 角色 + 目标事物的属性
本质上角色会由人扮演(权限就是限制人的,有的人可以有的人不能),如果这个时候是权限角色中的一个,但是没有相应的文件属性,那也不能对文件操作

2 为什么要有所属组?

比如说在公司,有两个组共同挑战一个项目,你叫张三。当你写出来一个code.c的文件,你的倒是需要权限去看,如果没有所属组,那么只能打开other的权限,但与此同时其他组的人也能看,李四可能会cope。
但其实这种情况比较少,默认情况:每一个人,自成一个组!!!
所属组就是在一个特定的范围内,进行权限管理
也可以把一个人加到自己的组里:

6 如何修改权限
方法一
chmod 命令
功能:设置文件或目录的访问权限。
格式:chmod [参数] 权限 文件名
常用选项:
- -R:递归修改目录及其子目录下所有文件的权限(仅对目录有效)。
- 说明:只有文件的拥有者和
root用户才有权限改变文件的访问权限。
chmod 命令权限值的格式:用户表示符 +/-/= 权限字符
-
操作符含义:
+:向指定的权限范围增加权限代号所表示的权限。-:向指定的权限范围取消权限代号所表示的权限。=:向指定的权限范围赋予权限代号所表示的权限(覆盖原有权限)。
-
用户表示符含义:
u:文件的拥有者(User)。g:文件所属组的用户(Group)。o:其他用户(Other)。a:所有用户(All,即u、g、o的总和)。

当使用 chmod u+a 就表示拥有者增加所有权限
还可以组合使用指令:
sudo chmod 是一个组合命令,意思是以超级用户(root)的权限执行 chmod 命令,用于修改那些当前用户(非 root)本身没有权限修改的文件或目录的访问权限
没有权限会有什么问题?
普通账号受到权限约束,root几乎不受!
Linux中,身份匹配,只会匹配一次!
例如:你的拥有者和所属组都是whb,拥有者没有任何权限,而所属组只有可读。但是系统匹配了第一个拥有者之后,就不会再匹配后面的
权限识别,只会识别一次
x:可执行???
具有可执行权限 != 可以执行
可以执行 = 具有可执行权限 + 你就是一个二进制文件
方法二
我们知道,每一位的取值只有有权限和没有权限两种,我们把有权限假设为1,没有权限假设为0

那么我们可以把每一个成员的二进制数转化成十进制数,结合起来,就可以修改

7 修改拥有者&&所属组
chown 命令
功能:修改文件或目录的拥有者(Owner)。
格式:chown [参数] 用户名 文件名
常用参数:
- -R:递归修改目录及其子目录下所有文件的拥有者(仅对目录有效)。
实例:
chown user1 f1:将文件f1的拥有者修改为用户user1。chown -R user1 filegroup1:递归将目录filegroup1及其内部所有文件的拥有者修改为用户user1。
chgrp 命令
功能:修改文件或目录的所属组(Group)。
格式:chgrp [参数] 用户组名 文件名
说明:与 chown 类似,chgrp 也支持 -R 参数进行递归修改。例如 chgrp -R dev groupdir,表示递归将目录 groupdir 及其内部所有文件的所属组修改为 dev 组。

8 文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘,光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
9 三个关于权限的问题(面试题)
(1)进入一个目录需要什么权限?
对目录来讲:
- x 决定是否能进入
- r 决定是否能查看目录下的文件信息
- w 决定在指定的目录下,是否能够删除和新建文件文件是否能被删除,由所在的目录 w 决定!!!!!(不由拥有者决定)
(2)什么决定了文件或目录的默认权限?
(3)root新建的文件,普通用户不读不写不执行,可以删除吗?
这两个问题我们在下一篇讲解

