Восклицательный знак "!" инвертирует права доступа и ставится всегда вначале строки. Другими словами, все выставленные флажки для прав меняются местами. Например: "!all".
Тильда "~" означает, что права будут назначены текущему каналу. Например, если этот знак не указать, но оставить флажок "Applies to sub-channels", то права будут назначены на всех подканалах, кроме того, где они установлены.
Работает только со спец. группами "sub", "in", "out".
in - пользователи внутри данного канала
out - пользователи за пределами данного канала (и вне подканалов)
sub - пользователи в подканалах данного канала
Обратите внимание, что данные три группы касаются именно пользователей, а не каналов. То есть, это относится к текущему положению пользователя по отношению к определяемому каналу.
Все обычные группы (all, auth, admin, и т.п.) не зависят от текущего положения пользователя.
У группы "sub" есть три числовых параметра, которые можно перечислить через запятую: ~sub,a,b,c. Например, "sub,-1,3,5"
Первый параметр (а) - начальная глубина канала в дереве, начиная от текущего канала. Например, если мы устанавливаем права для канала А, то "0" обозначает начало с текущего канала, "1" - начная с канала А1, и т.д. А если установить "-1", то это обозначает предыдущий канал, т.е Root.
Если обозначен первый параметр, то должен быть и второй.
Второй параметр (b) - минимальная глубина канала, начиная от начального канала.
Третий параметр (с) - максимальная глубина канала, начиная от начального канала. Этот параметр необязательный, и если он не задан, то захватываются все каналы, начиная со второго параметра. А если второй и третий параметры одинаковые, то количество захватываемых каналов = 1. Например, ~sub,0,2,2
Примеры:
Код:
Root
A---+
A1
A2
A3--+
C
B---+
B1
B2
A (@~in +write) при нахождении в канале А вы будете иметь доступ к изменению прав канала А и всех подканалов (при входе на эти подканалы доступ пропадает)
A (@in +write) то же, что и @~in, но при нахождении в любом из подканалов, вы будете иметь право изменять этот текущий подканал
A (@~out -enter) если вы уже находитесь в канале А, то сможете войти на любой из его подканалов один раз; после этого перемещение будет возможно только за пределами канала А
A (@out -enter) перемещение на канал А и его подканалы невозможно независимо от вышего текущего положения
A (@~sub -enter) при нахождении вне канала А вы сможете войти на него, или его подканал - после этого внутри перемещение становится невозможым; но если выйти за пределы канала А, можно будет снова на него войти
A (@sub -enter) можно свободно перемещаться по подканалам канала А, но на сам канал А можно войти только извне (с его подканалов на него войти не получится)
В данном контексте, "@~sub -enter" обозначает, что в поле группы необходимо вставить "~sub" (@ вставляется само), и установить флажок запрета (-) для входа в канал (enter). Или +write обозначает установить флажок (+) на разрешение к изменению ACL (write).
Если вы изменяете группу на нестандартное значение (отличное от того, что имеется в раскрывающемся списке), то для сохранения изменений необходимо нажать Enter, и только после этого закрыть окно настроек кнопкой ОК.
Это краткое изложение оригинальной статьи, с добавлением уже имеющегося опыта
http://mumble.sourceforge.net/ACL_and_G ... nglish#ACLК сожалению, нам не понятно, почему была сделана такая сложная система. Для полного понимания рекомендуем попробовать данные там примеры
http://mumble.sourceforge.net/Talk:ACL_ ... ps/English