新建文件的 uid gid 设置流程 (以jiffs2为例)

内核版本(4.15)
        do_sys_open
                do_filp_open
                        path_openat
                                do_last
                                        lookup_open
                                                dir_inode->i_op->create
                                                        jffs2_create
                                                                jffs2_new_inode
 
在 jffs2_new_inode里, 当父目录设置了 set-group-ID,  则当前新创建的文件的 gid 与父目录的 gid相同,并且如果新创建的文件为目录,则该新建的目录也继承设置 set-group-ID。 如果没有设置 set-group-ID,  则新建文件的gid赋值为当前进程的fsgid, 执行的代码如下:

if (dir_i->i_mode & S_ISGID) {
        ri->gid = cpu_to_je16(i_gid_read(dir_i));
        if (S_ISDIR(mode))
                mode |= S_ISGID;
} else {
        ri->gid = cpu_to_je16(from_kgid(&init_user_ns, current_fsgid()));
}
i_gid_write(inode, je16_to_cpu(ri->gid));
i_uid_write(inode, je16_to_cpu(ri->uid));
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值