【Linux】掌权如鹰:Linux权限天空的翱翔秘籍
欢迎来到白刘的领域 Miracle_86.-CSDN博客
系列专栏 Linux
先赞后看,已成习惯
创作不易,多多支持!
目录
引言
一、Linux权限管理基础
1.1 权限的概念以及重要性
1.2 不同用户类别的权限
1.2.1 用户的分类
1.2.2 用户的切换
1.2.3 sudo 指令
1.3 权限的表示方法
编辑
1.3.1 Linux中的角色
1.3.2 文件类型
1.3.3 基本权限
二、权限的修改
2.1 chmod 指令
2.1.1 八进制数值表示法
2.2 chown 指令
2.2 chgrp 指令
2.3 umask 指令
2.3.1 权限掩码
2.3.2 如何获得最终权限
三、目录的权限以及粘滞位
3.1 目录的权限
3.2 粘滞位
引言
在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目录供我们实现多用户文件数据共享操作。