Zugriffsrechte
Das Permissions-System in Zikula ist mächtig und flexibel - und leider nicht ganz einfach zu bedienen. Aber die meisten Module sind so vorkonfiguriert, dass sie für das typischen "Besucher-Benutzer-Admin"-Szenario passen. Auf vielen Sites muss also an den Zugriffsrechte nie etwas gemacht werden.
Zugriffsrechte spezieller Module
Unter Zugriffsrechte spezieller Module findet ihr eine Übersicht welche Rechtezuordnung was bei speziellen Modulen bewirken
Das Prinzip
Zikula vergibt nicht einfach nur Rechte für ganze Module, sondern auch für bestimmte Teile eines Moduls. Die Rechte in sind nach dieser Art aufgebaut:
GRUPPE | KOMPONENTE | INSTANZ | BERECHTIGUNG
- Die Gruppe ist eine bestimmte Benutzergruppe, so wie sie in der Gruppenverwaltung eingestragen sind. Ein Zugriffsrecht trifft dann auf einen Benutzer zu, wenn er Mitglied dieser Gruppe ist.
- Die Komponente ist entweder ein ganzes Modul oder nur ein Teil davon.
- Die Instanz ist dann der konkrete Fall in dem die Komponente auftritt.
- Die Berechtigung sagt dann aus, was die Gruppe mit dieser bestimmten Instanz der Komponente tun darf.
Beispiel 1
Nehmen wir an wir wollen regeln, wer bestimmte Fahrzeuge nutzen darf:
| Gruppe | Komponente | Instanz | Berechtigung |
| Über18 | PKW:: | .* | administrieren |
Das bedeutet, dass Benutzer aus der Gruppe "Über18" jeden (Instanz = .* = "Alle") PKW administrieren darf.
Beispiel 2
Nehmen wir an, wir wollen ausdrücken, dass Kinder unter 12 hinten sitzen müssen:
| Gruppe | Komponente | Instanz | Berechtigung |
| Unter12 | PKW::Rücksitze | .* | kommentieren |
Dann dürfen Mitglieder der Gruppe "Unter12" die Komponenten Rücksitz in allen PKW nur kommentieren.
Beispiel 3
Jetzt mal ein Beispiel mit einer konkreten Instanz: Wir wollen das eigene Auto an die volljährigen Kinder verleihen.
| Gruppe | Komponente | Instanz | Berechtigung |
| Kinder | PKW:: | Golf:: | moderieren |
| Kinder | PKW:: | Porsche:: | keines |
Dann dürfen die Kinder den Golf leihen, aber den Porsche nicht.
Beispiel 4
Jetzt kombinieren wir das mal alles:
| Gruppe | Komponente | Instanz | Berechtigung |
| Über18 | PKW:: | .* | administrieren |
| Unter12 | PKW::Rücksitze | .* | kommentieren |
| Kinder | PKW:: | Golf:: | moderieren |
| Kinder | PKW:: | Porsche:: | keines |
Nun wird klar: Benutzer, die Mitglieder der Gruppen "Über18" und "Kinder" sind, dürfen den Golf leihen, den Porsche nicht. Benutzer der Gruppe "Unter12" dürfen nur hinten sitzen.
Berechtigungsstufen
Das System unterscheidet neun unterschiedliche Stufen:
- keines
- Übersicht
- lesen
- kommentieren
- moderieren
- editieren
- hinzufügen
- löschen
- administrieren
Was man mit der jeweiligen Stufe darf, entscheidet der Modulentwickler: In einer normalen Zikula-Installation haben registrierte Besucher für alle Module die Stufe "Kommentieren". In dem einen Modul reicht das nur, um Beiträge zu lesen - zum Beispiel in Pages?. In Dizkus kann man damit Forenbeiträge schreiben und in UserPictures sogar seine eigenen Bilder anlegen, editieren und löschen.
Generell gilt, dass Berechtigungen kumulativ sind, d.h. alle niedriegeren Berechtigungen beinhalten (’kommentieren’ schliesst also automatisch auch ‘lesen’ mit ein). Die Rechte werden nacheinander ausgewertet. Der erste Treffer zählt, alles weitere wird ignoriert. Zugriffsberechtigungen werden linear von oben nach unten in der Liste angewendet - PostNuke? nimmt die erste passende Berechtigung und wendet diese an - wenn also eine Zeile Adminberechtigung einräumt kann dies nicht durch eine spätere Zeile eingeschränkt werden!
Komponente
Die Komponente ist vorgegeben, z.B. Menublock:: oder Onlineblock:: - das ist einfach das Modul, der Block? oder nur ein Teil eines Moduls. Ein Klick auf "Komponente" öffnet ein Popup, in dem Du nachschauen kannst, wie genau die Komponente des Moduls heißt, die Du setzen willst.
Instanz
Die Instanz besteht aus zwei Teilen, deren Bedeutung von der jeweiligen Komponente abhängt. Die einzelnen Teile sind durch den Doppelpunkt voneinander getrennt. Der Ausdruck, der ausgewertet wird, ist ein regulärer Ausdruck. Damit mag der eine oder andere nichts anfangen, aber mal kurz:
| * | steht für eine beliebige Wiederholung (auch keine) |
| . | beschreibt ein beliebiges Zeichen |
| steht für den Beginn, $ für das Ende | |
| | | ist eine Auswahl aus mehreren Möglichkeiten |
Beispiele:
| [“Haupt”*] | Alles was mit ““Haupt”” beginnt, also “Haupt”menü, “Haupt”auswahl, “Haupt”mann. |
| (“x”|“y”|“z”) | “x “oder “y” oder “z” als Ganzes |
| .* | alles |
Berechtigungsvergabe
Zuerst sollte man eine Gruppe erstellen, für die die Berechtigungen gelten sollen und dann die Mitglieder zuordnen. Dieser Gruppe kann man im folgenden dann die gewünschten Berechtigungen zuweisen.
Ein Beispiel: Erstellung einer Gruppe ‘Subadmin’, die News administrieren kann, Schritt für Schritt erklärt: Zuerst die Gruppe ‘Subadmin’ anlegen und gewünschte Benutzer zuordnen. Dann unter Zugriffsrechte auf neues Gruppenrecht klicken.
- Gruppe → Subadmin
- Komponente → Stories::Story
- Instanz → .*
- Zugriffsrecht → administrieren
(eine Liste der vorhandenen Komponenten wird übrigens bei Klick auf den Titel in einem Pop-Up-Fenster eingeblendet)
Achtung!: Diese Einstellung räumt der Gruppe Adminberechtigung für das Modul Stories ein! Jetzt muss man noch sicherstellen, dass die Reihenfolge der Berechtigungen korrekt ist. In den meisten Fällen ist die oberste Berechtigung:
- Admins | .* | .* | administrieren
Also dürfen alle Benutzer in der Gruppe Admin alles. Die neu eingerichtete Subadmin-Gruppe sollte also UNTER diese Berechtigung gestellt werden, damit keine spätere Zeile eventuelle Einschränkungen vornimmt. Beispiel:
- Subadmin|Stories::|.*|administrieren
- Users|.*|.*|kommentieren
erlaubt Mitglieder der Subadmin-Gruppe die Administration des Story-Bereiches - wenn man nun die beiden Zeilen in der Reihenfolge umstellt, macht die Berechtigung schon keinen Sinn mehr, da die Subadmins als Mitglieder der Gruppe ‘Users’ nur das Kommentarrecht eingeräumt bekommen. Durch den Einsatz der ‘Instanz’ in den Berechtigungen kann man die Einstellungen sehr detailliert einrichten - folgende Beispiele sollen dies verdeutlichen: Der Link zur ‘Administration’ im Hauptmenü soll nur für Administratoren angezeigt werden.
- alle Gruppen|Menublock::|Hauptmenü:Administration:|keines
Dabei ist wichtig, dass das Hauptmenü auch tatsächlich ‘Hauptmenü’ heisst und dass diese Zugriffsberechtigung direkt UNTER denen der Admingruppen steht (in der default-Installation ist das eigentlich schon eingetragen - und zwar für das Main Menu) Wenn nun mehrer Links ‘gesperrt’ werden sollen, ist die Angabe wie folgt:
- alle Gruppen|Menublock::|Hauptmenü:(Administration|Link1|Link2):|keines
(das | (Pipe-) Zeichen fungiert als Trenner der einzelnen mit Klammern umschlossenen Einträge) Sehr häufig wird gefragt, wie man anonymen Benutzern die Teilnahme an Umfragen bzw. das Kommentieren von Beiträgen ermöglichen kann:
- unregistrierte Gruppen|Polls::|.*|kommentieren
- unregistrierte Gruppen|Stories::Story|.*|kommentieren
Diese Zeilen müssen natürlich ÜBER die normalerweise letzte Zeile in der die allgemeinen Rechte für anonyme Benutzer auf lesen gesetzt werden.
Achtung! Ein fehlerhaft konfiguriertes Berechtigungssystem kann dazu führen, dass z.B. anonyme Benutzer auf der Site Inhalte aktualisieren, hinzufügen oder sogar löschen können! Wenn man allerdings sorgfältig vorgeht und die bereits bestehenden Berechtigungen (und auch ihre Reihenfolge in der Liste) nicht ändert, sollte das allerdings nicht passieren... Wenn man sich trotz aller Warnungen einmal selber ausgesperrt hat, kann die Zikula Recovery Console die Berechtigungen wieder auf den Standard zurücksetzen.
