code:setuid - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 设置用户ID
- 共传入一个参数,设为id
- id的低字节部分为 欲设置的用户ID
- 参看权限管理
3438
3439 setuid()
3440 {
3441 register uid;
3442
3443 uid = u.u_ar0[R0].lobyte;
3444 if(u.u_ruid == uid.lobyte || suser()) {
3445 u.u_uid = uid;
- 若 真实用户ID==uid 或 当前用户具有超级用户权限,继续进行
- 此处使用uid.lobyte,为保证uid取低字节8位,让比较正常进行
3447 u.u_ruid = uid;
3448 }
- 置以下量 为 uid
- 用户ID u_uid
- 进程的用户ID p_uid
- 真实用户ID u_ruid
- 参看权限管理
- 此处赋值 uid 进行了隐式类型转换,传入u_uid、p_uid、u_ruid的实际是uid 的低字节
3449 }
3450 /* ------------------------- */
- (setuid = 23.)
- (user ID in r0)
- sys setuid