Difference between revisions of "ACL and Groups/Polish"

From Mumble Wiki
Jump to: navigation, search
(ACL)
(ACL)
Line 61: Line 61:
 
ACL są przetwarzane w kolejności w jakiej zostały wpisane, od góry do dołu zgodnie z kierunkiem dziedziczenia kanałów.
 
ACL są przetwarzane w kolejności w jakiej zostały wpisane, od góry do dołu zgodnie z kierunkiem dziedziczenia kanałów.
  
Aby edytowac ACL trzbea kliknąć prawym myszy na kanale, wybieramy '''Edytuj''' (Edit), a następnie wybieramy zakładkę '''ACL'''.
+
Aby edytować ACL trzeba kliknąć prawym myszy na kanale, wybieramy '''Edytuj''' (Edit), a następnie wybieramy zakładkę '''ACL'''.
Dodawanie grup polega na wybraniu na dole danej grupy, oraz wtedy przypisania jej praw w prawej części załadki (Zezwól i Zaroń/Allow Deny)
+
Dodawanie grup polega na wybraniu na dole danej grupy, oraz wtedy przypisania jej praw w prawej części zakładki (Zezwól i Zaroń/Allow Deny).
  
 +
Zamiast przypisywać prawa grupie, można przypisywać prawa poszczególnym osobom - wtedy nie dotykamy pola Grupy tylko wybieramy osobę z ID Użytkownika. Jednak jest to nie zalecane rozwiązanie.
  
 +
W ACL użytkowników można rozróżnić od grup tym, że grupy mają przed nazwą znaczek @.
  
are all attached to a specific channel. A channel can specify if it wants to inherit the ACL on the parent, but it cannot specify which; it's a all or nothing deal. ACL are evaluated in order, from top to bottom along the chain of channels. To add or remove an ACL, right click on the channel you wish to change ACL's on and click "Edit ACL." Once you add an ACL, you set the group the ACL defines by typing it's name in the bottom left box labeled "Group." If you just want to set an ACL for a specific user, leave the Group box blank and type the name of the user in the box labeled "User ID."
+
==Specjalne znaki przed nazwami grup oraz grupy specjalne==
  
For each entry, either a user or a group will match. A user must be a specific, registered user, while a group can be any group valid in the channel the ACL is defined on. Note that group membership is evaluated in the channel the ACL is executed in, which is important for inherited ACLs. If a group begins with a ''!'', it's membership is inverted, and if it begins with a ''~'', it is evaluated in the context of the channel the ACL is defined on (and not the active channel).
+
Nazwy grup można poprzedzać specjalnymi znakami:
: all
+
* ! (wykrzyknik) odwraca przynależność do grupy (czyli !admin oznacza wszystkich nie będących w grupie admin)
Everyone
+
* ~ (tylda) grupa określona w miejscu na którym jest zdefiniowany ACL a nie na aktywnym kanale.
: auth
+
* all - wszyscy użytkownicy zarejestrowani i niezarejestrowani
All authenticated users
+
* auth - wszyscy zarejestrowani użytkownicy
: in
+
* in - wszyscy użytkownicy na aktualnym kanale
All users inside current channel
+
* out - wszyscy użytkownicy nie będący na aktualnym kanale
: out
+
* sub - dotyczy tylko podkanałów tego kanału, o tym niżej
All users outside current channel
 
  
For each entry, permissions are either allowed or denied; in case of a conflict the last entry takes precedence. Remember that all entries are evaluated in order, so if you have the following set of entries:
+
Dla każdego wpisu prawa mogą być Zezwól (Allow) albo Zabroń (Deny). W razie konfliktu, ostatni wpis ma najważniejsze znaczenie. Pamiętaj, że każdy wpis jest przetwarzany w kolejności w jakiej się znajduje na liście (od góry do dołu).
* @all deny speak
+
Przykład 1:
* @all allow speak
+
@all deny speak
Then everyone will be allowed to speak. On the other hand
+
@all allow speak
* @all allow speak
+
Wynik: wszyscy użytkownicy mogą rozmawiać
* @all deny speak
 
Will deny speak from everyone.
 
  
Each entry can be marked as either applying in the current channel, in subchannels or both. Most of the time you want both. Remember that for an entry to be applied on a subchannel, you have to apply it to subchannels '''and''' allow inheritance in the subchannels.
 
  
== The @sub group ==
+
Przykład 2:
 +
@all allow speak
 +
@all deny speak
 +
