Linux学习记录18——用户的基本组、扩展组和文件的所有者、所属组之间的关系

一.学习的内容

        经过前两次的学习,我对文件的所有者和所属组的概念不是很清晰。即什么才是文件的所有者?什么才是文件的所属组?它俩和用户的基本组、扩展组有联系吗?文件的所有者、所属组和其他用户都对文件有相应的rwx权限,我认为其中最难理解的点就在于所属组对文件的操作权限,即什么样的用户才算是和文件同属于一个组?

        通过查找资料,我发现了以下结论:

        在 Unix/Linux 系统中,文件的权限分为三组:所有者、所属组和其他用户。

        所有者:文件的所有者是创建该文件的用户或者最后修改该文件的用户。所有者对文件具有最高的权限控制。

        所属组:文件的所属组是一个用户组,通常由系统管理员或文件的所有者指定。所属组可以包含多个用户,这些用户共享对文件的访问权限,但不具备所有者的特权。

        其他用户:除了文件的所有者和所属组之外的所有用户属于 "其他用户" 组。这些用户在文件的权限控制中被视为普通用户,其权限受到文件的 "其他用户" 权限位的控制。

        用户的基本组和扩展组:

        每个用户在创建时都会被分配一个基本组,这是用户的主要组
        用户可以属于一个或多个扩展组。所有的扩展组都列在用户的密码文件(/etc/passwd)中。

        文件的所有者和所属组:

        文件有一个所有者和一个所属组。所有者通常是创建文件的用户,但是所有者可以使用chown命令更改。
        所属组通常设置为文件创建者的基本组,但是可以使用chown和chgrp命令进行更改。

        通过上面的资料,最开始的几个问题只剩最后一个还回答不了。接下来我将通过几个实例,来解决最后一个问题。

实例1:

        如下图所示:红色字体代表用户组,黑色字体代表用户、文件、文件属性。从图中可以看出,我想创建三个用户lxw1、2、3,此时它们会自动创建自己的基本用户组 lxw1、2、3,除此之外,我还让他们都具有相同的扩展组 ronny(之前的学习中创建过) 。最后,我测试,对于用户lxw1的家目录文件 /home/lxw1 (属性如图中所示),另外两个用户lxw2、3是否有权访问?毕竟这三个用户有相同的扩展组 ronny。

图1   实例1的原理图

        下面我们就在虚拟机内构建上述的原理图。首先使用 useradd 命令创建lxw1、2、3 这三个用户,并使用 id 命令查看是否创建成功,如图2所示:

图2  创建三个用户并检查是否创建成功

        接着,使用 usermod -G 命令将 ronny 组作为上述三个用户的扩展组,之后使用 id 命令查看是否正确。

图3  将三个用户扩展组变成ronny

        然后,查看 lxw1用户的家目录文件的属性信息,使用  ls -ld 命令。

图4   查看 /home/lxw1 的属性

        至此,所有准备工作已经就绪。接下来,我们测试在这种条件下,用户lxw2、3是否有权限访问 /home/lxw1(权限为700)。

        在root 权限下,使用 “su - 用户名” 命令切换到 lxw2 用户,然后使用 cd、ls、touch命令发现输出的结果都是访问被拒绝。

图5  lxw2 用户访问 /home/lxw1 文件

         同样的,exit 命令退出lxw2 用户,返回到 root用户下,再使用相同的命令,发现 lxw3 用户也无法访问 /home/lxw1 文件。

图6  lxw3用户访问该文件

        其实,这个实例并不能说明: lxw2、3用户无法访问 /home/lxw1 文件,是因为它们三者不在同一个组内。因为还有一个因素会影响访问情况,那就是 /home/lxw1 文件的权限问题(700),在这种权限下,即使用户lxw2、3和文件都在一个组内,用户也是无法访问该文件的。而只能说明:lxw2、3用户不是该文件的所有者。于是就有了下面的实例2。

实例2:

        实例2的原理图相较于1,只进行了文件权限上的改动,即 /home/lxw1 的权限由 700 变成 770。原理图如下所示:

图7   实例2原理图

        前面创建、构造结构的过程完全可以参考实例1,在这就不赘述。我直接用 “chmod -R 770 文件名” 命令来修改 /home/lxw1 文件的权限,使其变为 770。

