Linux中的权限概念

发布于:2025-05-28 ⋅ 阅读:(23) ⋅ 点赞:(0)

前言

前面的文章当中我们介绍了Linux系统的基本概念以及Linux系统的基本指令,对Linux系统有了一些简单的理解,基于这些理解,我们在今天的文章当中将开始谈论Linux的权限问题,废话不多说,我们直接开始,如果觉得本篇文章对您有所帮助的话,记得点赞收藏加关注,您的支持就是我创作的最大动力。
相关文章:
Linux系统的介绍及操作系统的基本概念

Linux基本指令(保姆级教学)

Linux下的用户

Linux系统是一个支持多用户的操作系统,分为两种用户:

超级用户(root):管理员用户,在Linux系统下可以执行任何操作,不受限制
普通用户:在Linux系统下只能执行部分操作,存在限制
提示:在命令行当中,区分超级用户和普通用户的标志是“#”与“$”

那么,如何进行用户创建与用户切换呢?我们在这里介绍以下几种命令:

创建用户:adduser [用户名]
设置密码:passwd [用户名]
删除用户:userdel -r
切换用户:su [用户名]

举个例子:

我们在这里创建普通用户aaa,设置密码
在这里插入图片描述
接下来我们切换用户/删除用户
在这里插入图片描述
值得注意的是,root账号切换普通用户不需要输入密码,但是普通账号切换root账号需要输入root账号的密码,同时,普通账号切换普通账号,也要输入密码

那么,我们如何知道当前root账号下,有多少个普通用户呢?实际上,Linux系统下的用户保存在/etc/home这个路径下,如果我们要知道当前root账号下,普通用户的信息,我们可以用cat指令查看当前路径下的文件信息,也可以使用ls指令。

普通账号和root账号的区别

实际上,他们之间最大的区别就是权限的差异,对root账号来说,如果我们要在当前系统上进行任何操作,这样都是被操作系统所允许的,即使我们要删除整个系统;但是对于普通用户,如果我们要对配置文件进行操作,操作系统是不允许的,即使我们想要执行整个操作,那么操作系统也会进行询问。
那么,为什么要有这样的区别呢?
实际上,其中第一个目的是,为了实现多用户协作。我们都知道,Linux是一个多用户的操作系统,那么对于企业在进行开发时,一个团队可以在同一个root账号下进行代码编辑,这样提高了开发的效率;第二个目的是为了防止用户误操作。一般情况下,我们都建议用户使用普通账号进行操作,这样可以防止用户误操作而带来的损失。
但是,在实际工作中,我们使用普通账号进行开发时,有时候需要安装程序,或者需要更大的权限等,但是普通账号又没有这么大的权限,我们应该怎么办呢?Linux提供了sudo指令:

sudo:不切换root,以root权限运行

用户白名单

我们在进行sudo指令时有时会遇见指令无法执行的问题,这个问题的本质是因为该用户没有在root账号的白名单内(不被系统所信任),因此,我们要手动将该用户田间至白名单,而用户白名单在/etc/sudoers路径下,操作步骤如下所示:

第一步:查看用户白名单
cat /etc/sudoers
在这里插入图片描述
我们可以看到,root ALL=(ALL) ALL就是被操作系统所信任的用户
第二步:添加用户
vim /etc/sudoers我们打开该文件
第三步:找到上述图片中的位置(大概在100行左右)
在这里插入图片描述
第三步:按两下y键复制当前行,然后按p键复制当前行
第四步:按i进入插入模式,将复制的那一行的root改成所要添加的用户
第五步:按esc进入命令模式,之后按shift+;进入底行模式,之后w+!强制保存,然后q+!强制退出

由此我们便完成了将用户添加至白名单的操作,之后我们就可以正常运行sudo指令

Linux的权限管理

前面我们知道,Linux下一切皆文件,那么,Linux的权限管理实际上是对文件权限的管理,那么文件权限是如何进行管理的呢?实际上是通过文件的访问者进行管理的。

文件的访问者
拥有者(user):文件和文件目录的所有者,例如,当前用户
所属组(group):文件和文件目录的所有者所在的组,例如,普通用户所在的组是root账号
其他用户(others)

权限的理解

权限=人+事物属性
文件权限=用户+文件属性(用户属性)
Linux中的三种角色,要由人来扮演

Linux的文件类型与访问权限

windows区分文件类型是通过文件的后缀区分的
Linux区分文件类型是用文件的属性列区分的
在这里插入图片描述
其中,d开头表示目录,-开头表示普通文件

那么,我们如何才能知道一个文件所能操作的权限呢?实际上一个查看一个文件的权限我们可以用ll命令进行查看,如下图所示:
在这里插入图片描述
我们可以看到,文件属性后面有一系列的rwx等信息,以及root root,这些都是什么意思呢?实际上,rwx表示文件的基本权限,它们每三个为一组,对应文件的拥有者和所属组,后面的第一个root表示当前文件或目录的拥有者是root,第二个root表示当前文件或目录的所属组是root。

基本权限

