Linux权限管理基础入门

描述

引言

在Linux的广阔天空中,权限管理犹如一只翱翔的雄鹰,掌控着系统的安全与秩序。掌握Linux权限,不仅能让你的系统管理更加得心应手,还能有效防止未授权访问和数据泄露。本文将带你深入探索Linux权限的奥秘,助你成为权限管理的高手。

一、Linux权限管理基础

1.1 权限的概念以及重要性

Linux系统是一个多用户操作系统,为了保护系统资源不被未授权的用户访问或破坏,引入了权限管理机制。权限管理确保系统资源的安全性和稳定性,防止未经授权的访问和修改。换言之,一件事是否允许被你做,这就叫权限。

1.2 不同用户类别的权限

1.2.1 用户的分类

在Linux中用户分为两类:

• 超级用户(root):可以在Linux系统下做任何事情,不受限制。命令提示符为“#”。

• 普通用户:在Linux系统下做有限的事情。命令提示符为“$”。

1.2.2 用户的切换

由于普通用户在进行操作时可能会受到权限的限制,所以这时候进行用户的切换说不定就可以操作成功。那普通用户和超级用户之间是如何切换的呢?

普通用户切超级用户

语法:su / su -

说明:让普通用户切换到超级用户,切换时会提示普通用户输入 root 的密码(tips : 密码输入时没有回显)。

LinuxLinux

超级用户切普通用户

语法:su [用户名]

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

Linux

这里需要注意的是,我们使用su来切换用户,只是进行了身份切换,路径并没有变,如果想改变路径,我们可以使用su -(本质上是重新登陆了)。

切换用户就好比给自己套了一层衣服,一层一层叠buff。那如何脱掉衣服呢?我们可以使用exit或者Ctrl+D来退出。

Linux

1.2.3 sudo 指令

语法:sudo 指令X

功能:让普通用户通过sudo对指令X进行提权,以超级用户的身份去执行该命令。

那这个指令有点逆天,难道说我们普通人也能翻身有超能力了?并没有那么简单,我们在刚开始adduser的时候,并没有在白名单里,系统默认不相信我们。只有root把我们加到白名单里,我们才能用sudo进行提权。

如下图,hjz用户未被加入到sudoers file。

Linux

1.3 权限的表示方法

在linux中我们如何表示权限呢?其实很简单,只需要记住角色+属性即可。

我们可以通过 ls - l 指令来查看当前目录下的所有文件。

Linux

Linux

1.3.1 Linux中的角色

在Linux中共分三个角色:

• 拥有者(u -- User):文件和文件目录所有者。

• 所属组(g -- Group):文件和文件目录所有者所在的组的用户。

• 其他人(o -- Others):其他用户。

Linux

其中黄色框起来的是拥有者,紫色框起来的是所属组,其他人并未出现在属性中。当用户操作文件时,它会先看用户是不是拥有者,如果不是再看是不是所属组,如果都不是那就是其他人。

还有一个比较重要的一点,一次只能匹配一个角色。例如:

Linux

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

1.3.2 文件类型

Linux

如图所示,蓝色框起来的部分就是代表着文件的类型,其中文件类型分为以下几种:

• -:普通文件

• d:文件夹

• l:软链接(类似Windows的快捷方式)

• b:块设备文件(例如硬盘、光驱等)

• p:管道文件

• c:字符设备文件(例如屏幕等串口设备)

• s:套接口文件

1.3.3 基本权限

Linux

主播主播,有没有能代表文件的基本权限的字符推荐一下?有的兄弟有的,像这样的字符一共有九位。如图所示,红色框起来的九个字符代表着文件的基本权限。

前三位代表着拥有者的权限、中间三位代表所属组的权限,后三位代表其他人的权限。

每三位都分别由r、w、x来控制,如果有该权限就标记为该字母,否则标记为-。

• r(读/4):Read,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。

• w(写/2):Write,对文件而言,具有修改文件内容的权限;对目录来说,具有删除或移动目录内文件的权限。

• x(执行/1):Execute,对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。

• -:表示不具有该项权限。

二、权限的修改

首先声明一点,只有文件拥有者和超级用户才可以修改文件权限。

2.1 chmod 指令

语法:chmod [参数] 权限 文件名

功能:设置文件的访问权限。

常用选项

-r:递归修改目录文件的权限。

Linux

其中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 [想改成的八进制数值] 文件

Linux

2.2 chown 指令

语法:chown [参数] 用户名 文件名

功能:修改文件的拥有者。

实例

chown hjz hello.txt:将文件hello.txt的拥有者改为hjz。

Linux

2.2 chgrp 指令

语法:chgrp [参数] 用户组名 文件名

功能:修改文件或目录的所属组。

实例

chgrp hjz hello.txt:将文件hello.txt的所属组改为hjz。

Linux

2.3 umask 指令

我们在创建一个新的文件或目录的时候有没有初始默认权限呢?先给出答案,是有的,并且:

• 默认给普通文件的起始权限是666。

• 默认给目录的起始权限是777。

Linux

我们创建了一个文件和目录,但发现并不是666和777,而是644和755,这是为什么呢?这就要提出一个叫权限掩码的东西了。

2.3.1 权限掩码

首先如何查看权限掩码?通过umask指令。

语法:umask 权限值

功能:查看或修改权限掩码。如果没输入权限值就是查看当前掩码。

Linux

从图中我们可以看到我的权限掩码是022(第一个0代表是八进制)。可这又和那个有什么关系呢,也不一样啊。别着急,我们慢慢分析。

2.3.2 如何获得最终权限

首先我们输入umask获得权限掩码,然后再通过公式最终权限 = 初始权限 & (~权限掩码)

拿我的举例

Linux

三、目录的权限以及粘滞位

3.1 目录的权限

• 可执行权限(x):如果目录没有可执行权限,则无法cd到目录中。

• 可读权限(r):如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。

• 可写权限(w):如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

有了上面的说明,我们首先要知道,文件的删除并不是由文件本身决定,而是它所在的目录决定。

当我们在创建一个新用户时,系统会在/home自动创建一个用户的家目录。

Linux

我们可以观察到这个目录对others的权限是0,这说明其他人不可以进入我的家目录,更不可能增删查改文件。

我们有时需要进行多个用户之间的文件数据共享,这个时候就需要超级用户在根目录下创建一个共享的文件,并且把其他人的权限改为7,保证普通用户可以进入目录,并且可以查看和创建文件。

但是问题来了,如果有内鬼怎么办,别忘了能创建就可以删除啊。就比如wow辛辛苦苦写的文件,cyy不想干了,把文件删了。这种情况该怎么办呢,删除和创建查看绑在一起了,这个时候粘滞位就派上作用了。

3.2 粘滞位

如何使用粘滞位呢?很简单,只需要chmod +t 即可。

语法:chmod +t

功能:使该目录下的文件只能由超级管理员、该目录的所有者或该文件的所有者删除。

实例

我们根目录下系统自带了一个tmp目录供我们实现多用户文件数据共享操作。

Linux

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分