情境模拟题一:假设系统中有两个帐号,分别是 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) |
然后开始来解决我们所需要的环境吧!
- 首先创建所需要开发的专案目录:
[root@www ~]# mkdir /srv/ahome [root@www ~]# ll -d /srv/ahome drwxr-xr-x 2 root root 4096 Sep 29 22:36 /srv/ahome
- 从上面的输出结果可发现 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,因此似乎没问题了!
- 实际分别以两个使用者来测试看看,情况会是如何?先用 alex 创建文件,然后用 arod 去处理看看。
由上面的结果我们可以知道,若单纯使用传统的 rwx 而已,则对刚刚 alex 创建的 abcd 这个文件来说, 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
- 加入 SGID 的权限在里面,并进行测试看看:
所以最终的结果显示,此目录的权限最好是『2770』,所属文件拥有者属於root即可,至於群组必须要为两人共同支持的project 这个群组才行![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,这样两人才可以互相修改对方的文件!