Re: procfs: open("/proc/self/fd/...") allows bypassing O_RDONLY

From: Miklos Szeredi
Date: Thu May 12 2022 - 08:56:44 EST


On Thu, 12 May 2022 at 14:41, Simon Ser <contact@xxxxxxxxxxx> wrote:
>
> On Thursday, May 12th, 2022 at 12:37, Simon Ser <contact@xxxxxxxxxxx> wrote:
>
> > what would be a good way to share a FD to another
> > process without allowing it to write to the underlying file?
>
> (I'm reminded that memfd + seals exist for this purpose. Still, I'd be
> interested to know whether that O_RDONLY/O_RDWR behavior is intended,
> because it's pretty surprising. The motivation for using O_RDONLY over
> memfd seals is that it isn't Linux-specific.)

Yes, this is intended. The /proc/$PID/fd/$FD file represents the
inode pointed to by $FD. So the open flags for $FD are irrelevant
when operating on the proc fd file.

Thanks,
Miklos