shmgetlabel, shmsetlabel - labeling interfaces for IPC shared memory
#include <sys/shm.h> int shmgetlabel(int shmid, m_label_t *label); int shmsetlabel(int shmid, m_label_t *label);
The shmgetlabel() and shmsetlabel() functions get and set the labels of shared memory segments. Labels provide another access control mechanism in addition to the permission bits that are managed via shmctl(2). In order to access a shared memory segment the current process clearance must dominate the label associated with shmid. See clearance(7) and labels(7) for more information.
The default label for all shared memory segments is ADMIN_LOW, which is dominated by every process clearance. The access policy only becomes effective when a new label is assigned using the shmsetlabel() function.
Labels cannot be changed while any process is attached to shmid. To set a label the current process clearance must dominate both the new label and the current label of shmid. In addition, the effective user ID must be equal to the value of shm_perm.cuid or shm_perm.uid in the data structure associated with shmid.
The shmgetlabel() and shmsetlabel() functions are not supported when Trusted Extensions is enabled.
Upon successful completion, 0 is returned. Otherwise, -1 is returned and errno is set to indicate the error.
The shmgetlabel() and shmsetlabel() functions will fail if:
The existing shmid label is not dominated by the process clearance.
A process is currently attached to the shmid.
The label argument points to an illegal address.
The shmid argument is not a valid shared memory identifier or the specified label is not dominated by the process clearance.
Trusted Extensions is enabled.
The function is shmsetlabel() and the effective user ID of the calling process is not equal to the value of shm_perm.cuid or shm_perm.uid in the data structure associated with shmid, and PRIV_IPC_OWNER is not asserted in the effective set of the calling process.
See attributes(7) for descriptions of the following attributes:
|
ipcs(1), shmctl(2), shmget(2), shmop(2), attributes(7), clearance(7), labels(7), privileges(7)
The shmgetlabel() and shmsetlabel() functions were added to Solaris in the Solaris 11.4.0 release.