## SetGID (文件和目录权限)
>[success] SGID 即可以针对文件生效,也可以针对目录生效,这和 SUID 明显不同。
>[info] 如果针对文件,SGID 的含义如下:
> > 只有可执行的二进制程序才能设置 SGID 权限
> > 命令执行者要对该程序拥有 x(执行)权限
> > 命令执行在执行程序的时候,组身份升级为该程序文件的属组
> > SetGID 权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
```
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 2843732 11月 11 10:28 /var/lib/mlocate/mlocate.db
[root@localhost ~]# ll /usr/bin/locate
-rwx--s--x. 1 root slocate 40520 4月 11 2018 /usr/bin/locate
当普通用户 user1 执行 locate 命令时,会发生如下事情:
/usr/bin/locate 是可执行二进制程序,可以赋予 SGID
执行用户 user1 对/usr/bin/locate 命令拥有执行权限
执行/usr/bin/locate 命令时,组身份会升级为 slocate 组,而 slocate 组对
/var/lib/mlocate/mlocate.db 数据库拥有 r 权限,所以普通用户可以使用 locate 命令查询
mlocate.db 数据库
命令结束,user1 用户的组身份返回为 user1 组
```
>[info] 如果 SGID 针对目录设置,含义如下:
> > 普通用户必须对此目录拥有 r 和 x 权限,才能进入此目录
> > 普通用户在此目录中的有效组会变成此目录的属组
> > 若普通用户对此目录拥有 w 权限时,新建的文件的默认属组是这个目录的属组
```
#进入临时目录做此实验。因为临时目录才允许普通用户修改
[root@localhost ~]# cd /tmp/
#建立测试目录
[root@localhost tmp]# mkdir dtest
#给测试目录赋予SGID
[root@localhost tmp]# chmod g+s dtest
#SGID已经生效
[root@localhost tmp]# ll -d dtest/
drwxr-sr-x 2 root root 4096 1 月 20 06:04 dtest/
#给测试目录权限,让普通用户可以写
[root@localhost tmp]# chmod 777 dtest/
#切换成普通用户user1
[root@localhost tmp]# su – user1
#普通用户进入测试目录
[user1@localhost ~]$ cd /tmp/dtest/
#普通用户建立abc文件
[user1@localhost dtest]$ touch abc
总用量 0
[user1@localhost dtest]$ ll
-rw-rw-r-- 1 user1 root 0 1月 20 06:07 abc
#abc文件的默认属组不再是user1用户组,而变成了dtest组的属组root
```
- 基础
- 文档帮助
- 计算机基础知识
- Centos文件系统
- Linux基础知识入门
- Linux命令帮助文档
- 常见命令
- 其他
- vim编辑器
- 编辑命令
- 末行模式
- 常见命令
- 配置文件
- 用户useradd
- 用户login.defs
- 环境变量设置
- 常用命令
- 帮助命令
- 管道符
- 关机和重启
- 目录操作
- 目录结构
- ls
- cd
- pwd
- mkdir
- rmdir
- cp
- rm
- mv
- 文件操作
- touch
- ln 重点
- stat 重点
- file
- cat
- tac
- nl
- more
- less
- head
- tail
- 文件处理工具
- wc
- cut
- sort
- uniq
- 文件属性(权限)
- chmod
- chown
- chgrp
- umask
- sudo权限
- chattr权限
- chattr
- lsattr
- 文件特殊权限
- SetUID
- SetGID
- StickyBIT粘着位
- ACL权限
- 搜索命令
- 命令搜索whereis
- grep
- 拓展
- 元字符
- egrep
- locate
- find
- type
- 压缩和解压
- zip和unzip
- gzip和gunzip
- bzip2和bunzip2
- tar
- 网络管理
- netstat网络状态
- 消息邮件
- 软件包安装
- 源码包
- 二进制包
- rpm手工安装
- yum在线安装
- 系统管理
- 常用命令
- shell内建命令
- pstree
- bash 特性
- history 历史命令
- 补全、快捷键
- 命令行展开
- 命令执行结果
- alias命令别名
- 通配符
- 重定向及管道
- 计算机运算
- bash 中的变量的种类
- bash 的配置文件
- bash中的算术运算
- bash条件测试
- 用户和组管理
- 用户管理
- useradd
- usermod
- userdel
- passwd
- pwck
- chage
- chsh
- chfn
- id
- finger
- su
- 用户组管理
- groupadd
- groupmod
- groupdel
- gpasswd
- groups
- 用户查看
- whoami
- w
- who
- last
- lastlog
- lastb
- 网络管理
- 相关命令
- 防火墙
- 文件拷贝
- 软件工具
- 软件包管理
- Gcc软件安装
- 其他
- redis
- 相关资料
- swoole
- IDE工具
- vscode + Xdebug 断点调试
- vscode 远程链接
- git
- 不想输入账户密码
- window电脑问题
- 浏览器https访问不了
- php
- 常用函数
- rabbitMQ
- mysql
- 触发器
- 常用更新语句
- 忘记密码处理方法
- 查询
- 数据迁移
- 加索引不加锁
- 查询优化
- 基础知识
- 进程线程协程
- tp6
- 注册自定义命令空间
- Ajax异常错误
- nginx
- 域名变成ip问题
- 概念知识点
- QPS,TPS,RT概念
- Nginx服务大量TIME-WAIT