Wynik: wszyscy użytkownicy NIE MOGĄ rozmawiać.
  
There is a special group called ''sub'', which just like ''all'' has a special meaning. Sub is used as ''sub,a,b,c'', where ''a'' is the minimum number of common parents, and ''b'' and ''c'' restrain the path depth:
+
Każdy wpis ACL posiada specjalne flagi definiujące jego właściwości oddziaływania - czyli kontekst w jakim się znajduje.
*b is the minimum and c the maximum path length, measured from the channel referred by a.
+
'''Stostuj do podkanału''' (subchannels) - prawa dostępu wpływają na grupy w danych podkanałach.
*If any of those parameter is missing, then there will be no minimum/maximum path length.
+
'''Stosuj do tego kanału''' (this channel) - prawa dostępu wpływają na grupy w aktualnym kanale.
 +
Oczywiście można wybrać żaden, jeden albo oba na raz. W większości przypadków chcesz mieć wybrane obie opcje.
 +
Pamiętaj, że jeśli chcesz aby wpis działał na podkanały, to musisz ustawić na wpisie aby był stosowany na podkanały oraz żeby podkanały dziedziczyły ACL z kanału nadrzędnego.
  
It's somewhat complex, but also rather powerful. For example, assume the following tree:
+
 
 +
== Grupa @sub ==
 +
Specjalna grupa '''sub''' działa  podonie jak ''all'' ale posiada specjalne znaczenie i parametry.
 +
Stosuje się wpis:
 +
sub,a,b,c
 +
gdzie
 +
*a jest minimalną liczbą wspólnych kanałów nadrzędnych (parents)
 +
*b oraz c ograniczają głębokość zejścia po podkanałach.
 +
** b ustawia minimalną głęokość ścieżki liczoną od kanału a
 +
** c ustawia maksymalną głębokość ścieżki liczona od kanału a
 +
 
 +
Jeśli któregokolwiek parametru brakuje, wtedy nie istnieje minimalna ani maksymalna głęokość ścieżki.
 +
 
 +
Z początku wydaje się to zagmatwane, ale jest również bardzo potężnym narzędziem. Przykład:
  
 
* Root
 
* Root
Line 106: Line 122:
 
*** B1
 
*** B1
 
*** B2
 
*** B2
 +
Zakładamy odmowę wejścia (all deny) na kanał Root.
 +
Następnie na A definujemy:
 +
  @~sub,0,1 +enter
 +
 +
Po pierwsze, ten wpis ACL będzie przetwarzany w kontekście zdefiniowanego kanału, gdyż jego grupa zaczyna się od ~.
  
Let's deny enter to all on ''Root'' to start with. Then, on ''A'', we define
+
Pierwszy parametr (0) wskazuje ile dodatkowych elementów ścieżki musi pasować. Zero oznacza, że pasują wszystkie do danego miejsca. To oznacza, że każdy użytkownik w kanale będącym w ścieżce '''Root.A''' będzie pasował.
 +
Gdyby parametr wynosił 1, a my byśmy byli w ścieżce Sub2, wtedy ścieżka by musiała pasować do Root.A.Sub1.
 +
Ustawienie tego parametru ma sens tylko do grup doczepionych (z ~).
  
# @~sub,0,1 +enter
+
Drugi parametr oznacza, że ścieżka musi być o co najmniej jeden kanał dłuższa niż ścieżka kanału w którym zdefiniowano wpis ACL.
 +
Tak więc ten wpis pasuje w tym przypadku do każdego kanału zaczynającego się od Root.A i posiadającego przynajmniej jeden dodatkowy element (podkanał).
  
First of all, this ACL will be evaluated in the context of the defining channel, since the group starts with ~.
+
'''Sumując''' - ten wpis ACL pozwala każdej osobie będącej w _podkanałach_ A (ale nie będącej bezpośrednio na A), wejść na kanał A albo jakikolwiek z jego podkanałów (zakładamy, że podkanały A dziedziczą ACL z kanału A).
  
The first parameter (0) indicates how many additional elements of the path name must match. A zero means we require a match up to this point. This means that any player in a channel under the path Root.A will match. If the parameter had been 1 and we were in channel Sub2, the path of the player would need to match Root.A.Sub1. Setting this to positive values only makes sense for pinned groups (with the ~).
+
Gdybyśmy nie użyli znaku ~, wtedy każdy użytkownik w jakimkolwiek podkanale A wejść na kanał wyżej (np z Sub1 na A1 albo A, ale nie inaczej), albo innymi słowy - każdy byłby w stanie wejść do kanału nadrzędnego jeśli byłby w kanale podrzędnym.
  
