libpathrs icon indicating copy to clipboard operation
libpathrs copied to clipboard

more open-like O_CREAT support?

Open cyphar opened this issue 7 months ago • 0 comments

At the moment, Root::create_file is explcitly O_CREAT|O_EXCL|O_NOFOLLOW which is the most secure and straight-forward implemementation that will work regardless of the resolver implementation.

However, it seems possible users might prefer having more open-like O_CREAT support. Namely:

  1. O_CREAT without O_EXCL, to allow you to create-or-open an existing directory (possibly with O_TRUNC). This is a fairly common thing programs do, so blocking it in the interests of safety is probably something people will bristle against.
  2. O_CREAT without O_NOFOLLOW allows you to create the target of a dangling symlink. I suspect this is a very rarely-used feature of O_CREAT (and I view it as a mis-feature) but it is something that it is not reasonably possible to emulate as a libpathrs user without going through a lot of hoops. It's not clear to me whether this is going to be reasonable to implement for the O_PATH resolver (for openat2 it's trivial).

cyphar avatar May 23 '25 03:05 cyphar