之前我们简单说了下SUID,特殊权限除了SUID外,还有两个,今天我们聊一下SGID。我们通过一个实验,理解一下。

执行效果

首先我们看一下实验的效果:

实验解读

首先我们在根中创建目录cjk,然后查看一下它的权限,其它用户没有写入权限,所以我们添加一个:

1
2
3
mkdir /cjk
ll / | grep cjk
chmod o+w /cjk

然后在/cjk目录中创建一个文件sdf,通过ls- l可看到所有者和所有组都是root:

1
2
touch /cjk/sdf
ll /cjk

切换用户到penn普通用户,同样在/cjk目录中创建一个文件fda,通过ll可看到所有者和所有组都是penn:

1
2
3
su - penn
touch /cjk/fda
ll /cjk

我们使用root用户修改下/cjk目录的权限,添加上SGID:

1
2
su - root
chmod g+s /cjk

我们再切换到普通用户,在/cjk目录中创建文件lzll,通过ll查看所有者是penn,但所有组是root:

1
2
3
su - penn
touch /cjk/lzll
ll /cjk

最后我们简单总结一下SGID的作用:SGID是针对目录设置,在给目录添加SGID的权限之后,其它用户在此目录中创建的文件,其所有组会被替换成此目录的所有组:

1
2
3
4
chmod g+s cjk
#添加
chmod g-s cjk
#删除

评论