 
  
  
  
  
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.