图8  改变文件的权限

        之后,再检查一遍三个用户的组,确保要和原理图对应上。

图9  id命令查看用户信息

        完成上面的操作后,开始测试用户lxw2、3这次是否能访问 /home/lxw1 文件。

        这些命令和实例1相同,所以也不再解释,直接看其输出:

图10  使用lxw2 用户身份访问该文件
图11  使用lxw3用户身份访问该文件

        通过上面的输出结果可以发现,即便在 /home/lxw1 文件的权限为770 的条件下,用户lxw2、3 依旧无法访问该文件,这也就表明了,此时三者也并不在同一个用户组内。也就是说,文件(/home/lxw1) 的所属组(lxw1),并不会并不会因为它的所有者(lxw1)属于某个扩展组(ronny),而也去属于某个扩展组(ronny)。

实例3:

        把实例2中 /home/lxw1 文件权限由770改为777,再次测试 lxw2、3 用户是否能进行访问。

图12  实例3原理图

        操作步骤和实例2类似,就不在此赘述,直接看运行截图

图13  修改文件权限
图14 用户lxw2 对文件进行rwx操作
图15  用户lxw3 对文件进行rwx操作

        由上面三幅图可以发现,用户lxw2、3 实现了对文件/home/lxw1 的 rwx。由实例2可知:用户lxw2、3既不是 /home/lxw1 的所有者,也不是该文件的所属组成员,那么用户lxw2、3是如何对该文件进行访问的呢?那是因为,该文件的权限改成了777,即这两个用户通过其他人的身份对该文件进行rwx。

实例4:

        由上面三个实例发现,用户lxw2、3要想访问 /home/lxw1 文件只能借助其他用户的身份,那么,如何才能让,这两个用户以所属组内成员的身份去访问 /home/lxw1 文件呢?如下面的原理图所示:

图16 实例4的原理图

        注意上图和前三个实例的不同点:/home/lxw1 文件的所有者没变,而改变了其所属组,访问权限为700。这样做的目的是为了检验,此时,/home/lxw1 文件、lxw2用户、lxw3用户是否在同一个组内。

        如下图所示:分别使用 “ chomod -R 700  /home/lxw1” 和 “ chown -R lxw1:ronny /home/lxw1” 命令,将/home/lxw1 文件的权限和所属组进行更改。

图17  更改文件的所属组和权限

         使用 ls 命令查看 /home/lxw1 文件的属性信息,确认权限和所属组是我们想要的。

图18  查看/home/lxw1文件信息

         在使用 id 命令确认三个用户的信息。

图19  确认用户信息

        由图18、19可知,原理图上的关系已经实现。接下来开始测试,lxw2、3用户是否能访问该文件。

        下面两幅图是,lxw2、3用户对/home/lxw1 文件进行 rwx 的输出结果,可以看到都是不能访问的。

图20  lxw2对/home/lxw1的rwx
图21  lxw3对/home/lxw1的rwx

        其实,这个结果并不让人意外,因为 /home/lxw1 文件的权限为 700,且lxw2、3用户显然不是该文件的所有者,自然也就不能对其进行访问,和实例1类似。

实例5:

        实例5就是把实例4中 /home/lxw1 文件的权限由700——>770。原理图如下所示:

图22 实例5的原理图

         使用chmod 命令修改 /home/lxw1 文件的权限。

图23  修改权限

        接着,就可以测试能否使用lxw2、3的用户身份对该文件进行访问。

图24  lxw2用户访问/home/lxw1文件
图25  lxw3用户访问/home/lxw1文件

        由上面两幅图可以发现,用户lxw2、3可以对 /home/lxw1 (770)文件进行访问。结合实例4和此时文件的权限(770)可知,此时用户lxw2、lxw3和 /home/lxw1 属于同一个组(ronny)。

