【Linux】第2期 一文彻底搞懂 Linux 权限管理

开头:

ok呀,今天继续更新学习我们 Linux 的第二期 —— Linux 的权限管理,废话不多说,我们直接开始!

在 Linux 系统中, “一切皆文件” 是其最核心的设计哲学,这就必然涉及到对文件的权限管理,本文将从最基础的概念讲起,通过大量的实例和图解,带你彻底搞懂 Linux 权限管理的方方面面,让你从权限小白变成权限管理高手。

一.Linux 权限的基本概念

(1)权限的本质

权限的本质非常简单:能或者不能做什么事情

Linux 系统通过权限机制来控制用户的行为,防止误操作的发生,同时也保护了系统和用户数据的安全。在 Linux 中,权限 = 角色 + 目标属性,也就是说,不同的角色(用户)对不同的目标(文件 / 目录)拥有不同的操作权限。

(2)Linux 中的用户类型

Linux 系统将用户分为两大类:超级用户(root)普通用户

在这里插入图片描述
这里就要补充一个命令 —— su

• 功能:切换用户
• 格式:su [用户名]

在 Linux 系统中,我们可以使用 adduser 指令来创建多个不同的用户,这时就可以通过 su 指令来切换用户
在这里插入图片描述

另外还有一个指令叫—— su -

su 和 su - 的核心区别:
核心区别在于:是否完全切换到目标用户的登录环境
• su 不改变此时你所处的路径位置,只是身份变成了 root
• su - 身份切换到 root ,并且路径自动到根目录下
在这里插入图片描述

注意:从普通用户切换到 root 用户时,系统会提示输入 root 用户的口令

二.Linux 权限的组成

(1)文件访问者的分类(角色)

Linux 中,会将文件的访问者分为三大类 :

u(User):文件和文件目录的拥有者
——相当于文件的主人,是文件的创建者,归属于谁

g(Group):文件和文件目录的所有者所在的组的用户——所属组
——相当于和文件的主人是队友,就是和你分到同一个用户组里的所有人,是圈内自己人,权限单独给他们一套规则。

o(Others):其它用户——others
——是拥有者和所属组以外的人,即其他人

(2)基本权限

Linux 定义了三种基本权限:读(r)、写(w)、执行(x)
在这里插入图片描述

我们来看一个具体的例子:

在这里插入图片描述

在这里插入图片描述

三.文件权限的表示方法

(1)字符表示方法

字符表示法使用r、w、x和-来表示权限,如上面例子中的 rw-rw-r–

(2)八进制数值表示方法

八进制数值表示法将每一组权限(所有者、所属组、其他用户)转换为一个 0-7 的数字

就如上面的例子,每一种文件访问者的权限都由三个字母组成,r、w、x,共占有三个空位
如果有字母代表 1 , 没有字母代表 0 ,最后组成的三位用二进制表示为一个数,例如

在这里插入图片描述

四.权限管理命令

(1)chmod 设置文件的访问权限

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项: -R 递归修改目录及其下所有文件的权限
说明:只有文件的拥有者和 root 用户才可以改变文件的权限

1.字符表示法修改权限

格式:用户表示符 + / - 权限字符

在这里插入图片描述
在这里插入图片描述

例如:

在这里插入图片描述

2.八进制数字表示法修改权限

格式: chmod [每一个访问者的二进制数] [文件名]

例如:

在这里插入图片描述

(2)chown:修改文件的拥有者

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R:递归修改目录及其下所有文件的所有者

例子:

在这里插入图片描述

(3)chgrp:修改文件或目录的所属组

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R:递归修改文件或目录的所属组

例子:

在这里插入图片描述

(4)umask:文件掩码

Linux 系统中,新建文件和目录有默认的起始权限:
• 新建文件默认起始权限:666(rw-rw-rw-)
• 新建目录默认起始权限:777(rwxrwxrwx)

但实际上我们创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。

计算公式为:
在这里插入图片描述
umask 的作用是:凡是在 umask 中出现的权限,都不应该在最终权限中出现。

在这里插入图片描述
如上图,输入 umask 后,就可以显示当前的 umask 值是多少

例子:

在这里插入图片描述
在这里插入图片描述

我们也可以修改 umask 的值
在这里插入图片描述

五.目录权限的特殊性

很多初学者容易混淆文件权限和目录权限的区别,特别是执行权限(x)对目录的意义。这里我们重点讲解一下目录权限的特殊性。

在这里插入图片描述

重要结论:

  1. 如果目录没有可执行权限(x),则无法 cd 到目录中,即使目录仍然有读权限(r)。这是一个非常容易犯的错误,很多人认为有读权限就可以进入目录读取目录下的文件,这是错误的。
  2. 如果目录具有可执行权限(x),但没有读权限(r),则用户可以执行命令,可以 cd 进入目录。但由于没有读目录的权限,所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档。
  3. 默认情况下,我们新建一个目录,rwx 权限都要有,这样才能正常使用目录

一个重要的 “反常识” 问题:
问题:如果目录有写权限,用户是否可以删除目录中的文件,而不论这个用户是否有这个文件的写权限?
答案:是的!只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。

这可太不对了,“张三” 创建了一个文件,“李四”既没有 读(r)权限 ,也没有 写(w),但是“李四”居然可以删掉“张三”的这个文件

为了解决这个 “不科学” 的问题,Linux 引入了粘滞位的概念。

六.粘滞位

当一个 目录 被设置为 “粘滞位”(用chmod +t),则该目录下的文件只能由:
• 超级管理员(root)删除
• 该目录的所有者删除
• 该文件的所有者删除

在这里插入图片描述
粘滞位就是为了解决无论是谁都能删除文件这个不科学的行为

七.sudo 权限分配

在实际工作中,我们一般不会直接使用 root 用户进行操作,因为 root 用户的权限太大**,容易造成误操作**。但有时候普通用户需要执行一些只有 root 用户才能执行的命令,这时候就需要使用sudo命令。

sudo 允许系统管理员让普通用户执行一些或者全部的 root 命令,同时也可以对普通用户能够执行的命令进行精确的控制,可以让普通用户短暂提权

要想使用 sudo 指令,需要我们使用 vim 对配置文件进行更改,由于我们现在没有学习过 vim ,这里不做演示,具体用法就是在指令前加上 sudo

结尾:

Linux 权限管理是 Linux 系统中最基础也是最重要的部分之一。希望通过本文的学习,你能够彻底理解 Linux权限的工作原理,并能够熟练地进行权限配置和管理。如果本文对你有帮助,欢迎点赞、收藏、关注!如果有任何问题,也欢迎在评论区留言交流。我会持续更新更多Linux 相关的技术文章,敬请期待!

往期回顾:

  1. 【Linux】第1期 教你白嫖6个月的阿里云服务器 + Linux 常用指令学习
  2. 【学习篇】第18期 C++模板
  3. 【学习篇】第17期 C++入门必看——类和对象全站最详篇
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