對 IPC 物件的存取

IPC 物件是透過數個系統呼叫而建立、刪除及存取,這些系統呼叫已於「授信 AIX® 程式設計」主題中加以討論。 一般使用者不執行這些作業。本主題呈現 IPC 物件的建立、刪除和存取規則的一般概觀。

若要存取 IPC 物件,處理程序必須通過 DAC、MIC 和 MAC 存取檢查。

DAC 存取檢查是根據物件的模式 (owner、group 或 world) 以及處理程序的使用者和群組 ID。如果處理程序有效 UID 與物件擁有者 UID 或物件建立者 UID 相同,該處理程序對 IPC 物件具有 DAC 擁有者存取權。這也適用於 DAC 群組存取。

MAC 存取是根據處理程序和物件的 SL。MIC 存取是根據處理程序和物件的 TL。

IPC 物件內容的存取規則與 IPC 物件屬性相同。若要讀取 IPC 物件的內容或屬性,需要 DAC READMIC READMAC READ 存取權。若要寫入至 IPC 物件,需要 DAC WRITEMIC WRITEMAC WRITE 存取權。

IPC 物件屬性比 IPC 物件內容受限更多。因此,變更 IPC 物件屬性需要更大的專用權。若要修改標準 AIX 屬性 (例如模式),處理程序需要物件的 DAC OWNERMAC WRITE 存取權。若要變更 IPC 物件的 SL,處理程序必須具有下列全部專用權:
  • PV_SL_PROC 專用權
  • DAC OWNER (僅供降級)
  • DAC WRITE
  • MAC WRITE
  • 用於升級 SL 的 PV_SL_UG 專用權,或用於降級 SL 的 PV_SL_DG 專用權
  • 如果現有的或新的 SL 在處理程序的許可範圍之外,則必須有 PV_MAC_CL
  • MIC WRITE
若要變更 IPC 物件的 TL,處理程序必須具有下列全部專用權:
  • PV_TL 專用權
  • DAC OWNER
  • MAC WRITE
  • MIC WRITE

另外,為了要鎖定或解除鎖定記憶體中的共用記憶體區段,處理程序必須有 PV_KER_IPC_O 專用權。處理程序也需要 PV_KER_IPC 專用權來變更 msgctl 子常式中的訊息佇列的 msg qbytes