The second parameter requires the path of the evaluated channel to be at least one element longer than the path of the channel of the ACL. So this rule will match in anything that starts with Root.A and has at least one more element.
 
  
To sum it up; this rule allows anyone in one of A's descendants (but no A itself) to join A or any of its descendants (we assume subchannels inherit the rule).
 
  
If we don't use the ~, then it will allow people in any of A descendants to go up (ie, from Sub1 to A1 or A but not the other way) or, in other words, allow people in the descendant of a channel (any depth) to enter it.
 
  
 
Let's add a new rule to ''A1'':
 
Let's add a new rule to ''A1'':

Revision as of 14:11, 20 February 2010

Notice: Please do not edit

We are still working over translation :)


Languages: Deutsch — English — Español — Français — Italiano — Polish

Wstęp

ACL czyli Access Control List jest sposobem przyznawania praw dla użytkowników na kanałach. Kilka zasad :

  • tworzyć grupę, dodawać ludzi do grupy, następnie grupie przydzielać prawa.
  • prawa są sprawdzane od góry do dołu
  • prawo Zabroń ma wyższy priorytet niż Zezwól
  • najpierw odbieraj prawa (grupy na gorze) a potem przyznawaj prawa (grupy na dole) - dzięki temu, co nie jest zezwolone to jest zabronione i nie ma nadużyć :)

Aktywacja zakładki edycji ACL

Najpierw sprawdź Opcje -> Konfiguracja, na dole po lewej masz checkbox Zaawansowane - zaznacz go. Dzięki temu jak klikniesz prawym myszy na kanale i wybierzesz Edytuj to zobaczysz zakładkę ACL.

Grupy

Z początku chcesz najpierw stworzyć grupy w kanale głównym aby być w stanie łatwiej zarządzać pozostałymi kanałami. Aby zedytować albo stworzyć nową grupę, kliknij prawym myszy na głównym kanale i kliknij Edycja (Edit). Następnie kliknij w zakładkę Grupy (Groups) - możesz teraz wybrać grupy, albo dodać nowe (wpisujesz nazwę w pole i wciskasz Dodaj).

W chwili jak wybierzesz grupę, w dolnych okienkach pokaże się lista użytkowników należąca do grupy. Oczywiście jeśli grupa jest nowa to lista jest pusta, i wtedy trzeba z listy na dole wybrać osobę będącą na serwerze, ewentualnie trzeba wpisać jej dokładny nick z palca i wcisnąć Dodaj (Add). Dodawać do grup można tylko zarejestrowanych użytkowników na mumble.

Grupy są przypisane do specyficznego kanału, ale mogą być także dziedziczone przez subkanały ( podkanały ), jeśli jest zaznaczona opcja Dziedziczny (Inheritable) w kanale nadrzędnym (parent) oraz jeśli jest zaznaczona opcja Dziedzicz (Inherit) w podkanale.

Dzięki tej opcji możesz ustawić jedną albo więcej grup w kanale nadrzędnym i dziedziczyć po nim grupy i prawa dostępu dla tych grup. Dodatkowo można ustawić na każdy podkanał specyficzne prawa dla danych grup.

Dla każdego kanału grupa zawiera trzy składowe informacje:

  1. Członkowie (Members): lista osób dodanych do grupy (np gdyż nie są członkami takiej samej grupy dziedziczonej z nadrzędnego kanału)
  2. Odziedziczeni członkowie (Inherited members): lista osób dziedziczonych z tej samej grupy z kanału nadrzędnego
  3. Wykluczeni członkowie (Excluded members): lista osób która ma być usunięta z grupy - użyteczne jak danej osobie mamy zabrać prawa z pewnej grupy w pewnym specyficznym podkanale.

Przykład

Praktyczny przykład z grupą admin. Za każdym razem, jak osoba tworzy kanał, wtedy jest on dodawany do grupy admin danego kanału, jednakże nie daje to jeszcze żadnych praw na kanale, a jedynie zaznacza, iż należy on do tej grupy. Jednakże Mumrur domyślnie tworzy grupę w kanale z prawami Edycję ACL (Write ACL) Zezwól.

Przy strukturze jak poniżej

  • Root
    • A
      • B
    • C
      • D

Osoba "Big Boss" jest jedynie członkiem grupy admin w kanale Root. W kanale A, osoba "BoosA" oraz w kanale "BossB" są dodawani do grup admin na tych kanałach.

W kanale Root, A oraz B, ustawiamy flagę Dziedzicz (Inherit) oraz Dziedziczny (Inheritable) na grupie admin - jest to domyślne ustawienie w Murmurze.

Osoba będąca członkiem tej grupy w jakimkolwiek kanale będzie dziedziczona (inherited member) w podkanałach. Tak więc całkowita lista osób na kanale B będzie "Big Boss, BossA, BossB". Dzięki temu jeśli dodamy nową osobę "SuperBoss" do grupy admin w kanale Root, to automatycznie pojawi się ona w grupie admin w kanałach podrzędnych A oraz B

Teraz w kanale C mamy grupę admin, ale oznaczamy w nim aby nie było opcji Dziedzicz (Inherit). Dodatkowo dodajemy do niej osobę BossC. Jak teraz się przyjrzymy grupie admin, to zauważymy, że na kanale C nie ma adminów z kanału Root, więc lista zawiera tylko jedną osobę BossC. Wszelkie zmiany w grupach nie dziedziczonych w kanale Root nie będą wtedy widoczne w kanale C.

Natomiast w kanale D będziemy widzieć tylko admina z kanału C (bo jest nadrzędny), chyba że ustawimy aby nie dziedziczyć grupy admin.

ACL

ACL (Access Control Lists) są przypisane do specyficznego kanału. Kanał może mieć zaznaczenie czy dziedziczy (inherit) inne ACL z kanału nadrzędnego czy też nie, jednakże nie można wybrać które ma dziedziczyć - po prostu dziedziczy wszystkie albo żadne. ACL są przetwarzane w kolejności w jakiej zostały wpisane, od góry do dołu zgodnie z kierunkiem dziedziczenia kanałów.

Aby edytować ACL trzeba kliknąć prawym myszy na kanale, wybieramy Edytuj (Edit), a następnie wybieramy zakładkę ACL. Dodawanie grup polega na wybraniu na dole danej grupy, oraz wtedy przypisania jej praw w prawej części zakładki (Zezwól i Zaroń/Allow Deny).

Zamiast przypisywać prawa grupie, można przypisywać prawa poszczególnym osobom - wtedy nie dotykamy pola Grupy tylko wybieramy osobę z ID Użytkownika. Jednak jest to nie zalecane rozwiązanie.

W ACL użytkowników można rozróżnić od grup tym, że grupy mają przed nazwą znaczek @.

Specjalne znaki przed nazwami grup oraz grupy specjalne

Nazwy grup można poprzedzać specjalnymi znakami:

  •  ! (wykrzyknik) odwraca przynależność do grupy (czyli !admin oznacza wszystkich nie będących w grupie admin)
  • ~ (tylda) grupa określona w miejscu na którym jest zdefiniowany ACL a nie na aktywnym kanale.
  • all - wszyscy użytkownicy zarejestrowani i niezarejestrowani
  • auth - wszyscy zarejestrowani użytkownicy
  • in - wszyscy użytkownicy na aktualnym kanale
  • out - wszyscy użytkownicy nie będący na aktualnym kanale
  • sub - dotyczy tylko podkanałów tego kanału, o tym niżej

Dla każdego wpisu prawa mogą być Zezwól (Allow) albo Zabroń (Deny). W razie konfliktu, ostatni wpis ma najważniejsze znaczenie. Pamiętaj, że każdy wpis jest przetwarzany w kolejności w jakiej się znajduje na liście (od góry do dołu). Przykład 1:

@all deny speak
@all allow speak

Wynik: wszyscy użytkownicy mogą rozmawiać


Przykład 2:

@all allow speak
@all deny speak

Wynik: wszyscy użytkownicy NIE MOGĄ rozmawiać.

Każdy wpis ACL posiada specjalne flagi definiujące jego właściwości oddziaływania - czyli kontekst w jakim się znajduje. Stostuj do podkanału (subchannels) - prawa dostępu wpływają na grupy w danych podkanałach. Stosuj do tego kanału (this channel) - prawa dostępu wpływają na grupy w aktualnym kanale. Oczywiście można wybrać żaden, jeden albo oba na raz. W większości przypadków chcesz mieć wybrane obie opcje. Pamiętaj, że jeśli chcesz aby wpis działał na podkanały, to musisz ustawić na wpisie aby był stosowany na podkanały oraz żeby podkanały dziedziczyły ACL z kanału nadrzędnego.


