Messages in this thread | | | From | "Michael Kerrisk (man-pages)" <> | Date | Wed, 20 Dec 2017 09:44:47 +0100 | Subject | Re: shmctl(SHM_STAT) vs. /proc/sysvipc/shm permissions discrepancies |
| |
Hi Manfred,
On 20 December 2017 at 09:32, Dr. Manfred Spraul <manfred@colorfullife.com> wrote: > Hi Michal, > > On 12/19/2017 10:48 AM, Michal Hocko wrote: >> >> Hi, >> we have been contacted by our partner about the following permission >> discrepancy >> 1. Create a shared memory segment with permissions 600 with user A using >> shmget(key, 1024, 0600 | IPC_CREAT) >> 2. ipcs -m should return an output as follows: >> >> ------ Shared Memory Segments -------- >> key shmid owner perms bytes nattch status >> 0x58b74326 759562241 A 600 1024 0 >> >> 3. Try to read the metadata with shmctl(0, SHM_STAT,...) as user B. >> 4. shmctl will return -EACCES >> >> The supper set information provided by shmctl can be retrieved by >> reading /proc/sysvipc/shm which does not require read permissions >> because it is 444. >> >> It seems that the discrepancy is there since ae7817745eef ("[PATCH] ipc: >> add generic struct ipc_ids seq_file iteration") when the proc interface >> has been introduced. The changelog is really modest on information or >> intention but I suspect this just got overlooked during review. SHM_STAT >> has always been about read permission and it is explicitly documented >> that way. > > Are you sure that this patch changed the behavior? > The proc interface is much older.
Yes, I think that's correct. The /proc/sysvipc interface appeared in 2.3.x, and AFAIK the behavior was already different from *_STAT back then.
Cheers,
Michael
-- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/
| |