Many Unix-like systems, including Linux and System V systems, support System V interprocess communication (IPC) objects. Indeed System V IPC is required by the Open Group’s Single UNIX Specification, Version 2 [Open Group 1997]. System V IPC objects can be one of three kinds: System V message queues, semaphore sets, and shared memory segments. Each such object has the following attributes:
read and write permissions for each of creator, creator group, and others.
creator UID and GID - UID and GID of the creator of the object.
owning UID and GID - UID and GID of the owner of the object (initially equal to the creator UID).
When accessing such objects, the rules are as follows:
if the process has root privileges, the access is granted.
if the process’ EUID is the owner or creator UID of the object, then the appropriate creator permission bit is checked to see if access is granted.
if the process’ EGID is the owner or creator GID of the object, or one of the process’ groups is the owning or creating GID of the object, then the appropriate creator group permission bit is checked for access.
otherwise, the appropriate “other” permission bit is checked for access.
Note that root, or a process with the EUID of either the owner or creator, can set the owning UID and owning GID and/or remove the object. More information is available in ipc(5).