code:setgid - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Source

  • 设置组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()) {
  • 若 真实组ID==gid 或 当前用户具有超级用户权限,继续进行
  • 此处使用gid.lobyte,为保证gid取低字节8位,让比较正常进行
3466          u.u_gid = gid;

3467          u.u_rgid = gid;

  • 置以下量 为 gid
    • 组ID u_gid
    • 真实组ID u_rgid
  • 参看权限管理
  • 此处赋值 gid 进行了隐式类型转换,传入u_gid、u_rgid的实际是gid 的低字节
3468     }

3469 }

3470 /* ------------------------- */

Ref

Param

(setgid = 46.; not in assembler)
(group ID in r0)
sys setgid
⚠️ **GitHub.com Fallback** ⚠️