情境模拟题一:假设系统中有两个帐号,分别是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 4. 由上面的结果我们可以知道,若单纯使用传统的rwx 而已,则对刚刚alex 建立的abcd 这个档 案来说, arod 可以删除他,但是却不能编辑他!这不是我们要的样子啊!赶紧来重新规划一下。 5. 加入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,这样两人才可以互相修改对方的档案! 6. 所以最终的结果显示,此目录的权限最好是『2770』,所属档案拥有者属于root 即可,至于群组必须要为两人共同支援的project 这个群组才行!