Grupa @sub

Specjalna grupa sub działa podonie jak all ale posiada specjalne znaczenie i parametry. Stosuje się wpis:

sub,a,b,c

gdzie

  • a jest minimalną liczbą wspólnych kanałów nadrzędnych (parents)
  • b oraz c ograniczają głębokość zejścia po podkanałach.
    • b ustawia minimalną głęokość ścieżki liczoną od kanału a
    • c ustawia maksymalną głębokość ścieżki liczona od kanału a

Jeśli któregokolwiek parametru brakuje, wtedy nie istnieje minimalna ani maksymalna głęokość ścieżki.

Z początku wydaje się to zagmatwane, ale jest również bardzo potężnym narzędziem. Przykład:

  • Root
    • A
      • A1
        • Sub1
        • Sub2
      • A2
      • A3
    • B
      • B1
      • B2

Zakładamy odmowę wejścia (all deny) na kanał Root. Następnie na A definujemy:

 @~sub,0,1 +enter

Po pierwsze, ten wpis ACL będzie przetwarzany w kontekście zdefiniowanego kanału, gdyż jego grupa zaczyna się od ~.

Pierwszy parametr (0) wskazuje ile dodatkowych elementów ścieżki musi pasować. Zero oznacza, że pasują wszystkie do danego miejsca. To oznacza, że każdy użytkownik w kanale będącym w ścieżce Root.A będzie pasował. Gdyby parametr wynosił 1, a my byśmy byli w ścieżce Sub2, wtedy ścieżka by musiała pasować do Root.A.Sub1. Ustawienie tego parametru ma sens tylko do grup doczepionych (z ~).

Drugi parametr oznacza, że ścieżka musi być o co najmniej jeden kanał dłuższa niż ścieżka kanału w którym zdefiniowano wpis ACL. Tak więc ten wpis pasuje w tym przypadku do każdego kanału zaczynającego się od Root.A i posiadającego przynajmniej jeden dodatkowy element (podkanał).

Sumując - ten wpis ACL pozwala każdej osobie będącej w _podkanałach_ A (ale nie będącej bezpośrednio na A), wejść na kanał A albo jakikolwiek z jego podkanałów (zakładamy, że podkanały A dziedziczą ACL z kanału A).

Gdybyśmy nie użyli znaku ~, wtedy każdy użytkownik w jakimkolwiek podkanale A wejść na kanał wyżej (np z Sub1 na A1 albo A, ale nie inaczej), albo innymi słowy - każdy byłby w stanie wejść do kanału nadrzędnego jeśli byłby w kanale podrzędnym.



Let's add a new rule to A1:

  1. @sub,-1,0 +link

This allows anyone that's in the parent (equal path up to -1 elements (the first parameter)) or any of the siblings (path length equal (the 0 parameter)) to link to this channel.

And finally, just to show how messed up it can get, let's add this on B:

  1. @~sub,-1,2,2 +enter

This lets anyone that's currently in a descendant of Root (B's parent) and has a path length of exactly 2 (length of Root.B -1 + 2) join, so this rule would match someone in A1, but not A or Sub1.

Channel Passwords and Access Tokens

Beginning with Mumble 1.2, it is now possible to set access on channels based on "tokens" or "passwords". Passwords are stored in a tokens list in the client for each server, with the client using them as needed. From this point forward, we will refer to channel passwords as "tokens" instead, for clarity.

Configuring an Access Token

Access Tokens are configured by creating special groups, which consist of the token prefixed by a pound symbol. For example a token called "letmein" corresponds to a group called #letmein.

The Channel Editor dialog box contains a field called "password". Entering "letmein" in the password field will automatically create a token group called #letmein, then by default will deny "Enter" access to @all and allow "Enter" access to users in the group #letmein, which will consist of any user who has that token in their token list.

To create token groups manually, first enable the Advanced Channel Editor. Then Edit a channel and go to the ACL tab. On the bottom of the ACL list, select the @all entry and check the "Deny Enter" permissions box. Now click "Add", and in the "Group" combobox at the bottom write #letmein and press enter. Now check the "Allow Enter" permissions box, and click OK to dismiss the editor.

Using an Access Token

You may add access tokens to your client by selecting "Access Tokens" from the "Server" menu. Click add, type the token (e.g. "letmein") and click "OK". It should take effect immediately, granting you whatever permissions are associated with that token group. Remember that tokens are passwords, so treat them as such; pick a token name that is unique and hard to guess.