读权限(r):对文件来说,该权限表示可以读取文件内容;对于目录来说,该权限表示可以浏览该目录
写权限(w):对文件来说,该权限表示可以修改文件内容;对于目录来说,该权限表示可以移动和删除该目录
执行权限(x):对文件来说,该权限表示具有执行的权限;对于目录来说,该权限表示可以进入该目录
在这里插入图片描述
如上图所示,我们创建了111 222 333这三个文件,对于文件111而言,权限可以看作:对拥有者和所属组有读和写的权限,对其他用户开放读的权限,该文件的拥有者是fujinyu用户,所属组是root

文件权限的修改

前面我们介绍了,Linux通过管理拥有者和所属组的基本权限,从而达到权限管理的目的,那么,我们该如何修改一个文件或目录的权限呢?接下来我们将介绍文件权限的修改方法。

访问权限的修改

chmod
功能:修改文件的访问权限
用法:chmod 【参数】 权限 文件名
说明:只有文件的拥有者和root才可以改变文件权限
常用选项:
R:递归修改目录文件的权限

那么我们该如何修改文件的访问权限呢?下面我们介绍chmod权限值的格式。

用户符号:
u:表示拥有者
g:表示所属组
o:表示其他用户
a:表示所有用户
用户表示符:
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
举个例子:
在这里插入图片描述
如上图所示,我们通过chmod u+rwx 111这条指令,给111这个文件的拥有者加上了读写以及可执行的权限,我们发现,当我们加上x权限后,该文件的颜色发生了变化,这表明,该文件变成了一个可执行文件,即:我们可以直接在命令行当中运行该文件

除了上述例子当中通过指定文件拥有者更改文件权限的方式,我们还可以通过八进制数字更改文件权限,如下图所示:

这里是引用
从运行结果上看,我们通过chmod 777 222这条指令给222这个文件的拥有者 所属组以及其他都加上了rwx权限,那么为什么可以用八进制数字表示所要更改的权限呢?
我们将777这个八进制数字转化成二进制数字发现,它所表示的二进制数字是111 111 111,我们都知道0为假1为真,对于权限列表,我们可以理解成,该二进制数字每三个为一组,其中的每一位表示对应位置是否具有该权限。

拥有者的修改

chown
功能:修改文件的拥有者
用法:chown 【参数】用户名 文件名
举个例子:
在这里插入图片描述
如上图所示,我们通过chown ttm 111这个指令,将111这个文件的拥有者改成了ttm这个用户

所属组的修改

chgrp
功能:修改文件或目录的所属组
用法:chgrp 【参数】用户组名 文件名
举个例子:
在这里插入图片描述
如上图所示,我们通过chgrp ttm 111这个指令,将111这个文件的所属组改成了ttm这个用户

权限掩码

当我们了解了权限的修改方法后,我们不禁好奇,Linux系统下我们所创建的目录以及文件他们的默认权限是怎么得来的呢?接下来,我们先看下面的现象:

这里是引用
我们在当前路径下,默认创建了一个文件和一个目录,我们发现普通文件的默认权限用八进制表示为:664;目录的默认权限用八进制表示为:775

那么这个默认权限是如何得来的呢?接下来,我将介绍权限掩码的概念。

查看权限掩码:umask
在这里插入图片描述
我们把0002这个数字称为权限掩码,这个数字我们可以自行设置,例如:我们将权限掩码设置成000后再来观察默认创建的文件和目录的权限:
在这里插入图片描述
我们可以看到,当我们把权限掩码设置成000后,普通文件的默认权限用八进制表示为:666;目录的默认权限用八进制表示为:777
由此我们可以得出结论:权限掩码是用来修改系统文件默认权限的

那么权限掩码是如何得出默认权限的呢?

最终权限=起始权限去掉umask权限值,即:最终权限=起始权限&(~umask)

目录的权限

可读权限(r):表示是否允许用户查看执行目录下的文件信息,如果没有可读权限,则无法用ls查看目录中的文件内容
可写权限(w):表示该用户是否可以修改或删除指定目录,如果目录没有可写权限,则无法在目录中创建文件和删除文件
可执行权限(x):表示是否允许用户进入目录,如果目录没有可执行权限,则无法cd到目录中
所以可以得出下面结论:
一个文件是否被删,依赖于所属的目录;一个目录是否允许被访问,依赖于目录的可执行权限

由此,在多个用户协作的项目当中,我们一般将该文件或数据放在root账号的公共目录下,普通用户以other的身份实现资源和数据共享。

但是此时存在一个问题,根据上面我们所得出的结论,只要用户有目录写的权限,该用户就可以删除目录中的文件,而不论该用户是否具有该文件写的权限,为了解决这个问题,我们引入粘滞位的概念。

粘滞位

粘滞位:chmod+t 【目录名】
意义:
表示该目录下的文件只能由超级管理员、该目录的所有者、该文件的所有者删除。

小结

本篇文章我们重点介绍了Linux系统下root和普通用户的区别,以及权限管理,Linux系统通过对文件和目录的权限管理达到对系统权限的管理,保证了系统的正常运行,方便用户进行协作