Re: Request for clarification of O_PATH in open(2)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Meator,

On 4/15/22 19:48, meator wrote:
Hello. I was reading open(2) and I have noticed an interesting statement: "The argument flags must include one of the following access modes: O_RDONLY, O_WRONLY, or O_RDWR." Must one of these flags be specified when O_PATH is in use?
O_PATH description says that "Opening a file or directory with the O_PATH flag requires no permissions on the object itself (but does require execute permission on the directories in the path prefix)." I think that this can be a little bit ambiguous. When I first read it, I have thought that this sentence talks about filesystem permissions required on the file, not the access modes.

I agree that it talks about FS permissions, and not access mode.

O_PATH description states that: "When O_PATH is specified in flags, flag bits other than O_CLOEXEC, O_DIRECTORY, and O_NOFOLLOW are ignored." One could think that you must specify an access mode, but it will be ignored.

This is the only part that talks about access mode, and implies that you don't need to specify any RD or WR flags. It's true that it could be interpreted as you say.

The O_PATH description actually mentions the O_RDONLY flag, but it compares the difference of opening a file with O_PATH and opening it with (only) O_RDONLY, it doesn't mention the need of O_RDONLY flag when opening a file with O_PATH.
The only part of the manpage that clearly states that using access modes with O_PATH is not mandatory is the code sample included in the O_PATH description, which calls open("some_prog", O_PATH); (but this code sample covers another aspect of O_PATH).

But the code sample clarifies the doubt about the necessity or not of writing the (to be ignored) access mode. So you don't need to.

It's true that the code sample is not talking about that, but it's unequivocally saying you don't specify the access mode RD or WR flags.

That's for clarifying it to you.


Maybe I'm just dumb and I misread some of the text, but I think this can be ambiguous. I would have sent a patch fixing this, but I'm not a native English speaker and I don't actually know how open() works, so I don't want to make a mistake when modifying its manpage.

As for clarifying it in the manual page, I have doubts. I think it's enough as is, but I'll take your report into account, and if I receive other similar reports, I'll assume that it's not so clear and will try to improve it.

Thanks,

Alex


P.S.: Internet searches also consistently confirm that you don't need to specify the RD WR mode flags:
<https://stackoverflow.com/questions/12416889/semantics-of-linux-o-path-file-descriptors>.



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux