code:chown - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 改变文件的拥有者和拥有组
- 传入两个参数
- 参数1:name 文件或者目录路径名
- 参数2:owner 低八位为文件拥有者,高八位为文件的拥有组
3574
3575 chown()
3576 {
3577 register *ip;
3578
3579 if (!suser() || (ip = owner()) == NULL)
3580 return;
3581 ip->i_uid = u.u_arg[1].lobyte;
- 若当前用户不是超级用户或者不是当前文件的拥有者或者由name指示的INODE不存在
- 直接返回
- 否则
- ip = 文件名为name的INODE
3582 ip->i_gid = u.u_arg[1].hibyte;
3583 ip->i_flag =| IUPD;
3584 iput(ip);
- ip->i_uid = owner的低8位(文件拥有者)
- ip->i_gid = owner的高8位(文件拥有组)
- 此处使用了编程技巧之无名结构
- 置IUPD标志
3585 }
- 调用iput对ip进行i_count减1操作,这是因为在3579行调用owner时间接调用了namei,使得i_count加了1
3586 /* ------------------------- */
- (chmod = 16.)
- sys chown; name; owner