The kernel stores permission information for IPC objects in a structure of type ipc_perm. For example, in the internal structure for a message queue described above, the msg_perm member is of this type. It is declared for us in linux/ipc.h as follows:
struct ipc_perm { key_t key; ushort uid; /* owner euid and egid */ ushort gid; ushort cuid; /* creator euid and egid */ ushort cgid; ushort mode; /* access modes see mode flags below */ ushort seq; /* slot usage sequence number */ };
NOTE:There is an excellent discussion on this topic, and the security reasons as to its existence and behavior, in Richard Stevens' UNIX Network Programming book, pp. 125.