首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

文件特殊权限-SetGID

前面说过,SetUID操作的对象是可执行的二进制文件或程序。但是SetGID还稍微有些不同。

首先是SetGID针对文件的作用:

只有可执行的二进制程序才能设置SGID权限

命令执行者要对该程序拥有x权限

命令在执行的时候,组身份升级为该程序文件的所属组

SetGID权限同样只在该程序执行过程中有效,即组身份的改变只在程序执行过程中有效

我们已经知道locate命令的搜索是在/var/lib/mlocate/mlocate.db这个数据库当中,比find命令执行的更快。原因在于:find是搜索整个磁盘,locate是搜索数据库。

数据库mlocate.db的权限是640,普通用户没有任何权限,。普通用户不是通过cat或者vim命令搜索这个数据库,而是通过locate命令搜索mlocate.db这个数据库。由于locate命令具有SGID权限的,普通用户执行locate命令的同时,身份组切换为slocate。另外一边mlocate.db这个数据库的所属组就是slocate,拥有r的权限。所以普通用户也是可以使用locate搜索系统当中的文件或者文件名的。

SGID对二进制文件或者程序与SUID是类似的。

------------------------------------------------

SetGID除了可以针对二进制文件或者程序,还能针对单独的目录使用。

普通用户必须对此目录拥有r和x权限,才能进入此目录。

普通用户在此目录中的有效组会变成此目录的所属组。

如普通用户对此目录拥有w权限时,新建文件的默认所属组是这个目录的所属组。

比如这样:

mkdir /tmp/SGID //在tmp下新建SGID的目录

cd /tmp

chmod 2777 SGID //赋予SGID目录SGID权限

ls -ld /tmp/SGID

su - st1

touch /tmp/SGID/file

st1用户新建file文件的默认所属组不是st1,而是/tmp/SGID这个目录的所属组。一般在实际工作中,SGID针对目录的使用场景比较少,SGID最主要还是针对二进制文件或程序。

------------------------------------------------

赋予SGID:

chmod 2755 文件名

chmod g+s 文件名

取消SGID:

chmod 755 文件名

chmod g-s 文件名

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190813A0E3K100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券