【Linux】Linux权限的理解



🎪 Linux权限的理解

Linux权限是一个很重要的概念。如果没有权限的约束,那么一些重要的文件将可能会受到威胁。

🚀1.shell命令及其运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel

从技术角度, Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。

Windows GUI:即为图形化接口,我们通过图形化界面来操作Windows内核,这里的GUI就是Windows的shell程序

Linux Bash: 即为命令行接口,我们通过命令行来操作Linux内核,这里的Bash就是Linux的shell程序

如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。

🚀2.Linux权限概念

Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

这里用于账户切换的命令如下:

命令:su [用户名]
功能:切换账户

⭐2.1 用户与root身份切换

  • 输入su :接着再输入管理员密码
    此种情况下,相当于仅仅进行的身份切换,原先处在的家目录不变
  • 输入su-:接着再输入管理员密码
    此种情况相当于直接进行了账户切换,切换后root1会出于自己的家目录

在这里插入图片描述

除此之外,切换为root,使用su + 用户名可以再将身份切换为任意普通用户

在这里插入图片描述

⭐2.2 用户与用户身份切换

如果是用户,想要切到另外一个用户也可以用 su + 用户名,但没有密码的话将为失败
在这里插入图片描述
此时如果知道root账号密码,那么就可以先切换为root,然后root切换账户将会畅通无阻
在这里插入图片描述

⭐2.3 单条指令提权

对单条指令提权的指令如下:

语法:sudo [任意指令]
功能:对该指令以root的权限执行

对于我们刚刚的用户之间切换,我们就可以使用sudo su msr,然后输入自己的账户密码就可以完成对该条指令进行root提权。那岂不是root形同虚设?我们随便对一条指令进行sudo提权不就可以干任何事啦,但遗憾的是:
在这里插入图片描述
提权失败,这是由于我们当前用户未在linux系统的信任列表里面,即便你用了sudo提权并输入正确的用户密码(注意这里输的是自己的账户密码)也无法进行提权
关于注册用户进信任列表我们后续博客中说明。

🚀3.Linux文件权限

我们用以下展示的界面进行:权限 = 人 + 事务属性(文件 + rwx)

在这里插入图片描述

⭐3.1 文件属性(第一个字符)

上图中第一个字符表示文件属性:

  • d:表示目录
  • -:表示文本文件,可执行文件,归档文件等
  • b:块设备,例如硬盘、光驱等
  • c:字符设备,例如键盘、显示器
  • p:管道文件
  • s:网络socket文件
  • l:链接文件

⭐3.2 文件角色划分与文件属性

Linux中一个文件有三种角色划分:

  • 文件拥有者
  • 文件所属组
  • 文件other

Linux中一个文件有三种权限:

  • r:读
  • w:写
  • x:执行

上述图片中文件属性(第一个字符之后),有9个字符,每三个分别代表:文件拥有者,文件所属组,文件other权限,然后紧跟的两个用户名分别代表文件拥有者和文件所属组的名字,其他用户默认是other
在这里插入图片描述
还可以用以下图片来描述:
在这里插入图片描述

⭐3.3 文件权限值的表示方法

  • 字符表示方法
    在这里插入图片描述
  • 进制数值表示方法
    在这里插入图片描述

⭐3.4 修改文件或目录读写执行权限

我们可以用以下命令来修改:

语法:chmod u/g/o +/- r/w/x 文件/目录
功能:修改文件或目录的读写执行权限(注意中间无空格,如:chmod u+r test.c)

对于以下目录:
在这里插入图片描述
我们先来看看没有读写执行权限会怎样,此时除了root外,任何用户都不能对test.c进行读写执行:
在这里插入图片描述

1. 修改文件读写执行权限

  • 对test.c授予拥有者的读写执行权限
    命令:chmod u+rwx test.c
    在这里插入图片描述

  • 对test.c授予所属组的读写权限
    命令:chmod g+rw test.c
    在这里插入图片描述

  • 对test.c收回拥有者的读权限,收回所属组读写权限,授予other可执行权限
    命令:chmod u-r,g-rw,o+x test.c
    在这里插入图片描述

  • 以八进制形式收回所有权限,并再次完成以上操作
    命令1:chmod 000 test.c
    命令2:chmod 700 test.c
    命令3:chmod 760 test.c
    命令4:chmod 301 test.c
    在这里插入图片描述

  • 收回所有权限,并给所有人添加执行权限
    命令1:chmod 000 test.c
    命令2:chmod a+x test.c / chmod 111 test.c
    在这里插入图片描述

注意:可以执行授予或者收回文件的用户只能是root或者文件拥有者

2. 修改文件读写执行权限

目录的权限跟文件有很大的差别,我们可以把目录当成可执行程序,然后打开目录就相当于执行这个程序。

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

我们来验证一下:
在这里插入图片描述

3. 修改文件或目录拥有者及所属组

语法:chown 用户名 文件
功能:修改文件或目录的拥有者,也支持一起修改

语法:chgrp 用户名 文件
功能:修改文件或目录的所属组

注意: root可以支持任意修改,但拥有者只可以将所属组名改成自己的,但不支持将拥有者和所属组改成其他用户.

所以修改操作我们在root下进行:

  • 修改test.c的拥有者为msr

命令:chown msr test.c

在这里插入图片描述

  • 修改test.c的所属组为msr

命令:chgrp msr test.c

在这里插入图片描述

  • 修改test.c的拥有者和所属组为msr

命令:chown ljk:ljk test.c

在这里插入图片描述

🚀4.粘滞位

背景:在使用linux的时候,未来可能有一些共享目录,被所有的普通用户共享,用来保存普通用户产生的临时数据。因为是共享目录,要保存临时数据,那么这个目录肯定要对所有用户开放写权限,既然开放了写权限,那么用户删除目录的权限也就开放了,这就存在这一些问题,即便用户对他存放的文件添加了权限限制,但是其它用户依然有权限删除其它用户的数据,于是,粘滞位就在这样的时代背景下产生了。

添加粘滞位的方法:

语法:chmod +t 目录名
功能:添加粘滞位

添加了粘滞位的目录,这个目录下的文件只能被以下用户删除:

  • 超级管理员
  • 目录所有者
  • 文件所有者

🚀5.默认权限

我们为什么一创建文件或目录,它的默认权限就已经是确定了的呢?如下:

在这里插入图片描述
其实在linux中存在权限掩码这一概念,即umask.

语法:umask
功能:查看当前用户权限掩码

一般未做人为修改的话,root的权限掩码是0022,而普通用户的权限掩码是0002

第一位是特殊权限位,而后三位是用户权限位,真正对默认权限产生影响的是后三位。这里我们给三个概念:

  • 起始权限
  • 最终权限(默认权限)

作为一个文件,最初应该被赋予的权限应该是666(rw_rw_rw),作为一个目录,最初被赋予的权限应该是777(rwxrwxrwx),权限掩码:在起始权限中,去掉在umask中出现的权限,不能影响其它的任何权限
故我们得出结论:默认权限 = 起始权限 & (~umask)

我们来做一下验证:

对于普通用户定义的目录,起始权限:777 默认权限:775 umask:002
在这里插入图片描述

对于普通用户定义的文件,起始权限:666 默认权限:664 umask:002
在这里插入图片描述

我们也可以修改当前用户的umask,直接umask + 修改后的权限掩码即可,但是这次修改仅为临时修改,下次登录权限掩码会默认初始化一遍。如果想做到永久修改,得修改对应的配置文件才行。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Corwttaml

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

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

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

打赏作者

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

抵扣说明:

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

余额充值