code:setgid - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 设置组ID
- 共传入一个参数,设为id
- id的低字节部分为 欲设置的组ID
- 参看权限管理
3459
3460 setgid()
3461 {
3462 register gid;
3463
3464 gid = u.u_ar0[R0].lobyte;
3465 if(u.u_rgid == gid.lobyte || suser()) {
3466 u.u_gid = gid;
- 若 真实组ID==gid 或 当前用户具有超级用户权限,继续进行
- 此处使用gid.lobyte,为保证gid取低字节8位,让比较正常进行
3467 u.u_rgid = gid;
3468 }
- 置以下量 为 gid
- 组ID u_gid
- 真实组ID u_rgid
- 参看权限管理
- 此处赋值 gid 进行了隐式类型转换,传入u_gid、u_rgid的实际是gid 的低字节
3469 }
3470 /* ------------------------- */
- (setgid = 46.; not in assembler)
- (group ID in r0)
- sys setgid