Grundlagen Joomla! Rechte-System

Schon seit der Version 1.6 ist Joomla! mit einem ausgeklügelten Rechtesytem ausgerüstet.

Grundlagen der Joomla! ACL (Aka ACL)

Wer von der IT her kommt begreift recht schnell wie das alles funktioniert, wer sich jedoch mehr hobbymässig mit dem CMS beschäftigt, sieht sich einem Wald von schwer verständlichen Begriffen ausgesetzt und steht verblüfft da. Im Folgenden werde ich versuchen, die Grundlagen dieser sogenannten Access Control List zu erklären und etwas Licht ins Dunkel zu bringen.

WARNUNG
Wer ohne näheres Verständnis und ohne aktuellen Backup an der ACL von Joomla! herumbastelt, sperrt sich sehr leicht selbst aus. Eine solcherart verbastelte Joomla! Installation kann nur sehr schwer oder gar nicht repariert werden!

ACL - so funktioniert das in Joomla!Die Joomla! ACL kennt 4 Aspekte. Dies sind:

  • Die Benutzer
  • Die Berechtigungen des Joomla! Cores
  • Die Gruppen
  • Die Zugriffsebenen

Die Grafik soll die Zusammenhänge verdeutlichen. Im folgenden wird jeder dieser Aspekte erklärt.

Benutzer

Am einfachsten dürfte der Benutzer zu erklären sein. Sowohl der Super User, als auch der Autor, Editor, registrierte User ist ein Benutzer. Im Grunde genommen braucht der Benutzer nicht einmal einen Account: Auch ein Besucher ist ein Benutzer. Benutzer werden zwingend einer oder mehrerer Gruppen zugeordnet. Berechtigungen können nicht direkt an Benutzer vergeben werden, sondern nur an Gruppen.

Berechtigungen

Es wurde schon erwähnt: Berechtigungen (genauer gesagt Kern-Berechtigungen) werden ausschliesslich an Gruppen erteilt, nicht an individuelle Benutzer. Zu diesen Berechtigungen gehören:

  • Login ins Frontend
  • Login ins Backend
  • Zugriff wenn die Seite Offline ist
  • Zugriff auf Komponente und Menüs im Backend
  • Super User Zugriff auf Konfiguration im Backend
  • Erstellen neuer Inhalte
  • Löschen von Inhalten
  • Status von Inhalten bearbeiten
  • Bearbeiten von eigenen Inhalten

usw. Die Berechtigungen werden unter Konfiguration => Berechtigungen gesetzt und editiert.

Core Berechtigungen Publisher

 


In diesem Bild werden die Berechtigungen für einen Publisher angezeigt. Mit Ausnahme von Public hat man bei sämtlichen Rechten drei Möglichkeiten: Vererbt (Recht wird von der übergeordneten Gruppe geerbt, in diesem Beispiel Editor, welche wiederum die Rechte vom übergeordneten Author bezieht), Erlaubt (für diese Gruppe explizit erlaubt) und Verweigert (für diese Gruppe expizit verboten). Die Rechte werden an eventuelle Untergruppen weitervererbt, sofern dort nicht explizit etwas anderes angegeben wird.

Globale Berechtigungen

Wird eine Berechtigung an dieser Stelle (global) gesetzt, gilt sie für die gesamte Webseite. Der Gruppe 'Author' wird beispielsweise an dieser Stelle das Recht erteilt, neue Inhalte zu erstellen. Dies gilt nicht nur für Beiträge in sämtlichen Kategorien, sondern auch für andere Inhalte, wie z.B. Weblinks. Es ist also durchaus eine Überlegung wert, an welcher Stelle Berechtigungen vergeben werden. Möchte man beispielsweise, dass ein Autor nur Artikel schreiben darf, und das auch nur in einer bestimmten Kategorie, dürfen die  Berechtigungen nicht global, sondern punktuell erteilt werden. Dies sprengt den Scope dieses Artikels. In einem weiteren Artikel beschreibe ich, wie man ein Berechtigungssystem aufbaut, und was dabei zu beachten ist. Im JCM sind im Übrigen in der Vergangenheit 2 Artikel von Randy Carey erschienen, die die Thematik weiter vertiefen. Der erste Teil lässt sich hier nachlesen, der zweite Teil steht hier.
Ebenfalls Vorsicht sollte man walten lassen, wenn man einfach alle Berechtigungen, die man für unnötig hält auf Verweigert setzt. Verweigert vererbt sich nach unten und kann in unteren Gruppen nicht mehr auf Erlaubt gesetzt werden, die Rechte einer übergeordnete Gruppenberechtigung lassen sich nicht überschreiben. Die Spalte Errechnete Einstellungen zeigt dies.

