3

EXT2 file.cファイルを開く操作(.open)では、に存在するさらにポイントが示されていdquot_file_openます。generic_file_openfs/open.c

以下のgeneric_file_openコードがあるようです

int generic_file_open(struct inode * inode, struct file * filp)
{
    if (!(filp->f_flags & O_LARGEFILE) && i_size_read(inode) > MAX_NON_LFS)
        return -EOVERFLOW;
    return 0;
}

ファイルを開こうとしているときにACL権限はどこでチェックされますか?

いつグーグルでLXRを使用してコードを調べたのか、以下のパスを見つけました。

do_sys_open -> do_filp_open -> path_openat -> do_last -> may_open -> inode_permission -> do_inode_permission -> generic_permission -> acl_permission_check -> check_acl -> posix_acl_permission

しかし、EXT2の.openがdo_sys_openにどのようにリンクされているのか理解できませんでした。

ファイルを開いているときにACLのアクセス許可を確認するためのパスを教えていただければ幸いです。

4

2 に答える 2

2

あなたはそれを間違った端から見ています:のような名前はシステムコールのエントリポイントであり、アクセス許可を検証した後do_sys_open、最終的にVFSレイヤーを通過してext2openルーチンを見つけます。

于 2012-04-26T01:17:42.627 に答える
1

私はあなたがACLコードによって脇道に追いやられたと思います。許可が与えられたら、以下に従っnameidata_to_filp__dentry_openください。

__dentry_open()

    f->f_op = fops_get(inode->i_fop);
    /* ... */
    if (!open && f->f_op)
            open = f->f_op->open;
    if (open) {
            error = open(inode, f);
            if (error)
                    goto cleanup_all;
    }

これにより、inode->i_fop->open関数ポインタが自動変数に保存され、とopenで呼び出されます。inodef

于 2012-04-26T01:28:02.240 に答える