• Linux | Linux权限详解


    目录

    前言

    一、访问角色的分类

    1、用户的切换

    2、root用户的理解

    3、用户切换的理解

    二、权限的理解

    三、权限管理

    1、文件的访问者

    2、文件类型与访问权限

    (1)文件类型 

    (2)访问权限

    3、文件权限的修改

    (1)角色的修改

    (2)角色权限的修改

    4、权限掩码相关


    前言

            关于文件权限是我们学习Linux的基础知识;本章节就带着大家一起深入了解我们的Linux权限相关问题;

    一、访问角色的分类

            在Linux中,我们可以将所有用户大体分为两类,一类是我们的超级管理员用户,另一类是我们的普通用户;超级管理员用户只能有一个,就是我们的root用户,而普通用户我们可以 adduser 来创建,且创建数量不限;

    1、用户的切换

            我们可以通过 su 用户名 的方式进行用户切换,且root用户切换成任何用户都无需密码,而普通用户进行切换时,我们必须直到指定用户的密码才可以进行切换;

    2、root用户的理解

            root用户就是类似上帝,我们规则的制定者,因此root用户不受权限的约数,关于Linux权限的理解,我们暂时可以理解成是否可以做某件事;因此我们root用户在切换到任何一个用户时,都无需密码,可以进行直接切换;

    3、用户切换的理解

            实际上,用户切换的本质是权限的切换,我们切换到了另一个用户,我们对文件的访问权限也随之发生改变;

    二、权限的理解

            在理解这个问题前,我们首先要了解Linux的涉及理念,在Linux中,一切皆文件,我们的键盘有对应的键盘文件,显示器也有对应的显示器文件;文件就具备对应的访问权限;就好像我们的视频软件,有的视频我们无法观看,因为我们不是VIP用户,我们没有观看权限,Linux中的文件也是如此,每个文件也有对应的权限,让某些人拥有对该文件的某些权限;所谓权限就是一种限制,限制某个用户是否能做出响应的动作;

    三、权限管理

    1、文件的访问者

            在Linux中,我们可以将访问文件的角色分为三种,分别为拥有者(文件的拥有者)、所属组(除拥有者的一种特殊身份)、Other(除了上述两种身份的用户);我们可以分别给这三种角色设置其对该文件的访问权限;

    2、文件类型与访问权限

            我们可以通过ls -l查看文件的详细信息;包括其类型、访问权限、连接数(暂不考虑)、拥有者、所属组、文件大小、文件最新修改时间以及文件名;

    (1)文件类型 

    关于文件类型,主要有以下几种;

    d:目录文件(上图就是)

    -:普通文件

    p:管道文件

    b:块设备文件(磁盘文件)
    c:字符文件

    l:链接文件

    补充:

            Linux下并不以文件后缀名来区分文件类型,是以 ls -l 中第一个字符来查看文件类型,但是我们还是可以看到Linux好多文件都有后缀,这是为什么呢?

            实际上,不用后缀区分文件是Linux操作系统层面的认识,而我们用gcc编译一个以txt为后缀的文件依然会报错;

    (2)访问权限

            关于文件权限,我们可以看到一共有9个字符,平均分为3组,每一组分别代表拥有者权限、所属组权限、Other权限;每组权限都用三个字符表示,其位置固定,第一个位置是读权限,若有则用 r 表示,若不存在用 - 表示;同样,第二个位置是写权限,第三个位置是可执行权限;

            举个栗子,下述截图中,拥有者具有读、写、可执行权限;所属组具有读、写、可执行权限;Other具有读、可执行权限;

    r权限:对于文件来说,r权限就是是否可读,对于文件夹来说,r权限是是否可以查看文件夹里的信息;

    w权限:对于文件来说,w权限就是修改文件内容,对于文件夹来说,w权限就是是否可以在文件夹里创建、删除文件等;

    x权限:对于文件来说,x权限就是是否可以执行(可执行文件),对于文件夹来说,x权限就是是否可以进入该文件夹;

    3、文件权限的修改

            文件权限的修改大体分为两种,一种是角色的修改,就是文件的拥有者,所属组的修改;一种是每种角色对应的权限的修改;

    (1)角色的修改

    文件拥有者的修改指令:

    chown 修改后的用户名 修改的文件名

    注意:我们要将文件的拥有者修改成别人是否需要对方同意?或者说,你把一样东西给别人是否需要别人同意呢的?答案毋庸置疑,是肯定的,我们直接做实验,如下图;

            我们使用sudo指令将我们的权限提升成root用户的权限,然后将文件强行塞给别人;root是超级管理员,因此可以无视权限规则;

    我们还可以修改所属组,所属组的修改指令与拥有者的修改类似,具体用法如下;、

    chgrp 修改后的用户名 修改的文件名、

    同样,我们将别的用户添加到所属组我们也需要进行提权操作才可以进行;如下所示;

    (2)角色权限的修改

            关于每个角色权限的修改我们有两种方案,一种是通过 u/g/o +/- a/r/w/x 来实现,另一种是通过八进制数来修改下面分别展开介绍;

    方法一: u/g/o +/- a/r/w/x

            其中u代表拥有者,g代表所属组,o代表Other,+/-代表我们给用户加上或减去某个权限,a代表所有权限,r代表读权限,w代表写权限,x代表可执行权限;现在我们给 tmp.txt 修改权限,其初始权限如下图所示;

            我们尝试去掉拥有者的写权限,所属组的读权限,并给Other加上可执行权限;

            是不是非常简单,只需要像做加减法一样就可以修改文件的权限了;

    方法二:八进制法

            这样,我们就可以通过3个八进制数很轻易的就控制文件的权限了;现在,我们想把权限分别修改为 rwx -wx --x ,不难计算出,对应的三个八进制数分别为 731,现在我们动手实操,看结果是否如我们所料; 

    4、权限掩码相关

            要了解关于权限掩码的知识,我们首先得知道,在Linux中,当我们创建一个新文件/目录时,有对应的默认初始权限,对于新文件来说,默认的初始权限是0666(八进制),对于新目录来说,默认的初始权限是0777(八进制);根据这个,我们创建一个新文件和新目录观察一下是否如我们所料;

            我们去尝试,发现完全不对呀,这是因为有我们的权限掩码,权限掩码也是三个八进制数,前置0,同样代表这三个数是八进制,后面,三个八进制数代表三个角色的权限,与上面的相同;我们看到的权限是通过权限掩码就的一系列操作后得到的;具体如下公式;

    新文件/目录权限 =  默认初始权限 &(~权限掩码)

    umask指令    // 查看当前权限掩码

            我们也可以做个测试,我们将权限掩码改成 0000,这样我们新创建出来的文件默认权限就是0666,目录默认权限就是0777,我们测试一下,看是否如我们所料;

  • 相关阅读:
    开发手机软件需要学什么内容才可以呢
    模型轻量化、模型减面、模型压缩、模型优化合集
    HTML5+CSS3+JS小实例:涟漪特效按钮
    Neuro-Oncology | IF:15.9 & CUT&Tag和RNA-seq联合解析胶质母细胞瘤的耐药性
    前端面经整理
    软考高级系统分析师考试2022论文考了些啥?改为二选一
    FutureTask的测试使用和方法执行分析
    JAVA提取嵌套夹带文件之Apache Tika
    编译正常运行,打jar包运行报错(找不到文件路径)
    以太坊学习二:签名
  • 原文地址:https://blog.csdn.net/Nice_W/article/details/133845814