Каждая роль задается набором прав доступа, которые определяют возможности по выполнению операций над конкретными типами объектов и другими ролями.
Для каждого класса объектов определены различные режимы доступа. Если быть более точным, то это:
access-modes(ipc) = {ALTER, APPEND-OPEN, CHANGE-GROUP, CHANGE-OWNER, CLOSE, CREATE, DELETE, GET-PERMISSIONS-DATA, GET-STATUS-DATA, MODIFY-ATTRIBUTE, MODIFY-PERMISSIONS-DATA, READ, READ-ATTRIBUTE, READ-OPEN, READ-WRITE-OPEN, WRITE-OPEN}
access-modes(dev) = {APPEND-OPEN, CHANGE-GROUP, CHANGE-OWNER, CLOSE, MODIFY-ATTRIBUTE, MOUNT, READ-ATTRIBUTE, READ-OPEN, READ-WRITE-OPEN, UMOUNT, WRITE-OPEN}
access-modes(scd) = {GET-PERMISSIONS-DATA, GET-STATUS-DATA, MODIFY-ATTRIBUTE, MODIFY-PERMISSIONS-DATA, MODIFY-SYSTEM-DATA, READ-ATTRIBUTE, REMOVE-FROM-KERNEL, SHUTDOWN, WRITE}
access-modes(process) = {CHANGE-GROUP, CHANGE-OWNER, CLONE, CREATE, MODIFY-ATTRIBUTE, READ-ATTRIBUTE, SEND-SIGNAL, TERMINATE, TRACE}
Кроме того возможно задание типов вновь создаваемых объектов для данной роли. Для предотвращения создания объектов может быть использовано предопределённое значение "no-create". Специальные значения типов, такие как "type-inherit-parent" (или "type-inherit-process") могут быть использованы для наследования типа родительского каталога (или родительского процесса).
Также для каждой роли может сыть определен тип процесса после процедуры смены владельца или запуска нового процесса. Для отклонения этих запросов здесь могут использоваться специальные значения "no_chown" и "no_execute".
Каждый пользователь имеет заданную по умолчанию роль, наследуемую его процессами.
rc-default-role: def-role(u:user) = роль по умолчанию, заданная для пользователя "u", и начальная роль процессов, принадлежащих "u" после их создания, а так же после каждого изменения владельца (инициированного вызовом функции setuid).
Каждый процесс, в отдельно взятый момент времени, выполняет одну роль.