Gruppen

Genauer gesagt: Benutzergruppen. Gruppen sind dazu gedacht, Benutzer mit identischen Berechtigungen als Einheit zusammenzufassen. Die 'Publisher' Gruppe hat das Recht, sich ins Frontend einzuloggen, Inhalte zu erstellen und zu bearbeiten und Statusänderungen vorzunehmen. Jedes Mitglied dieser Gruppe hat dieselben Berechtigungen. Joomla! kommt fixfertig konfiguriert mit folgenden Gruppen aus der Schachtel (Die Striche stehen für Untergruppen)l:

  • Public: Diese Gruppe hat einzig die Berechtigung, Inhalte im Frontend anzusehen. Sie bildet aber die Wurzel aller Gruppen, und kann daher - als einzige - nicht gelöscht werden.
  • - Guest: Untergruppe von Public und erbt sämtliche Rechte von dieser. 
  • - Manager: Untergruppe von Public und darf sich ins Front- und Backend anmelden. Erstellen, löschen,  bearbeiten, Status bearbeiten, eigene Inhalte bearbeiten sind ebenfalls erlaubt.
  • -- Administrator: Untergruppe von Manager und erbt deren Rechte. Zusätzlich erlaubt wird aber der Administratorenzugriff.
  • - Registered: Untergruppe von Public. Einziges recht: Anmelden im Frontend der Seite.
  • -- Author: Untergruppe von Registered. Erbt die Berechtigung der übergeordneten Gruppe und darf zusätzlich Inhalte erstellen und eigene Inhalte bearbeiten.
  • --- Editor: Untergruppe von Author. Erbt Berechtigungen von Author, darf zusätzlich alle Inhalte bearbeiten.
  • ---- Publisher: Untergruppe von Editor. Erbt dessen Rechte, darf aber zusätzlich Status bearbeiten (= Veröffentlichen)
  • - Super Users: Eigentlich Untergruppe von Public, darf aber implizit alles

Gruppen können zusätzlich erstellt oder gelöscht (Ausnahme: Public) werden. Ohne gründliche Planung und Verständnis sollte man aber Vorsicht walten lassen.

Zugriffsebenen

Zugriffsebenen bestimmen, wer was zu Gesicht bekommt auf der Seite. Schon Joomla! 1.5 kannte drei Zugriffsebenen: Public, Registered und Special. In Joomla! 3 sind zwei zusätzlich hinzugekommen. Zugriffsebenen enthalten ausschliesslich Gruppen wie folgt:

  • Public: Gruppe Public
  • Guest: Gruppe Guest
  • Registered: Gruppen Manager, Registered, Super Users
  • Special: Gruppen Manager, Author, Super Users
  • Super Users: Gruppe Super Users

Zugriffsebenen dürfen editiert oder gelöscht werden, zusätzliche Ebenen können nach Geschmack und Bedarf erstellt werden. Zu beachten ist, dass Zugriffsebenen keine Vererbung kennen, weder bezüglich Berechtigungen noch bezüglich Gruppen. Jede steht für sich isoliert da.

Schlussbemerkung

Dieser Artikel basiert in Teilen auf diesem Artikel im JCM Januar 2012, welcher von Jen Kramer geschrieben wurde. Er wurde von Chris Hoefliger übersetzt, überarbeitet, ergänzt und an Joomla! 3.x angepasst. Jen hat freundlicherweise erlaubt, diesen Artikel hier und in dieser Form zu publizieren.