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.