【Linux】权限

图片名称

博主首页: 有趣的中国人

专栏首页: Linux


    本篇文章主要讲解 Linux权限 的相关内容

      1. Linux权限的概念

      什么是权限

      权限就是通过一定的条件,拦住一部分人,给另一部分人权力来访问某一种资源。
      例如:你是腾讯视频vip,你就可以提前收看一些影视,但是如果你有LeetCode会员,但是你想在LeetCode上看视频,显然是不符合逻辑的,因此,权限还和事务的属性有关。

      因此权限和人有关,也和事务的属性有关,即 权限 = 人("角色")+ 事务属性

      Linux用户

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

      • 超级用户:可以在Linux上做任何事情,不受限制;
      • 普通用户:在Linux上做有限的事情;
      • 超级用户的命令提示符是"#",普通用户的命令提示符是"$"

      在这里插入图片描述
      在这里插入图片描述

      可以采用命令: su [username] 进行用户的切换。例如:

      • root用户切换成普通用户usersu user
      • user切换至超级用户rootsu root(root可省略)会提示你输入root password

      但是如果我不想切换成root用户,仅仅用root的权限来执行一段命令该如何呢?
      只需要输入:sudo [命令] 例如我要用root身份创建一个文件:sudo touch file.txt,这时会提示你输入user password


        2. Linux权限管理

        文件访问者的分类(人)

        Linux中有三种角色:

        • 拥有者(user)
        • 所属组(group)
        • 其他(other)
          在这里插入图片描述

        文件类型和访问权限

        文件属性权限一般分为三种:

        • r(read
        • w(write
        • x(excute

        在这里插入图片描述

        在这里插入图片描述

        修改权限的做法

        对于一个文件谁能修改它的权限呢?就两个

        • 拥有者
        • 超级用户root

        可以用命令 chmod 来修改权限 ,

        • 给拥有者加权限:chmod u+rwx [filename]
        • 给拥有者减少权限:chmod u-rwx [filename]
        • 给所属组加权限:chmod g+rwx [filename]
        • 给所属组减少权限:chmod g-rwx [filename]
        • 给other加权限:chmod o+rwx [filename]
        • 给other减少权限:chmod o-rwx [filename]
        • 给所有角色加权限: chmod a+rwx [filename]
        • 给所有角色减少权限:chmod a-rwx [filename]

        注意这里的权限要加多少、减少多少都由自己控制。
        也可以一条指令搞定:chmod u+-rwx,g+-rwx,o+-rwx,a+-rwx [filename]


        权限有无的表现

        假如我们给拥有者创建的文件的权限修改:

        • chmod u-r file1.txt
          在这里插入图片描述
        • chmod u-w file1.txt
          在这里插入图片描述
        • chmod u-x file1.txt
          在这里插入图片描述

        因此,对于普通用户自身也要受到对应权限的限制,即便这个文件是自己的,接下来看一下root

        我们首先把所有权限都取消:

        在这里插入图片描述

        然后用root用户增加文件内容,查看文件内容:

        在这里插入图片描述

        可以发现root不受权限的限制。
        权限的存在,保证普通用户的文件一般的安全性。

        在上面的普通用户的例子中,虽然拥有者的权限全部都没了,但是所属组的权限还是在的,那为什么不会利用所属组的权限呢?实际上Linux对身份的识别只有一次,

        • 如果识别到了,就用此身份进行访问,不会再继续识别;
        • 如果为识别到,就用other。

        证明对身份的识别只有一次

        我们对一个文件修改它的普通用户身份,但是所属组不变,那原来的拥有者不是这个文件的拥有者,但是他还是属于所属组,如果是识别一次,那就会把原来的拥有者识别成属于所属组的,所以还是可以访问的:
        在这里插入图片描述

        权限修改的第二套做法


        八进制表示法:
        在这里插入图片描述
        因此我们可以用指令 chmod [三三一组转换为对应八进制的值] [filename] 来修改权限,例如:
        在这里插入图片描述

        我们知道权限 = 角色 + 事务(文件)属性我们刚才修改的是文件的属性,那是否能修改角色呢?即更改拥有者和所属组呢?肯定是可以的,但是修改拥有者和所属组是强制的,所以只能用root用户来进行更改。

        • 修改拥有者:chown [新用户] [filename]
          在这里插入图片描述
        • 修改所属组:chgrp [新组] [filename]
          在这里插入图片描述
        • 一起修改:chown [新用户]:[新组] [filename]
          在这里插入图片描述

          3.文件的分类

          我们知道文件权限的最头部的一个字符是代表文件的属性,那文件有哪几种呢?

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

          好多文件都属于普通文件,例如:普通文件、文本文件、可执行程序、库等都叫做普通文件。

          关于后缀


          Linux系统不以后缀名来区分文件类型(注意不是Linux不需要后缀),并不代表Linux中的有些功能不需要,例如gcc,看这个例子:
          在这里插入图片描述
          在这里插入图片描述
          所以一般情况下是可以用后缀的!

          那这个可执行权限是啥呢?
          可执行权限 vs 可执行
          能执行是要求:本身就是可执行文件 + 角色有可执行权限


            4. 关于目录文件

            进入目录的权限

            进入目录需要的权限是 x 可执行权限

            我们知道r是读取文件的内容信息,那么对于目录的内容信息是什么呢?
            是此目录内所有文件的详情数据,因此r是此目录内读取所有文件信息的权限。

            我们知道w是修改文件内容信息,因此w权限决定用户是否能在目录内增加、删除、修改文件。
            在这里插入图片描述

            创建文件开始权限

            对于普通文件起始权限是0666,目录文件是0777,那为什么创建出来之后是这个样子呢?
            在这里插入图片描述
            这个和umask有关,umask对于某些系统可能不同
            在这里插入图片描述

            文件创建出来之后的初始权限其实是起始权限过滤掉umask中出现的权限(这里的过滤不是简单的减法,其实是 起始权限 & (~umask)
            例如

            • 对于普通文件:
              在这里插入图片描述
            • 对于目录文件
              在这里插入图片描述

            关于目录文件中的删除

            • 我们先利用普通用户的身份和root的身份创建价格文件:
              在这里插入图片描述
            • 然后用root的身份删除文件
              在这里插入图片描述
            • 再用普通用户身份删除root创建的文件
              在这里插入图片描述
              很明显删除成功了,这是为什么呢?

            因为对于目录而言,能否删除目录中的文件和文件本身无关,和目录的属性有关,如果对于某个角色没有w权限,那么就无权取修改目录中文件的详情信息,例如:无法删除文件、增加文件。

            • 那如果我们把普通用户对于目录的w权限取消掉,就无法删除了:
              在这里插入图片描述
            • 当然对于root来说还是没用的:
              在这里插入图片描述

            创建多人共享文件

            那么如何创建多人共享文件呢?
            首先肯定不能在各自的加目录下创建,因为对于路径./home中创建的文件对于除了拥有者之外的所有人都无权限访问、修改、进入:
            在这里插入图片描述

            所以只能在非用户目录下创建,例如root账户创建了一个shared目录,并给other加上w权限:
            在这里插入图片描述
            在这里插入图片描述

            这时候任意用户都可以进入这个目录创建文件、修改文件,

            • 创建文件
              在这里插入图片描述
            • 查看文件内容
              在这里插入图片描述
            • 甚至可以删除文件
              在这里插入图片描述
              但是我们只希望你可以添加文件,不可以删除不是你创建的文件,应该怎么做呢?

            粘滞键

            我们可以采用粘滞键的方法,给other加上粘滞键的权限:chmod +t shared,这样就不允许别人删除你创建的文件了:
            在这里插入图片描述
            这样在这个粘滞键的目录中就不允许除了创建目录的人和root对文件进行修改甚至删除,只能进行查看:

            • 用户一创建test.c文件,并进行追加数据:
              在这里插入图片描述
            • 用户二想在此文件中进行追加数据:
              在这里插入图片描述
            • 用户三想删除用户一创建的文件:
              在这里插入图片描述

            总结:

            当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
            一、超级管理员删除或者修改
            二、该目录的所有者删除或者修改
            三、该文件的所有者删除或者修改

            相关推荐

            1. linux权限

              2024-04-24 20:36:05       52 阅读

            最近更新

            1. docker php8.1+nginx base 镜像 dockerfile 配置

              2024-04-24 20:36:05       94 阅读
            2. Could not load dynamic library ‘cudart64_100.dll‘

              2024-04-24 20:36:05       100 阅读
            3. 在Django里面运行非项目文件

              2024-04-24 20:36:05       82 阅读
            4. Python语言-面向对象

              2024-04-24 20:36:05       91 阅读

            热门阅读

            1. 条件概率、全概率公式与贝叶斯公式

              2024-04-24 20:36:05       32 阅读
            2. docker 常用命令

              2024-04-24 20:36:05       35 阅读
            3. centos常见的命令

              2024-04-24 20:36:05       38 阅读
            4. Vue 常用修饰符

              2024-04-24 20:36:05       25 阅读
            5. 关于文件上传的前后端优化

              2024-04-24 20:36:05       35 阅读
            6. go设计模式之工厂方法模式

              2024-04-24 20:36:05       33 阅读
            7. SQL server简介

              2024-04-24 20:36:05       32 阅读
            8. SQL Server详细使用教程

              2024-04-24 20:36:05       37 阅读
            9. class093 贪心经典题目专题5【左程云算法】

              2024-04-24 20:36:05       30 阅读