【Linux】掌权如鹰:Linux权限天空的翱翔秘籍
引言
在Linux的广阔天空中,权限管理犹如一只翱翔的雄鹰,掌控着系统的安全与秩序。掌握Linux权限,不仅能让你的系统管理更加得心应手,还能有效防止未授权访问和数据泄露。本文将带你深入探索Linux权限的奥秘,助你成为权限管理的高手。
一、Linux权限管理基础
1.1 权限的概念以及重要性
Linux系统是一个多用户操作系统,为了保护系统资源不被未授权的用户访问或破坏,引入了权限管理机制。权限管理确保系统资源的安全性和稳定性,防止未经授权的访问和修改。换言之,一件事是否允许被你做,这就叫权限。
1.2 不同用户类别的权限
1.2.1 用户的分类
在Linux中用户分为两类:
- • 超级用户(root):可以在Linux系统下做任何事情,不受限制。命令提示符为“#”。
- • 普通用户:在Linux系统下做有限的事情。命令提示符为“$”。
1.2.2 用户的切换
由于普通用户在进行操作时可能会受到权限的限制,所以这时候进行用户的切换说不定就可以操作成功。那普通用户和超级用户之间是如何切换的呢?
普通用户切超级用户
语法:su / su –
说明:让普通用户切换到超级用户,切换时会提示普通用户输入 root 的密码(tips : 密码输入时没有回显)。


超级用户切普通用户
语法:su [用户名]
说明:让 超级用户/普通用户 切换到普通用户,由于超级用户权限很高,所以不需要输入密码就可以切换,而普通用户切换就需要输入对方的密码。

这里需要注意的是,我们使用su来切换用户,只是进行了身份切换,路径并没有变,如果想改变路径,我们可以使用su -(本质上是重新登陆了)。
切换用户就好比给自己套了一层衣服,一层一层叠buff。那如何脱掉衣服呢?我们可以使用exit或者Ctrl+D来退出。

1.2.3 sudo 指令
语法:sudo 指令X
功能:让普通用户通过sudo对指令X进行提权,以超级用户的身份去执行该命令。
那这个指令有点逆天,难道说我们普通人也能翻身有超能力了?并没有那么简单,我们在刚开始adduser的时候,并没有在白名单里,系统默认不相信我们。只有root把我们加到白名单里,我们才能用sudo进行提权。
如下图,hjz用户未被加入到sudoers file。

1.3 权限的表示方法
在linux中我们如何表示权限呢?其实很简单,只需要记住角色+属性即可。
我们可以通过 ls – l 指令来查看当前目录下的所有文件。


1.3.1 Linux中的角色
在Linux中共分三个角色:
- • 拥有者(u — User):文件和文件目录所有者。
- • 所属组(g — Group):文件和文件目录所有者所在的组的用户。
- • 其他人(o — Others):其他用户。

其中黄色框起来的是拥有者,紫色框起来的是所属组,其他人并未出现在属性中。当用户操作文件时,它会先看用户是不是拥有者,如果不是再看是不是所属组,如果都不是那就是其他人。
还有一个比较重要的一点,一次只能匹配一个角色。例如:

此时我们拥有者是没有写权限的,但是所属组有,那我们可不可以写文件呢?答案是不能,因为一次智能匹配一个角色,我们root匹配上了拥有者。(这里由于我拿root来演示,所以还会写进去,普通用户是做不到的)
1.3.2 文件类型

如图所示,蓝色框起来的部分就是代表着文件的类型,其中文件类型分为以下几种:
- •
-
:普通文件 - •
d
:文件夹 - •
l
:软链接(类似Windows的快捷方式) - •
b
:块设备文件(例如硬盘、光驱等) - •
p
:管道文件 - •
c
:字符设备文件(例如屏幕等串口设备) - •
s
:套接口文件
1.3.3 基本权限

