• 详细刨析Linux权限。包含权限的概念、权限的修改、粘滞位等等。


    1、权限概念(谈谈我对权限的理解)

    既然在这里要讲解权限的相关知识,那么我想先谈谈什么是权限,在Linux中我对于权限的认识是一件事情是否允许被特定的人做。这句话可能还是比较抽象,下面举一个例子:某视频网站,如果是普通用户大家不可以观看VIP影视,但是VIP用户则可以观看,这里的能否观看VIP影视就是一件事情是否可以被特定的人做,而那个特定的人指的就是VIP用户。

    在Linux中关于权限的概念可以理解为不同的用户对事物属性的操作。在Linux中权限约束用户对文件操作时文件本身具有的天然的权限属性:r读权限、w写权限、x执行权限这些属性是否可以做。

    2、认识Linux中的人(文件用户类别)和文件属性

    用户类别:

    1. 拥有者:仅自己具有访问文件的权限。
    2. 所属组:仅自己和所在组具有访问的权限
    3. 其他:除拥有者和所属组外的其他成员就是其他。

    用户类别与root和普通用户的关系
    拥有者、所属组、其他指的是一种角色身份,root和普通用户指的是具体的一个人。

    Linux中的文件属性
    注意:在Linux下一切皆文件!!!这句话贯穿整个Linux的学习过程中,希望大家能够多多体会。

    Linux系统中不以文件的后缀来区分文件的类型,他以列属性的第一个字符来区分,但是对于编译器他需要识别文件后缀,下面来看不同的字符所代表的不同的含义。
    d:文件夹
    -:普通文件(文本、动静态库等)
    l:软链接(类似Windows的快捷方式)
    b:块设备文件(例如硬盘、光驱等)
    p:管道文件
    c:字符设备文件(例如屏幕等串口设备)
    s:套接口文件

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

    a、字符标识

    1. r-- 只读权限
    2. rw-读写权限
    3. rwx读写执行权限
    4. -w-只写权限
    5. -wx写执行权限
    6. –x只执行权限
    7. r-x读执行权限
    8. —无权限

    b、进制标识

    权限符号二进制位
    r100
    w010
    x001
    rw110
    rx101
    wx011
    rwx111
    —‘000

    c、Linux中用户权限的分配

    Linux中在文件的属性列中,从左到右三三为一组分别标识拥有者的权限、所属组的权限和其他用户的权限,具体如下图所示。
    在这里插入图片描述

    4、权限的修改

    1)使用chmod来修改权限

    格式:chmod [参数] 权限 文件名
    说明:只有文件的拥有者和root才可以改变文件的权限
    用户符号:
    u:拥有者
    g:拥有者同组用
    o:其它用户
    a:所有用户
    使用实例如下:

    chmod g+x test.txt //test.txt的拥有者添加可执行权限
    chmod g-rwx test.txt //test.txt的拥有者除去读写可执行权限
    chmod a-rwx test.txt //test.txt的所有用户除去读写可执行权限
    
    • 1
    • 2
    • 3

    此外权限在系统中按照二进制的方式进行标识,有权限则对应的二进制位1,反之为0;例如rw-rw-rw-对应的二进制位为:110110110,所有也可以使用chmod配合二进制来修改权限。使用实例如下:

    chmod 777 test.txt
    chmod 666 test.txt
    
    • 1
    • 2

    2)使用chown来修改拥有者

    格式:chown [参数] 用户名 文件名
    注意:在将文件给其他用户的时候,需要征得其他用户的允许。

    chown user1 f1
    
    • 1

    3)使用chgrp来修改所属组

    格式:chgrp [参数] 用户组名 文件名

    4)使用umask来修改文件的默认权限

    我们可以观察到在我们创建的文件中基于文件的类别有相同的权限,这是系统给普通文件的默认权限为666,目录文件的权限为777。

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

    umask //查看文件掩码
    umask 022 //设置文件掩码
    
    • 1
    • 2

    5、粘滞位

    先来看一种需求分析:在特定场景下其他用户可以在特定的目录下创建文件,并写入,但是不允许任何人删掉自己的文件,在这种情况下便衍生出来了粘滞位来解决相关的问题。

    对目录设置粘滞位:
    chmod o+t dir

    **注意:**粘滞位只能对目录设置,一般是限制other的权限。对于设置了粘滞位的目录,在该目录下,只能文件的拥有者可以删除,其他人不能删除,root除外。

  • 相关阅读:
    nginx+flume 数据采集
    2311rust,到60版本更新
    LoRa技术的常见应用有哪些?
    【数据治理】数据治理之主数据管理
    IceRPC之"请求"生命线意义非凡
    C#,数值计算——插值和外推,BaryRat_interp的计算方法与源程序
    李m圆申论
    分布式:Docker
    【笔试刷题训练】day_05
    Node + Express 后台开发 —— 上传、下载和发布
  • 原文地址:https://blog.csdn.net/weixin_51692487/article/details/125450846