实例6:

        实例5的结果说明了,用户lxw2、lxw3和/home/lxw1 文件在同一个组内(ronny)。那lxw1 用户呢?此时,它既是 /home/lxw1 文件的所有者,也跟 /home/lxw1 文件在同一个组内。那lxw1 用户对 /home/lxw1 文件的操作权限用的是所有者的?还是所属组的?(RHEL8中

        将实例4中 /home/lxw1 文件的权限由770——>670,然后测试 lxw1 用户能否正常访问 /home/lxw1 文件

图26  将文件权限由770改为670

        如上图所示,其他条件都和实例5相同,就改变文件所有者的权限。然后,测试用户lxw1 能对/home/lxw1 文件 进行rwx中的那些操作。

        当文件权限为 670时,lxw1 用户都无法进入 /home/lxw1 目录内,同时 ls命令、touch命令也都受到影响。基本可以认为 rwx 操作都会被拒绝。

图27  文件权限为670时

         /home/lxw1 文件的权限改为570 时,lxw1 用户可以执行 x、r权限,而w 权限(touch)被拒绝。如下图所示:

图28  文件权限为 570时

          /home/lxw1 文件的权限改为370 时,lxw1 用户可以执行 x、w权限,而r 权限(ls 命令)被拒绝。如下图所示:

图29  文件权限为370时

        由上面三个权限670、570、370的表现可知,当一个用户既是文件的所有者,也和文件同属于一个组时,所有者权限和所属组权限并不是并集关系

        /home/lxw1 文件的权限改为700 时,lxw1 用户可以执行 rwx权限。如下图所示:

图30  文件权限为700时

        由这个图可知,当一个用户既是文件的所有者,也和文件同属于一个组时,所有者权限和所属组权限并不是交集关系。

        综上所述,当一个用户 lxw1 既是文件(/home/lxw1)的所有者,同时也和文件属于同一个组(ronny)时,那么该用户只能使用文件所有者的权限,去访问该文件。

实例7:

        前面6个实例都在使用 chmod、chown命令去修改文件属性(权限、所属组),那么如果直接修改用户(lxw1、2、3)的基本组、扩展组(usermod 命令),会对文件属性产生什么影响?

        当文件所有者和文件所属组不一致时,改变所有者的基本组,并不会对文件的所属组产生影响,如下图所示:

图31  文件所有者和所属组不一致

        当文件的所有者和所属组一致时,改变所有者的基本组,文件的所属组也会跟着改变。如下图所示:

图32  文件所有者和所属组一致时

二.本次学习遇到的问题

三、问题的答案及解决办法

总结:

        由上面的7个实例可以确定一个用户是否有权限访问一个文件:

        1、首先看,该用户是否为该文件的所有者。若是,则按照对应权限进行rwx;若不是,则进入第2步的判断。

        2、判断该用户是否和此文件具有相同的组。最简单的方法就是,观察 ls -ld 命令显示的文件所属组 与 id 命令显示用户的groups 参数,是否有交集。若有则用户和该文件属于同一组,那么该用户可以按照文件所属组的权限对该文件进行rwx;若没有交集,则进入最后一步

        3、若用户既不是文件的所有者,也不是文件所属组内的成员,那么该用户就按照文件的 其他用户权限 进行rwx。

        注意:当一个用户既是所有者,又是文件所属组内的成员时,用户对文件的权限,取得是所有者的权限。

        

补:

        一个文件的权限能被谁修改? root管理员是肯定可以的!此外,文件的所有者也是可以的。如下图所示,用户lxw1 作为 /home/lxw1 文件的所有者,可随意更改文件的权限。

图1 文件所有者更改权限

         文件和用户在同一组,那个这用户能改文件的权限吗?

        如下图所示,lxw2用户和 /home/lxw1 文件都在同一个组ronny内。尽管文件给所属组的权限到达了7 ,但是 lxw2 用户依旧无法更改文件的权限。

图2  和文件同组的用户无法更改权限

         

        一个用户是文件的所有者就只能使用所有者权限,并不能因为所有者权限低,就想着使用其他权限;同理,在用户不是所有者的前提下,用户和文件在同一组内,就只能使用所有组的权限,而不能因为其权限低,就想着使用其他权限。即 用户和文件的对应关系就是那三个,要么是所有者、要么是所属组、要么是其他用户,相对应的权限也是规定好的。

下面就展示了 ,文件和用户同组时,文件给到所属组的权限为0,那么该用户就是无法访问此文件。用户不能使用另外两个权限。

标题

  • 52
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值