主播主播,有没有能代表文件的基本权限的字符推荐一下?有的兄弟有的,像这样的字符一共有九位。如图所示,红色框起来的九个字符代表着文件的基本权限。
前三位代表着拥有者的权限、中间三位代表所属组的权限,后三位代表其他人的权限。
每三位都分别由r、w、x来控制,如果有该权限就标记为该字母,否则标记为-。
- •
r
(读/4):Read,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。 - •
w
(写/2):Write,对文件而言,具有修改文件内容的权限;对目录来说,具有删除或移动目录内文件的权限。 - •
x
(执行/1):Execute,对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。 - •
-
:表示不具有该项权限。
二、权限的修改
首先声明一点,只有文件拥有者和超级用户才可以修改文件权限。
2.1 chmod 指令
语法:chmod [参数] 权限 文件名
功能:设置文件的访问权限。
常用选项:
-r:递归修改目录文件的权限。

其中u代表拥有者、g代表所属组、o代表其他人,通过+、-来增减。一次性可以修改多个权限。
这里要介绍另一个表示权限的方法——八进制数值表示法。
2.1.1 八进制数值表示法
- • 每个权限位(读、写、执行)可以用一个八进制数字来表示:
- • 读(r):4
- • 写(w):2
- • 执行(x):1
- • 空(-):0
- • 例如,权限
rwxr-xr--
可以表示为八进制数值754(rwx:4+2+1=7、r-x:4+0+1=5、r--:4+0+0=4)
。
所以我们命令操作也可以这么写:chmod [想改成的八进制数值] 文件

2.2 chown 指令
语法:chown [参数] 用户名 文件名
功能:修改文件的拥有者。
实例:
chown hjz hello.txt:将文件hello.txt的拥有者改为hjz。

2.2 chgrp 指令
语法:chgrp [参数] 用户组名 文件名
功能:修改文件或目录的所属组。
实例:
chgrp hjz hello.txt:将文件hello.txt的所属组改为hjz。

2.3 umask 指令
我们在创建一个新的文件或目录的时候有没有初始默认权限呢?先给出答案,是有的,并且:
- • 默认给普通文件的起始权限是
666。
- • 默认给目录的起始权限是
777。

我们创建了一个文件和目录,但发现并不是666和777,而是644和755,这是为什么呢?这就要提出一个叫权限掩码的东西了。
2.3.1 权限掩码
首先如何查看权限掩码?通过umask指令。
语法:umask 权限值
功能:查看或修改权限掩码。如果没输入权限值就是查看当前掩码。

从图中我们可以看到我的权限掩码是022(第一个0代表是八进制)。可这又和那个有什么关系呢,也不一样啊。别着急,我们慢慢分析。
2.3.2 如何获得最终权限
首先我们输入umask获得权限掩码,然后再通过公式最终权限 = 初始权限 & (~权限掩码)。
拿我的举例

三、目录的权限以及粘滞位
3.1 目录的权限
- • 可执行权限(x):如果目录没有可执行权限,则无法cd到目录中。
- • 可读权限(r):如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。
- • 可写权限(w):如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。
有了上面的说明,我们首先要知道,文件的删除并不是由文件本身决定,而是它所在的目录决定。
当我们在创建一个新用户时,系统会在/home自动创建一个用户的家目录。

我们可以观察到这个目录对others的权限是0,这说明其他人不可以进入我的家目录,更不可能增删查改文件。
我们有时需要进行多个用户之间的文件数据共享,这个时候就需要超级用户在根目录下创建一个共享的文件,并且把其他人的权限改为7,保证普通用户可以进入目录,并且可以查看和创建文件。
但是问题来了,如果有内鬼怎么办,别忘了能创建就可以删除啊。就比如wow辛辛苦苦写的文件,cyy不想干了,把文件删了。这种情况该怎么办呢,删除和创建查看绑在一起了,这个时候粘滞位就派上作用了。
3.2 粘滞位
如何使用粘滞位呢?很简单,只需要chmod +t 即可。
语法:chmod +t
功能:使该目录下的文件只能由超级管理员、该目录的所有者或该文件的所有者删除。
实例:
我们根目录下系统自带了一个tmp目录供我们实现多用户文件数据共享操作。

本文链接:https://www.yunweipai.com/47261.html
网友评论comments