LINUXSGID权限测试

    xiaoxiao2022-07-03  112

    问题 1)将mkdir命令程序复制为/bin/mymd2,为其添加SGID权限,并完成下列操作。 2)以用户lisi登入,使用mkdir创建子目录snew01、使用mymd2创建子目录snew02,查看子目录snew01、snew02的权限及归属。 3)创建/nsdpublic目录,将属组改为tarena。 4)新建子目录nsd01、子文件test01.txt,查看两者的权限及归属。 5)为此目录添加SGID权限,再新建子目录nsd02、子文件test02.txt。 6)查看上述子目录及文件的权限及归属。 方案 SGID是Linux特殊权限的一种,其作用主要体现如下: 1)能够传递可执行程序所属组的身份及具备所属组的权限。 2) 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份。 注意事项:对可执行的程序/目录有效、可执行程序所属组必须具备可执行权限、显示占用的是所属组的x位置。 步骤 实现此案例需要按照如下步骤进行。 步骤一:将mkdir命令程序复制为/bin/mymd2,为其添加SGID权限 命令操作如下所示:

    [root@localhost ~]# which mkdir //利用which查看mkdir命令的绝对路径 /bin/mkdir [root@localhost ~]# cp /bin/mkdir /bin/mymd2 //复制并改名 [root@localhost ~]# ls -l /bin/mymd2 //查看是否生成mymd2 -rwxr-xr-x. 1 root root 49384 2月 27 11:06 /bin/mymd2 [root@localhost ~]# chmod g+s /bin/mymd2 //添加SGID权限 [root@localhost ~]# ls -l /bin/mymd2 //查看是否设置成功 -rwxr-sr-x. 1 root root 49384 2月 27 11:06 /bin/mymd2

    步骤二:以用户lisi登入,使用mkdir创建子目录snew01、使用mymd2创建子目录snew02,查看子目录snew01、snew02的权限及归属 命令操作如下所示:

    [root@localhost ~]# id lisi //查看lisi是否存在 id: lisi:无此用户 [root@localhost ~]# useradd lisi //创建用户 [root@localhost ~]# su – lisi //切换用户身份 [lisi@localhost ~]$ ls -l /bin/mkdir //查看mkdir命令权限,没有SGID -rwxr-xr-x. 1 root root 49384 10月 17 2013 /bin/mkdir [lisi@localhost ~]$ mkdir snew01 //创建测试目录snew01 [lisi@localhost ~]$ ls -ld snew01/ //查看权限及归属关系,属主与属组均是lisi drwxrwxr-x. 2 lisi lisi 4096 2月 27 11:16 snew01/ [lisi@localhost ~]$ ls -l /bin/mymd2 //查看mkdir命令权限,具备SGID权限 -rwxr-sr-x. 1 root root 49384 2月 27 11:06 /bin/mymd2 [lisi@localhost ~]$ mymd2 snew02 //创建测试目录snew02 [lisi@localhost ~]$ ls -ld snew02/ //查看权限及归属关系,属组继承为root组 drwxrwxr-x. 2 lisi root 4096 2月 27 11:20 snew02/

    步骤三:创建/nsdpublic目录,将属组改为tarena 命令操作如下所示:

    [root@localhost ~]# mkdir /nsdpublic //创建测试目录 [root@localhost ~]# ls -ld /nsdpublic/ //查看权限及归属关系 drwxr-xr-x. 2 root root 4096 2月 27 11:27 /nsdpublic/ [root@localhost ~]# grep tarena /etc/group //查看tarena组是否存在 tarena:x:502:gelin02,gelin01 [root@localhost ~]# chown :tarena /nsdpublic/ //更改目录所属组为tarena组 [root@localhost ~]# ls -ld /nsdpublic/ //查看是否修改成功 drwxr-xr-x. 2 root tarena 4096 2月 27 11:27 /nsdpublic/

    步骤四:新建子目录nsd01、子文件test01.txt,查看两者的权限及归属 命令操作如下所示:

    [root@localhost ~]# mkdir /nsdpublic/nsd01 //在nsdpublic目录下创建nsd01目录 [root@localhost ~]# touch /nsdpublic/test01.txt //在nsdpublic目录下创建测试文件 [root@localhost ~]# ls -l /nsdpublic/ //查看归属关系其属组均为root组 总用量 4 drwxr-xr-x. 2 root root 4096 2月 27 11:49 nsd01 -rw-r--r--. 1 root root 0 2月 27 11:50 test01.txt

    步骤五:为此目录添加SGID权限,再新建子目录nsd02、子文件test02.txt 命令操作如下所示:

    [root@localhost ~]# chmod g+s /nsdpublic/ //为nsdpublic添加SGID权限 [root@localhost ~]# ls -ld /nsdpublic/ //查看设置成功 drwxr-sr-x. 3 root tarena 4096 2月 27 11:50 /nsdpublic/ [root@localhost ~]# mkdir /nsdpublic/nsd02 [root@localhost ~]# touch /nsdpublic/test02.txt [root@localhost ~]# ls -l /nsdpublic/ 总用量 8 drwxr-xr-x. 2 root root 4096 2月 27 11:49 nsd01 drwxr-sr-x. 2 root tarena 4096 2月 27 11:57 nsd02 -rw-r--r--. 1 root root 0 2月 27 11:50 test01.txt -rw-r--r--. 1 root tarena 0 2月 27 11:57 test02.txt

    分析: 可以看到当nsdpublic目录具备SGID权限时,之前创建的nsd01与test01.txt其所属组均为发生变化,但新创建的nsd02与test02.txt两者都继承的所属组身份及权限,其中还需注意的一点是我们也可以看到nsd02子目录也同样继承了SGID权限。

    最新回复(0)