权限管理-文件特殊权限-SetGID

1. SetGID针对文件的作用

  • 对文件使用SetGID前提条件
    只有可以执行的二进制程序才能能设置SetGID权限
    命令执行者要对该程序拥有x(执行)权限
  • SetGID权限的作用
  • 命令执行在执行程序的时候,组身份升级为该程序文件的属组
  • SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
    举个栗子:
    locate命令,使用这个命令的时候其实是去locate搜索
    Locate命令相比find命令快的原因是locate是搜索的是mlocate.db这样的一个数据库,这个文件会记录当前系统所有文件的文件名。find相当于把整个磁盘都扫描了一遍,慢但准确率更高,功能更强大。通过locate命令来搜索这个数据库。
    在这里插入图片描述
    在这里插入图片描述
    进行分析: locate.db命令是是在mlocate.db数据库中搜索文件,但是mlocate.db本身是没有对其他人是没有读写执行权限的,但是因为locate有setGID权限,普通用户在执行locate这个命令时,组身份升级为该程序文件的属组,又因为locate控制的是mlocate.db这个文件,并且这个文件对所属组mlocate.db具有读权限。
  • (1) /usr/bin/locate是科执行的二进制程序,可以赋予SetGID
    (2) 用户对/usr/bin/locate命令拥有执行权限
    (3) 执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库
    (4) 命令结束后,普通用户的组身份又恢复为自己原来的组身份

2.SetGID针对目录的作用

  • 普通用户必须对此目录拥有r和x权限,才能进入此目录
  • 普通用户在此目录中的有效组会变成此目录的属组
  • 若普通用户对此目录拥有w权限时,新建的文件的默认属组时扎个目录的属组

举个栗子:
在root用户中,在/tmp下建立一个test的目录,给这个目录赋予setGID权限,同时给test 777的权限。然后再全换成st用户,再/tmp/test下创建一个文件,看一下它的所属组是谁???再/tmp/test/下新建的文件的所属组跟test目录的所属组一样都是root.而不是st
在这里插入图片描述
小提示:(1)对目录r(ll命令)x(可以执行cd命令)
               (2)setGID权限对目录就没有这么危险
               (3)这个在实际工作中的意义不大
(4)这个权限还是针对二进制文件的用处,setGID和setUID不允许普通用户或者自己来修改某个命令的suid,而是系统利用了suid,sgid这些权限,来完成这些必须给普通用户分配权限,比如说设置密码,locate搜索数据库这样的命令。这两个命令还是比较危险的,所以小心,不要没事干,给二进制文件赋予这两个权限。

3.设定SetGID

  • 2代表SetGID
    命令:chmod 2755 文件名
    命令:chmod g+s 文件名

4.取消SetGID

  • 命令:chmod 755 文件名
    命令:chmod g-s 文件名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章