• 一文知晓Linux文件权限


    在这里插入图片描述

    🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
    🐻推荐专栏1: 🍔🍟🌯C语言初阶
    🐻推荐专栏2: 🍔🍟🌯C语言进阶
    🔑个人信条: 🌵知行合一
    🍉本篇简介:>:讲解Linux中权限相关的知识,权限管理,文件掩码,粘滞位等等.
    金句分享:
    ✨你没有走错路,只是在等待风的到来.✨

    一、用户介绍

    (1) 用户分类

    在初始Linux时,我们提到过,当时还讲解如何添加新用户.

    Linux环境安装

    在这里插入图片描述

    Linux下有两种用户:
    (2)root超级用户:几乎可以在linux下进行任何想要做的事情,为所欲为,不受限制.
    (2)普通用户:在linux下进行受很多权限约束的事情.

    小知识点:
    root超级用户的命令提示符是“#”.
    普通用户的命令提示符是"$".
    每个用户都需要各自的密码,无论是root超级用户还是普通用户.

    (2) 切换用户

    在学习阶段,我们建议使用普通用户,但是,很多时候,普通用户会受到很多限制.
    比如:安装软件或者指令的时候要求使用root账户.

    在这里插入图片描述

    此时我们需要切换到root账户,进行下一步操作.

    ①从普通用户–>切换到root用户

    su root
    
    • 1

    在这里插入图片描述

    从当前路径此时我们可以发现,这只是身份切换到了root,并不是以root账户的身份登录的.

    切换回来,使用exit或者Ctrl+d.
    在这里插入图片描述
    如果我们想在普通账户身份登录后,切换到root时,是以root账户登录.
    在这里插入图片描述
    切换回去,依旧可以使用exit或者Ctrl + d.

    root账户–>普通账户

    不要密码,直接su username

    在这里插入图片描述

    牛牛小结:↓
    在这里插入图片描述

    提一句:为了解决指令执行时的权限问题,我们一种方式是切换到root用户,除此之外,我们还可以采用对一条指令进行提权的操作.

    sudo command(指令的名称)
    
    • 1

    此时只需要输入我们普通用户自己的密码就行了.但是这岂不是人人皆可以root了?
    其实不是所有的普通用户都可以进sudo + 指令提权,只有被加入到root的信任用户名单的才可以,而一般我们创建的新用户都是不可以的,需要在root那手动配置.
    在这里插入图片描述

    二、权限管理

    (1) 文件访问者分类:

    C++中,我们对不同的用户分成了三类人:

    1. 所有者:文件或文件目录的所有者 u(全称:user)
    2. 组员:文件和文件目录的所有者所在的组的用户:g(全称:Group)
    3. 其他用户 o (全称:other)

    (2) 文件类型分类:

    d:文件夹
    -:普通文件: 文本文件,可执行文件,库等.
    l:软链接: 与Windows的快捷方式类似
    b:块设备文件: 硬盘、光驱等
    p:管道文件: 用来通信的文件
    c:字符设备文件: 键盘、显示器等文件.
    s:套接口文件

    (3) 文件权限分类:

    权限文件角度目录角度
    r (全称:read)读取文件内容的权限查看该目录信息的权限
    w(全称:write)修改文件内容的权限删除、移动目录内文件的权限
    x(全称:execute)执行文件的权限进入目录的权限
    -无权限无权限

    ① 读权限 (r (全称:read)):
      从文件角度来说, 具有读取文件内容的权限.
      从目录角度来说, 具有查看该目录信息的权限.

    ② 写(w(全称:write)):
      从文件角度来说, 具有修改文件内容的权限.
      从目录角度来说, 具有删除、移动目录内文件的权限.

    ③ 执行( x(全称:execute)):
      从文件角度来说, 具有执行文件的权限.
      从目录角度来说, 具有进入目录的权限.

    介绍这些基本知识之后,我们可以开始学习权限知识啦!

    在这里插入图片描述

    当我们使用ll指令查询文件详细信息时,是否好奇过前面一大串是什么呢?

    在这里插入图片描述

    (4)修改用户权限:

    目录下有一个test1.txt文件,对不同用户的权限如下:

    文件名usergroupother
    test1.txt可读可写不可执行可读可写不可执行只读

    在这里插入图片描述

    这里我们发现,似乎root不受权限的限制,可以自由行事!

    (4)修改文件权限

    那如果想修改文件对other权限,使其对other的权限

    在这里插入图片描述

    小结:

    //对单个用户修改权限
    //示例:将test1.txt对other用户添加w权限
     chmod o+w test1.txt
    
    //对多个不同用户进行不同的权限设置,中间用逗号隔开
     chmod u+x,g-rw,o-r test1.txt
    
    //同时对所有用户进行统一操作.
     chmod a-rwx test1.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    小知识:

    还可以采用8进制的方式对文件权限修改.
    在这里插入图片描述

    示例:
    在这里插入图片描述

    (5)修改文件的拥有者

    指令: chown 新拥有者名 文件名
    全称: change owner

    我是一件物品的拥有者,如果我想将它赠送给别人,这也要看别人是否同意.

    要么对指令进行提权,要么利用root账户帮忙修改.

    在这里插入图片描述

    (6)修改文件的所属组

    指令:chgrp 新组名 文件名
    全称: change group

    同样,自己是没有权限修改所属组的.

    在这里插入图片描述

    利用root账户进行修改:
    在这里插入图片描述

    三、文件掩码

    我们分别创建一个文件和一个目录:

    观察它们的文件权限:
    在这里插入图片描述

    很明显,它们的默认权限是

    文件夹文件
    07750664

    可默认权限真的是这样的吗?

    (1) 查看文件掩码

    指令:umask

    不同环境可能有所差异.
    在这里插入图片描述

    (2) 修改文件掩码:

    指令:umask 修改后的数值

    在这里插入图片描述

    (3) 文件默认权限计算

    将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002
    这里的减并不是直接减法,而是权限的减,即文件掩码中出现的权限,最后的文件权限中不得出现

    计算公式:

    umask & (~umask)
    
    • 1

    在这里插入图片描述
    这也就是为什么我们一开始看到的新创建的文件和文件夹的权限是 06640775
    .

    (4) 文件掩码的作用

    Linux下的文件掩码(file mode mask)决定了新建文件目录的默认权限。它是一种用于限制文件和目录权限的掩码,通过与系统默认权限进行按位与运算来决定最终的文件/目录权限。

    默认情况下,新建的文件和目录的权限是非常开放的,因此要通过文件掩码来进行限制,以便确保文件和目录的安全性。文件掩码通常包括三个数字,分别代表所有者、组和其他人的权限。每个数字都由三个位组成,分别代表读、写和执行权限。例如,一个掩码为022的文件表示所有者具有读写权限,组和其他人只具有读权限。

    四、粘滞位

    粘滞位的引入

    目录的权限强调:

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

    对于一个共享目录,有的文件我们不希望给其他人(other)看和修改.那other可以删除这个文件吗?
    在这里插入图片描述

    在这里插入图片描述

    此时出现一个比较尴尬的问题:
    对于这个文件,其他人既不能读,也不能写,但是居然可以删除,太离谱了吧,得不到的就毁灭?

    为什么可以删除文件呢?
    因为文件是否可以删除不是取决于文件本身的权限,而是该文件所在目录的权限,如果目录没有可写权限, 则无法在目录中删除文件.

    那我们文件所在目录设置为其他人不可写不就行了吗?

    (1)对其他用户去掉写权限;
    在这里插入图片描述
    (2) 再次测试:
    在这里插入图片描述

    是的,这样的确其他人不可读不可写也不可删了,但是目录设置不写以后,连创建文件和文件夹都不行了,这叫共享目录吗?

    为了解决这个尴尬的问题,也就是在一个共享目录下,该目录具有对所有用户具有写权限,但是删除目录中的文件,只有两种人:

    1、该目录的所有者删除(几乎只有root才可以创建)
    2、该文件的所有者删除

    (1) 设置粘滞位

    指令:chmod +t 目录名

    在这里插入图片描述

    (2) 测试粘滞位:

    在这里插入图片描述

    五、权限的特殊问题

    问题1:
    文件所有者减去了文件的所有用户权限后,即使自己是所有者,依旧不可读写.

    疯起来我连自己都敢打!
    在这里插入图片描述

    问题2;
    如果一个用户对于test1.txt文件他既是所属组又是拥有者,但是该文件
    拥有者:只读
    所属组:可读可写
    那该用户到底可不可以对文件进行写操作呢?
    在这里插入图片描述
    在这里插入图片描述
    答案: 不能!
    在这里插入图片描述
    因为一个人只能是一个身份,第一个识别到是拥有者,则看到的只有读权限,我们可以用 root账户将拥有者改掉,我就是所属组了,就可以读写了.

    有关linux权限的知识就讲到这里了,谢谢友友们的观看,我们下期见!
    在这里插入图片描述

  • 相关阅读:
    Vue 表单控制 生命周期
    gRPC-go 元数据
    web前端期末大作业 html+css+javascript+jquery+bootstarp响应式鲜花售卖网站16页
    LeetCode【3. 无重复字符的最长子串】
    【计算机网络】NAT机制的工作流程
    【WSL2】CENTOS7 安装与配置
    Linux的进程互调技术(多语言互调)
    线框图软件:Balsamiq Wireframes mac中文介绍
    SAP UI5 指定 / 变更版本
    从 Mysql binlog 过滤抽取指定条件的SQL语句
  • 原文地址:https://blog.csdn.net/qq_67276605/article/details/134073753