Permission Definitions

Write

This gives total control over the channel, including the ability to edit ACLs. This privilege implies all other privileges.

Traverse

Without this privlege, a player will be unable to access the channel or any subchannels in any way, regardless of privileges in the subchannel. Don't deny this unless you really know what you're doing; you can probably achieve the effect you want by denying a player the Enter privlege.

Enter

Allows player to enter channel. Even without this privilege, a player can be moved into the channel by a player with Move/Kick.

Speak

Allows player to speak in channel. For linked channels, only players with Speak privilege in the destination channels will be heard. This can be used to set up a hierarchy of linked channels where all players can hear all the leader of each group, but normal players will not be propageated outside their channel. This way, players will hear someone else is talkig to the group leader and (hopefully) stop talking for a short while.

If a player joins a channel he does not have Speak privilege in, he will be suppressed by the server, and will be unable to speak until someone unmutes him.

Mute / Deafen

Allows a player to mute or deafen another player. Note that mute status will follow a player until he is either manually unmuted or reconnects to the server.

Move / Kick

Allows a player to move another player to another channel or kick them off the server. Unless the target player has Enter privileges in the channel he's being moved to, Move privileges is required in both channels.

Make Channel

Allows a player to make a subchannel in the current channel. The player will automatically be added to the admin group in the new channel, so make the inheritable ACLs give the privileges you desire.

Make Temporary Channel

Allows a player to make a temporary subchannel in the current channel, which will automatically be deleted when the last user leaves it. The creator will automatically be moved into the channel after creating it.

Link Channel

Allows a player to link or unlink, as well as push-to-link a channel. Unlinking requires Link privilege in either channel, and linking requires Link privilege in both.

AltSpeak

Allows a player to speak in channel if he is holding the Alt Push-To-Talk key (can be configured in the Shortcuts tab of the options window). It works as Speak for linked channels, etc. This may be used to broadcast to a hierarchy of channels without having to link to them.

Examples

Group of servers with FPS game

In this example, we assume we have a group of public servers running FPS games. Each game has 2 competing sides, and each side consists of one or more squads. We want a hierarchy such as this:

  • Servers
    • "Servername"
      • Team 1
        • Squad 1
        • Squad 2
        • ...
      • Team 2
        • Squad 1
        • ...
      • ...
    • ...

Let's assume we have a small script linked with qstat that puts the player in the channel of the right side, and once in there we want to give them the ability to switch between squad channels and link at will. However, we do not want them to gain access to the channels of the other side.

This is actually a very straightforward implementation; on the "Servers" channel, define an empty group called players. Then, add the following acls:

  1. @all deny enter
  2. @~sub,2,2 allow enter, allow link

The first rule denies enter privilege to all players, and the second rule allows anyone within a hierarchy at least 2 elements down from "Servers" to move and link at will. In practice, this means that once a player is inside "Team 1", he can move freely about in there but can't switch to the other team or another server subchannel.

MMORPG Raid

Assume this setup:

  • Root
    • Raid
      • Healers
      • Tanks
      • Damage Dealers
      • Wussards and other pets

The desire is to have one leader of each group, plus a few people as raid leaders.

Set this up as follows: In "Raid", create a group called "groupleaders". Put the leader of each group in this group. In the same channel define "raidleaders", and put the raidleaders in this group.

In the Raid channel, define the following ACLS:

  1. @all deny enter, deny speak [Apply Here only]
  2. @raidleaders allow enter, allow speak, allow link, allow mute, allow kick [Apply Here and Apply Subs]
  3. @groupleaders allow speak, allow link [Apply Here only]
  4. @groupleaders allow link, allow mute, allow kick [Apply Subs only]

The first rule makes sure nobody can speak or enter the Raid channel. The second rule lifts this restriction from anyone in the raidleaders group as well as giving them broad permissions. The third rule makes sure groupleaders can link and speak to the raid channel, and the fourth gives them permission to link from the subchannel as well as get rid of troublesome players.

Normal players will not be able to join the raid channel, but as that denial only applied in the raid channel they can join any subchannel they wish. When the channels are linked, everyone in the linked channels will hear raid leaders and group leaders. However, raid leaders will only hear group leaders, they will not hear normal players. This way, players can stay quiet when they hear a command coming down (and also hear the command direct without the groupleader having to repeat it), and if they don't that won't bother the rest of the raid.