[O_PATH在2.6.39之前的Linux内核中是否等效?

问题描述 投票:0回答:1

在最新的内核中,我使用以下代码来操作符号链接文件的索引节点:

file = filp_open(filename, O_PATH | O_NOFOLLOW, 0);

如果我不添加O_PATH,则filp_open将失败,并显示-ELOOP

在Linux内核2.6.32上,O_PATH不可用,我应该改用什么?

linux kernel symlink fs
1个回答
0
投票

我不认为有直接等效项,因为O_PATH具有非常特殊的语义,其中文件本身未打开。我认为最接近的事情是实际上以安全的方式打开文件,即使用O_RDONLY。是的,在语义和物理上都不是完全一样的。实际打开文件时,内核中将执行更多工作,而使用O_PATH时则不执行。另外,您将需要对该文件具有读取权限才能打开它。但是否则,它应该允许您执行所需的操作。

© www.soinside.com 2019 - 2024. All rights reserved.