在Linux内核源代码情景分析-从路径名到目标节点,一文中path_walk代码中,err = permission(inode, MAY_EXEC)当前进程是否可以访问这个节点,代码如下:
int permission(struct inode * inode,int mask)
{
if (inode->i_op && inode->i_op->permission) {
int retval;
lock_kernel();
retval = inode->i_op->permission(inode, mask);
unlock_kernel();
return retval;
}
return vfs_permission(inode, mask);
} 在ext2_read_inode中,i_op可以设置为ext2_file_inode_operations,ext2_dir_inode_operations,ext2_fast_symlink_inode_operations,page_symlink_inode_operations,均没有permission指针。所以执行vfs_permission,代码如下:
int vfs_permission(struct inode * inode,int mask)
{
int mode = inode->i_mode;
if ((m

本文深入分析Linux内核源代码,探讨如何通过`permission`函数检查进程对文件的执行权限。核心在于理解MAY_EXEC掩码以及如何结合当前进程的能力(cap_effective)来决定访问权限。此外,还提到了权限检查与状态标志位的关系。
最低0.47元/天 解锁文章
713

被折叠的 条评论
为什么被折叠?



