linux中的sgid

情境模拟题一:假设系统中有两个帐号,分别是 alex 与 arod ,这两个人除了自己群组之外还共同支持一个名为 project 的群组。假设这两个用户需要共同拥有 /srv/ahome/ 目录的开发权,且该目录不许其他人进入查阅。 请问该目录的权限配置应为何?请先以传统权限说明,再以 SGID 的功能解析。

  • 目标:了解到为何专案开发时,目录最好需要配置 SGID 的权限!
  • 前提:多个帐号支持同一群组,且共同拥有目录的使用权!
  • 需求:需要使用 root 的身份来进行 chmod, chgrp 等帮用户配置好他们的开发环境才行! 这也是管理员的重要任务之一!

首先我们得要先制作出这两个帐号的相关数据,帐号/群组的管理在后续我们会介绍, 您这里先照著底下的命令来制作即可:

[root@www ~]# groupadd project        <==添加新的群组
[root@www ~]# useradd -G project alex <==创建 alex 帐号,且支持 project
[root@www ~]# useradd -G project arod <==创建 arod 帐号,且支持 project
[root@www ~]# id alex                 <==查阅 alex 帐号的属性
uid=501(alex) gid=502(alex) groups=502(alex),501(project) <==确实有支持!
[root@www ~]# id arod
uid=502(arod) gid=503(arod) groups=503(arod),501(project)

然后开始来解决我们所需要的环境吧!

  1. 首先创建所需要开发的专案目录:
    [root@www ~]# mkdir /srv/ahome
    [root@www ~]# ll -d /srv/ahome
    drwxr-xr-x 2 root root 4096 Sep 29 22:36 /srv/ahome
    
  2. 从上面的输出结果可发现 alex 与 arod 都不能在该目录内创建文件,因此需要进行权限与属性的修改。 由於其他人均不可进入此目录,因此该目录的群组应为project,权限应为770才合理。
    [root@www ~]# chgrp project /srv/ahome
    [root@www ~]# chmod 770 /srv/ahome
    [root@www ~]# ll -d /srv/ahome
    drwxrwx--- 2 root project 4096 Sep 29 22:36 /srv/ahome
    # 从上面的权限结果来看,由於 alex/arod 均支持 project,因此似乎没问题了!
    
  3. 实际分别以两个使用者来测试看看,情况会是如何?先用 alex 创建文件,然后用 arod 去处理看看。
    [root@www ~]# su - alex       <==先切换身份成为 alex 来处理
    [alex@www ~]$ cd /srv/ahome   <==切换到群组的工作目录去
    [alex@www ahome]$ touch abcd  <==创建一个空的文件出来!
    [alex@www ahome]$ exit        <==离开 alex 的身份
    
    [root@www ~]# su - arod
    [arod@www ~]$ cd /srv/ahome
    [arod@www ahome]$ ll abcd
    -rw-rw-r-- 1 alex alex 0 Sep 29 22:46 abcd
    # 仔细看一下上面的文件,由於群组是 alex ,arod并不支持!
    # 因此对於 abcd 这个文件来说, arod 应该只是其他人,只有 r 的权限而已啊!
    [arod@www ahome]$ exit
    
    由上面的结果我们可以知道,若单纯使用传统的 rwx 而已,则对刚刚 alex 创建的 abcd 这个文件来说, arod 可以删除他,但是却不能编辑他!这不是我们要的样子啊!赶紧来重新规划一下。
     
  4. 加入 SGID 的权限在里面,并进行测试看看:
    [root@www ~]# chmod 2770 /srv/ahome
    [root@www ~]# ll -d /srv/ahome
    drwxrws--- 2 root project 4096 Sep 29 22:46 /srv/ahome
    
    测试:使用 alex 去创建一个文件,并且查阅文件权限看看:
    [root@www ~]# su - alex
    [alex@www ~]$ cd /srv/ahome
    [alex@www ahome]$ touch 1234
    [alex@www ahome]$ ll 1234
    -rw-rw-r-- 1 alex project 0 Sep 29 22:53 1234
    # 没错!这才是我们要的样子!现在 alex, arod 创建的新文件所属群组都是 project,
    # 由於两人均属於此群组,加上 umask 都是 002,这样两人才可以互相修改对方的文件!
    
    所以最终的结果显示,此目录的权限最好是『2770』,所属文件拥有者属於root即可,至於群组必须要为两人共同支持的project 这个群组才行!
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值