Linux权限管理

Linux权限管理

一、shell命令以及运行原理

1.何为shell

​ Linux和windows相比,windows是以图形化界面为交互方式,Linux则是以命令行为交互方式;我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作;Linux主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果再通过内核运行出结果,通过shell解析给用户。两者都是间接的去操纵内核,虽然方式不同,但是这两种方式都被称之为“外壳程序(shell)”

image-20240112084220307

常见的shell有GUI,KDE,sh,csh,bash,tsh,zsh等、而linux中最常用的shell就是bash

2.shell命令的运行原理

  1. shell是做命令行解释的,给操作系统解释,同时将结果翻译给用户;
  2. shell外壳会保护操作系统,并不是用户所有的命令都会传递到操作系统,对系统有危害性的命令会被阻止
  3. shell的运行原理:(shell本身就是一个进程)创建子进程,其好处为子进程出现任何问题都不会影响父进程shell;

image-20240112084704919

二、Linux下权限问题

1.权限的概念

在Linux下有两种用户:超级用户(root:权限相当大)和普通用户(自己创建的用户);
超级用户:可以在linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
image-20240112090428817

2.用户之间的切换

​ 超级用户和普通用户的权限不同,有些时候在普通用户下不能完成的操作,就需要我们切换到超级用户下去完成。
语法:su 用户名
说明:su 可让用户暂时变更登入的身份。变更时须输入所要变更的用户账号与密码;
例如:要从root用户切换到普通用户user,则使用su user。要从普通用户user切换到root用户则使用 su root (root可以省略),此时系统会提示输入root用户的密码。

image-20240112091312109

当想要切换到上次的用户时,可以通过ctrl+d实现

3.普通用户的权限

​ 当在普通用户下时,如果你想要创建一个超级用户的文件,我们可以切换到超级用户创建,但是这样会比较麻烦,每次都需要输入密码;我们也可以提升一下普通用户的权限来实现刚才的操作。
语法:sudo 指令
说明:sudo 是 linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。sudo 不是对shell的一个替代,它是面向每个命令的。

image-20240112092232664

你一定会遇到下面这种情况,当我们执行sudo的时候,报这样一个错误

xxx is not in the sudoers file. Thisincident will be reported.

简单来说,ljh和root是好兄弟,xxx和root只是朋友;root是大哥,xxx也想成为root的好兄弟;就必须把xxx添加到信任列表中。

4.普通用户如何添加到信任列表中

​ 首先要确保当前用户是超级用户(root),只有root才能将普通用户添加到信任列表中,因为root的权限是最高的。在root用户下,输入指令:vim /etc/sudoers

image-20240112093544423

image-20240112093454479

三、Linux权限管理

1.文件访问者的分类

对于用户来讲,我们可以将其分为三类:

  1. 文件和文件目录的所有者:u - User(拥有者)
  2. 文件和文件目录的所有者所在的组的用户:g - Group(所属组)
  3. 其他用户:o - Others

image-20240112094626808

​ 从上图中可以看出,A组和B组都有一份文件,假设他们都在Linux环境下做项目,小王和小李都是组内能力很强的员工,两人都希望能独挡一面;小王(user)想要在Linux下偷偷查看小李的文件,这是做不到的。小王并不属于B组(group),小李也是一样的;
​ 小王和小李的文件只能是自己(user)和所属组(group),other是访问不了的;以A组为例other不仅包括了other还有B组;

image-20240112095244755

2.文件类型的访问权限

在Linux中,我们通常查看当前目录下文件的详细信息,使用ll指令,会看到文件前面有很多字符,他们都是什么意思呢?

image-20240112095432106

​ 在上图我们已经了解了拥有者、所属组和other的概念,接下来要重点掌握权限这个概念

image-20240112095531371

文件类型的种类:

  1. d:文件夹
  2. -:普通文件
  3. l:软链接(类似Windows的快捷方式)
  4. b:块设备文件(例如硬盘,光驱等)
  5. p:管道文件
  6. c:字符设备文件(例如屏幕等串口设备)
  7. s:套接口文件

image-20240112095750789

对于一个文件而言,Linux给三类人划分了权限:

  1. r:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. w:Write对文件来说,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  3. x:execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  4. -:表示不具有该项权限

3.文件权限值的表示方法

1.字符表示法
Linux表示说明Linux表示说明
r - -仅可读- w -仅可写
- - x仅可执行r w -可读可写
- w x可写可执行r - x可读可执行
r w x可读可写可执行- - -无权限
2.八进制数值表示法
权限符号八进制二进制说明
r - -4100仅可读
- w -2010仅可写
- - x1001仅可执行
r w -6110可读可写
r - x5101可读可执行
- w x3011可写可执行
r w x7111可读可写可执行
- - -0000无权限

4.文件访问权限的相关设置方法

1.chmod指令 —— 权限修改

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

格式1:用户表示符 +/- = 权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其他用户
a:其他用户

image-20240112104050526

格式2:三位8进制数字

image-20240112104518231

2.chown指令 ——修改拥有者

功能:修改文件的拥有者
语法:chown [参数] 用户名 文件名
image-20240112105118998

同时修改拥有者、所属组(中间需要用:隔开)

image-20240112105356299

3.chgrp指令 ——修改所属组

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

四、文件掩码

​ 仔细观察我们在创建普通文件和目录时,他们的权限类型是相似的,如下图所示:
image-20240112110446370

​ 我们惊奇的发现普通文件和他们的目录被创建出来后,权限的格式都是一样的
​ 普通文件:r w - r w - r - -(664)
​ 目录: r w x r w x r - x (775)

实际上,普通文件和目录被创建出来,默认的权限是0666和0777。在这里我们只要关系后三位的权限;它是如何从666 ——>664;777——>775? 这是因为受到了文件掩码的影响;

1.umask指令

功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:mask &~ umask(重要)
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002

image-20240112115106784

2.默认权限到实际权限的过程

​ 通过默认权限过滤文件掩码,保留下来的就是实际权限
image-20240112115252435

当然你也可以进行文件掩码的修改
# umask 044 //设置

五、目录的权限

可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。
可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。
可执行权限:如果目录没有可执行权限,则无法cd到目录中。

image-20240112144455424

​ 明明root用户将other的权限已经限制了,但还是能把文件删掉,这样的操作是绝对不允许的;换句话来讲,就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。这好像不太科学阿,我张三创建的一个文件,凭什么被你李四可以删掉?
​ 为了解决这种不合理的操作,Linux就引入了粘滞位的概念。

六、粘滞位

当一个目录被设置为“粘滞位”(用chmod + t ),则该目录下的文件只能由

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

语法:chmod + t 目录名

image-20240112144143461

如果目录本身对other具有w权限,other可以删掉任何目录下的文件;反之,则不可以;
对设置了粘滞位的目录,在该目录下,只有该文件拥有者可以删除

七、权限的总结

  1. 目录的可执行权限是表示你可否在目录下执行命令;
  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使母校仍然具有-r
  3. 读权限(这个地方和容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  4. 如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls指令,但仍然没有权限读出目录下的文档。
  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li小李同学Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值