• 【关于Linux中权限管理】



    一、文件访问者的分类

    文件和文件目录的所有者:u—User
    文件和文件目录的所有者所在的组的用户:g—Group
    其它用户:o—Others

    在Linux中的用户分为两类----超级用户(root)和普通用户
    所谓超级用户就是指不受权限约束的用户,可以随意切换到其他普通用户(不用输入密码)。而普通用户切换到超级用户却需要输入root的密码。
    使用sudo命令可以使普通用户在短时间内(一般是10-15分钟)以root的身份执行命令,但是第一次使用需要输入密码(普通用户的密码),还有个前提是该普通用户必须和root建立信任关系。


    二、文件类型和访问权限

    拿Linux中的两个文件举例子:
    在这里插入图片描述

    文件9_17的各种属性如下:
    在这里插入图片描述
    在这里插入图片描述
    其中rwx代表的分别是可读、可写和可执行,若对应位置为"-",则所对应的用户类型不具有该操作的权限。
    注意。LInux中不以文件后缀区分文件类型

    具体文件类型分类如下:

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

    Linux下,一切皆文件!


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

    字符串表示方法:
    在这里插入图片描述
    八进制数值表示方法:
    在这里插入图片描述
    解释:如果具有rwx对应的权限,则对应的比特位上数值为1,否则为0


    四、文件访问权限的相关设置方法

    chmod:

    功能:设置文件的访问权限
    格式:chmod [参数] 权限 文件名
    常用选项:

    R -> 递归修改目录文件的权限
    说明:只有文件的拥有者和root才可以改变文件的权限

    chmod命令权限值的格式:

    ①用户表示符+/-=权限字符

    +:向权限范围增加权限代号所表示的权限
    -:向权限范围取消权限代号所表示的权限
    =:向权限范围赋予权限代号所表示的权限
    用户符号:
    u:拥有者
    g:拥有者同组用
    o:其它用户
    a:所有用户

    举个例子:
    在这里插入图片描述

    ②三位八进制数字:
    前面说过,rwx权限有无可以用数字来表示(三个比特位),若某一个用户类型拥有rwx所有权限,则其八进制数字应该为7(111),而用户类型有三种,就有对应的三个八进制数字来表示他们是否具有某一权限。

    举个例子:
    在这里插入图片描述
    上面的633即(110 011 011),所对应的权限也就是(rw- -wx -wx)

    需要知道的是,root几乎不受这些权限约束,也就是说,即使root没有这些权限,也可以执行相应的操作!


    提一个问题:为什么文件被创建的时候,它的默认权限设置是我们看到的样子,而不是其他?

    其实新建文件夹默认权限=0666
    新建目录默认权限=0777

    但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask(即先将umask按位取反,再将其结果跟mask进行按位与操作)

    格式:umask 权限值
    说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

    #umask 755
    #umask //查看
    #umask 044//设置


    chown

    功能:修改文件的拥有者
    格式:chown [参数] 用户名 文件名

    实例:
    在这里插入图片描述
    可见,把文件传递给其他用户是不能“单方面”进行的。
    解决方案有两个:①用sudo指令强制转移文件 ②先切换到root,然后直接改变文件拥有者

    root用户将文件传递给其他用户,是可以单方面执行的,如下:

    在这里插入图片描述
    chgrp

    功能:修改文件或目录的所属组
    格式:chgrp [参数] 用户组名 文件名
    常用选项:-R 递归修改文件或目录的所属组

    与上面的操作类似,就不做演示了

    还需要注意,改变自己创建的文件的所属组可以单方面进行,但改变其他用户的所属组不可以单方面进行。如下:
    在这里插入图片描述


    五、目录的权限

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

    换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.而这样是不安全的。

    [root@localhost ~]# chmod 0777 /home/
    [root@localhost ~]# ls /home/ -ld
    drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
    [root@localhost ~]# touch /home/root.c
    [root@localhost ~]# ls -l /home/
    总用量 4
    -rw-r–r–. 1 root root 0 9月 19 15:58 abc.c
    drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
    -rw-r–r–. 1 root root 0 9月 19 15:59 root.c
    [root@localhost ~]# su - litao
    [litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
    rm:是否删除有写保护的普通空文件 “/home/root.c”?y
    [litao@localhost ~]$ exit
    logout

    为了解决这个问题,Linux引入了一个粘滞位的概念

    [root@localhost ~]# chmod +t /home/ # 加上粘滞位
    [root@localhost ~]# ls -ld /home/
    drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
    [root@localhost ~]# su - litao
    [litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
    rm:是否删除有写保护的普通空文件 “/home/abc.c”?y
    rm: 无法删除"/home/abc.c": 不允许的操作

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

    一、超级管理员删除
    二、该目录的所有者删除
    三、该文件的所有者删除

  • 相关阅读:
    九、Delay函数
    浅析vue中computed,method,watch,watchEffect的区别
    关于JavaScript变量介绍
    【QT学习】8.qt事件处理机制,事件过滤器,自定义事件
    【C++刷题笔记】螺旋矩阵 - 上三角
    SQL创建数据库
    使用Java NIO进行文件操作、网络通信和多路复用的案例
    java基于springboot家庭水电燃气网上交费系统
    91. 解码方法
    zoj 1465 Wall
  • 原文地址:https://blog.csdn.net/m0_62618590/article/details/127114119