Linux基础——Linux权限详解

简介: Linux基础——Linux权限详解

前言:本篇开始我们要对Linux进行更深入的学习了,让我们来进入新篇章:Linux的权限理解!

首先让我们来初步了解一下本篇的内容:


1. shell命令以及运行原理

Linux操作系统准确来说是:Linux内核+Linux外壳+配套程序

Linux外壳也就是shell

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

shell存在到底有何意义,为什么要有shell?

首先:命令行解释

因为Linux内核的设计非常复杂,用户无法直接向Linux内核进行沟通,更不能直接读懂内核执行完命令的结果,所以shell外壳充当"媒婆"这一角色,来进行用户和内核沟通上的翻译。

外壳将用户输入的指令翻译给内核处理
内核处理后得到的结果翻译给用户

其次:保护内核

有时用户想要内核执行的命令内核无法做到,因此指令根本不会"打扰"内核,它会在shell外壳进行翻译时就被驳回。

注意:shell是对所有命令行解释器的统称
Linux下的shell外壳是bash
windows下的shell外壳是图形化界面


2. 用户

2.1 普通用户和超级用户

一个Linux账号只有一个超级用户:root

创建的其余用户都叫做普通用户

如果想在Linux里切换用户我们可以:

指令:su 用户名

注意:超级用户切换为普通用户不用输密码

普通用户切换为root或其他普通用户需要密码


2.2 指令提权

当我们现在是普通用户,但需要root用户的权限才能使用的指令,来回切换很不方便。我们可以:

指令:sudo 需提权的指令

sudo 可以帮我们提权使用指令,但是如果此用户没有被添加到sudoers白名单sudo就无法提权。(先简单了解)

3. 文件

在我们最初接触Linux使用ls -l查看文件时,我们只考虑了文件名称,在文件名称前的那些代表什么呢?

让我们来了解一下这三者。

3.1 角色属性

在文件属性后的表示角色属性

前者是代表文件的拥有者

后者是代表文件的所属组

拥有者代表这个文件的创建者
所属组代表此组组长

注意:在除了拥有者和所属组之后,还有第三个角色other,
other表示除了拥有者和所属组的其他人

当我们在普通用户目录下用root创建文件拥有者就改变了。

3.2 文件类型

在文件属性的第一个表示的是文件类型

现阶段一般常见的都是文件夹d和普通文件-

3.3 文件的读写权限

以我们刚刚创建的文件为例:

此文件:

拥有者:可读可写不可执行
所属组:可读不可写不可执行
other:可读不可写不可执行

下表能让我们更好理解

3.4 读写权限的进制表示

关于权限我们还可以转化成进制表示:

此处的0,1:有权限代表1,没有权限代表0。

再用刚刚创建的文件为例:

这就是用进制来表示文件的权限


4. 文件修改

4.1 文件权限的修改

方法一

如果我们对当前文件的权限不满意,我们可以:

指令:chmod [参数] 权限 文件名

再用刚刚创建的文件为例:

我们给文件的所有用户加上w权限

注意:只有文件的拥有者或root可修改文件权限

当没有读取权限就去读取时会报错

这里我将所有用户的读取权限全部取消,但是在root用户下我们依然可以读取

因此:权限不能限制root的访问,因为root是超级用户!!!


方法二

修改文件权限时,除了使用+,-,=号还可以用八进制进行修改

指令:chmod 八进制数 文件名

我们依然使用pxt.txt文件来示范:

用八进制实则和二进制有关,将666转化为二进制就是110 110 110
所有人的读写权限都存在,而执行权限无。


4.2 修改文件的拥有者/所属组

修改拥有者

指令:chown 用户名 文件名


修改所属组

指令:chgrp 用户组名 文件名

注意:普通用户是无法把自己的文件给另外一个用户的,因为这很容易出现文件的泄露影响安全,只有root账号或者使用sudo提权才能将文件的拥有者/所属组修改!


5. 文件夹权限

文件夹的权限和普通文件权限有一定差异

r : 用户能否查看文件夹下文件的信息

w : 用户能否在此文件夹下创建/删除文件

x : 用户能否进入此文件夹

在文件夹NULL只有拥有者有创建删除文件的权力,让我们用除root的用户创建时:

因为权限被限制,我们无法创建文件!


6. 默认权限以及权限掩码

6.1 默认权限

当我们同时创建几个文件和目录时:

我们发现目录之间,文件之前的权限都是一样的:

因此:

目录的默认权限为:7 5 5
普通文件默认权限: 6 4 4

文件的权限是由两个因素决定

  1. 文件的起始权限
  2. 文件的权限掩码

一般情况下
目录的起始权限为:7 7 7
普通文件的起始权限为: 6 6 6


6.2 权限掩码

我们可以用指令来查询文件的权限掩码:

指令:umask

我这里默认为022
用起始权限777-022=755,目录的默认权限正好为755
而起始权限666-002=644,普通文件的默认权限正好为644

权限掩码计算

文件的默认权限并不是简单 = 起始权限 - 权限掩码!

真正的计算方法是:最终权限=起始权限&(~权限掩码)

直接记忆可能有点难,我们转化记忆。

  1. 将起始权限和权限掩码都转化为二进制
  2. 再按位比较
  3. 权限掩码为1的地方,最终权限都为0
  4. 权限掩码为0时,不变


修改权限掩码

在Linux中权限掩码是可以修改的:

指令:umask 八进制数

当我将权限掩码修改为771时,创建新文件test3.c时,就只有other有读写权限

7. 总结拓展

在Linux中的权限十分分明,保护也非常到位,除了root外其他用户并不能直接拿走你的文件,也不会修改删除你的文件。


拓展:粘滞位

如果只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。如果是这样,那就不可想象了!

因此在Linux中引入:粘滞位

这样既可以让他使用文件但不会被删除

粘滞位是一种权限位,它可以应用于目录上,用于限制用户对其中文件的删除。当一个目录设置了粘滞位后,只有文件的所有者或者超级用户可以删除该目录下的文件,其他用户无法删除。这样可以防止用户在共享目录中意外删除其他用户上传的文件。

指令:chmod +t

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

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

如有兴趣,可以自行深入了解!蟹蟹大家支持!

目录
相关文章
|
24天前
|
关系型数据库 MySQL Shell
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
|
23天前
|
监控 安全 Linux
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
|
27天前
|
Linux 数据处理 数据库
深入解析Linux命令id:理解用户身份与权限
`id`命令在Linux中用于显示用户身份(UID, GID和附加组)。它查看系统用户数据库获取信息。参数如`-u`显示UID,`-g`显示GID,`-G`显示附加组,结合`-n`显示名称而非ID。用于确认命令执行者身份,确保权限正确。在脚本中使用时注意权限管理,遵循最小权限原则。
|
23天前
|
Java Linux PHP
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
|
23天前
|
监控 网络协议 Ubuntu
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务
|
7天前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
|
8天前
|
Linux 数据安全/隐私保护 iOS开发
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
|
15天前
|
安全 关系型数据库 MySQL
技术经验解读:【Linux】Linux系统中的权限详解
技术经验解读:【Linux】Linux系统中的权限详解
11 0
|
1月前
|
Linux Shell 数据安全/隐私保护
【Linux2】Linux的权限
【Linux2】Linux的权限
|
17天前
|
Linux 开发工具 C语言
【Linux】Linux的权限_2 + Linux环境基础开发工具_1
【Linux】Linux的权限_2 + Linux环境基础开发工具_1
14 0