Иерархия уровней привилегий
Выдача прав пользователям на сервере определяется системой из 5 слоев. В каждом последующем слое возможно перезаписать значения привилегий из предыдущего слоя. Если ни в одном из этих 5 слоев привилегия не установлена, то она считается нулевой (для числовых) или false (для логических):
- Уровень 1: Группы сервера
- Уровень 2: Привилегии пользователей
- Уровень 3: Привилегии каналов
- Уровень 4: Группы канала
- Уровень 5: Привилегии пользователей на каналах
Поскольку группа канала выше по уровню, чем группа сервера, то вы *сможете* редактировать имя канала (только своего канала, где вы являетесь админом, но не других каналов).
Далее детально описан каждый из слоев с их особенностями.
Уровень 1: Группы сервера
Каждый пользователь состоит в одной или нескольких группах сервера. В каждой группе сервера установлены привилегии, которые вы автоматически получаете, когда входите в группу.
Так как вы можете состоять в нескольких группых сервера одновременно, а одни и те же привилегии могут быть назначены в любой из этих групп, то необходимо понимать результат такого смешения привилегий на Уровне 1.
Основная логика выдачи прав на одном уровне состоит в использовании привилегий с наивысшим значением. У каждой привилегии группы сервера может быть установлен флажок Negate или Skip, которые влияют на способ выбора привилегии в этом случае. Они описаны далее.
Каждый пользователь всегда состоит хотя бы в одной группе сервера. На сервере всегда есть специальная группа, которая назначается всем новым пользователям сервера. Когда новый пользователь впервые заходит на сервер, он автоматически добавляется в эту группу сервера (изначально это группа Guest, но её можно переназначить в Параметрах виртуального сервера).
Для группы Server Admin привилегия i_client_kick_power = 50. Для Clan Leader i_client_kick_power = 100, а для War Organizer эта привилегия не установлена.
Результатом на Уровне 1 для вас будет i_client_kick_power = 100, поскольку это наивысшее значение во всех ваших группах.
Иногда вам может понадобиться создать группу сервера с отрицательным эффектом для пользователей, которые в ней будут состоять.
Например, группа "Sticky", пользователям которой запрещено перемещаться по каналам. Или группа "Silent", в которой удалены привилегии для возможности разговаривать. Чтобы так сделать, установите для привилегии флажок Negate.
Если вы состоите в нескольких группах, и в одной из них у привилегии установлен флажок Negate, то вы не получите наивысшее значение, как вы обычном случае, а напротив — получите самое низкое.
И это будет работать даже в том случае, если пользователь состоит в другой группе, в которой, скажем i_channel_join_power = 100. Флажок Negate гарантирует, что будет использоваться самое низшее значение привилегии. В нашем случае её значение будет "-1" (либо ещё ниже, если пользователь состоит в других группах, где она ниже).
Причина, по которой в нашем случае пользователь не может перемещаться по каналам, в том, что по-умолчанию у всех каналов ограничительная привилегия на вход i_channel_needed_join_power отключена (а значит = 0). И поскольку значение -1 меньше 0, то пользователь не может войти ни на один канал.
Так как группы сервера — это самый первый Уровень, то все привилегии этого слоя могут быть переопределены на верхних уровнях.
Но иногда для Групп канала (Уровень 4) желательно запретить переопределять привилегии, которые получаны в группе сервера. Для этого у привилегий существует флажок Skip.
Если в Группе сервера (Уровень 4) или в Привилегиях пользователя (Уровень 2) у привилегии установлен флажок Skip, эта привилегия не будет переопределена на любом из верхних уровней: Группы каналов (Уровень 4) или Привилегии канала (Уровень 3)
Уровень 2: Привилегии пользователей
Эти привилегии устанавливаются непосредственного на пользователя. Как и описано выше, они переопределяют привилегии из Уровня 1.
У привилегий этого уровня, как и у предыдущего, есть возможность установить флажок Skip, который гарантирует, что привилегия не будет переопределена на любом из верхних уровней.
Для этого вы устанавливаете на себя i_client_kick_power = 100. Поскольку Привилегии пользователей находятся на Уровне 2, привилегия на кик будет переопределена, и вы сможете воспользоваться ею, не находясь ни в одной из групп сервера.
По этой причине рекомендуем никому не выдавать доступ к группе Server Admin (либо исключительно доверенным лицам). Для остальных "модераторов" желательно создать отдельную группу на основе Normal, и назначить на неё только необходимые привилегии.
Уровень 3: Привилегии каналов
Привилегии каналов схожи с Привилегиями пользователей, за исключением того, что устанавливаются они непосредственно на канал.
Это можно использовать для каналов, на которые должны входить только некоторые пользователи (через i_channel_needed_join_power), или которые могут просматриваться только некоторыми пользователями (через i_channel_needed_subscribe_power).
Все привилегии каналов, которые логически назначены на канал, действуют только в пределах этого канала.
Например, если на определенном канале привилегия i_client_kick_power дает вам право на кик, то вы сможете кикать тользователей только в пределах этого канала, но не в других каналах.
Все привилегии каналов, которые логически назначены на канал, действуют только в пределах этого канала.
Уровень 4: Группы канала
Каждый пользователь состоит по крайней мере в одной из групп канала. Когда пользователь входит в новый канал, он автоматически удаляется из групп предыдущего канала. Все привилегии, которые вы получаете через группу канала могут использоваться только в пределах канала, в котором вы сейчас находитесь.- "Группа канала", которая назначается всем пользователям при первом входе на канал (по-умолчанию Guest).
- "Группа администратора канала", которая назначается на пользователя, создавшего канал (по-умолчанию Channel Admin).
Уровень 5: Привилегии пользователя на канале
Эти привилегии похожи на комбинацию Привилегий пользователя (Уровень 2) и Привилегий канала (Уровень 3). Другими словами, это аналогично Привилегиям пользователя, но действует только на определенном канале.
Они назначаются на пользователя и на канал одновременно; если выполняется условие, когда определенный клиент находится на определенном канале — только тогда эти привилегии будут действовать.
Большинство сценариев настройки сервера покрываются использованием Групп сервера и Групп канала. Остальные уровни являются расширенными дополнениями, которые рекомендуется использовать только при хорошем понимании системы привилегий.