J3.x

Tutorial zur Zugriffssteuerungsliste (ACL)

From Joomla! Documentation

This page is a translated version of the page J3.x:Access Control List Tutorial and the translation is 53% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎eesti • ‎français • ‎Bahasa Indonesia • ‎Nederlands • ‎Türkçe
Joomla! 
3.x
Serie

Übersicht zur ACL in Version Joomla 3.x

In diesem Abschnitt werden wichtige ACL-Änderungen (ACL, engl.: Access Control List) zwischen den Versionen 2.5 und der 3.x-Serie (einschließlich zukünftiger Versionen) beschrieben. Die folgende Tabelle fasst die Änderungen gegenüber Version 2.5 zusammen.

Version 2.5 Version 3.9
Gruppen Unbegrenzte benutzerdefinierte Gruppen Wie 2.5
Benutzer & Gruppen Ein Benutzer kann mehreren Gruppen zugewiesen werden Wie 2.5
Zugriffsebenen Unbegrenzte benutzerdefinierte Zugriffsebenen Wie 2.5
Zugriffsebenen & Gruppen Gruppen werden den Zugriffsebenen zugewiesen. Jede beliebige Kombination aus Gruppen kann jeder beliebigen Zugriffsebene zugewiesen werden. Wie 2.5

Separate ACL für Anzeige und Aktionen

Das Joomla ACL-System besteht genau genommen aus zwei völlig getrennten Systemen. Das eine System steuert, was Benutzer auf der Website "sehen" können. Das andere steuert, was Benutzer "tun" können (welche Aktionen ein Benutzer durchführen kann). Die ACL wird für jedes dieser Systeme anders eingerichtet.

Steuern, was Benutzer sehen können

Das Setup zum Steuern, was Benutzer sehen können, sieht wie folgt aus:

  • Eine Reihe von Zugriffsebenen gemäß den Kategorien und/oder der Kombination von Kategorien erstellen, die nur angemeldete Benutzer sehen sollen. Anmerkung: Zu diesem Zeitpunkt werden noch keine Benutzergruppen den neuen Zugriffsebenen zugewiesen.
  • Für jede Zugriffsebene eine Benutzergruppe erstellen, die 'Registriert' als übergeordnete Gruppe hat. Indem man für Benutzergruppen und Zugriffsebenen die gleichen Namen verwendet, kann man Verwirrungen zu einem späteren Zeitpunkt vorbeugen.
  • Die neuen Zugriffsebenen bearbeiten und jeder die (neue) Benutzergruppe zuweisen. Wahrscheinlich möchten man auch die 'Super Benutzer' Gruppe (und/oder die anderen Standard-Benutzergruppen mit Ausnahme der Benutzergruppe 'Gast') den neuen Zugriffsebenen zuweisen.
  • Jedem anzuzeigenden Eintrag eine Zugriffsebene zuweisen. Einträge sind sowohl inhaltliche Einträge (Beiträge, Kontakte, usw.), Menüeinträge als auch Module.

Immer dann, wenn ein Benutzer im Begriff ist, einen Eintrag auf einer Joomla-Seite anzeigen zu lassen, prüft das Programm, ob dieser Benutzer auch Zugriff auf den Eintrag hat. Das geschieht folgendermaßen:

  1. Zunächst wird eine Liste aller Zugriffsebenen erstellt, auf die der Benutzer zugreifen kann, basierend auf allen Gruppen, denen der Benutzer angehört. Sofern eine Gruppe eine übergeordnete Gruppe besitzt, sind die Zugriffsebenen für die übergeordnete Gruppe ebenfalls in der Liste enthalten.
  2. Danach wird überprüft, ob die Zugriffsebene für den Eintrag (Beitrag, Modul, Menüeintrag, usw.) in dieser Liste enthalten ist. Wenn dem so ist, wird der Eintrag dem Benutzer angezeigt. Falls der Benutzer die benötigten Zugriffsrechte besitzt, wird ihm der Zugriff verweigert.

Beachten, dass Zugriffsebenen für jede Gruppe separat festgelegt und nicht von der übergeordneten Gruppe einer Gruppe vererbt werden.

Steuern, was Benutzer tun können

Das System, das steuert, was Benutzer in einer Benutzergruppe tun können - welche Aktionen sie bei einem bestimmten Eintrag ausführen können - wird über den Tab 'Berechtigungen' in der Konfiguration und den Tab 'Berechtigungen' in den Optionen jeder einzelnen Komponente eingerichtet. Berechtigungen können auch auf Kategorienebene (bei Kernkomponenten) und auf Beitragsebene (bei Beiträgen) gesetzt werden.

  • Wenn angemeldete Benutzer in bestimmten Kategorien Erstellen, Löschen, Status bearbeiten oder Eigene Inhalte bearbeiten dürfen, dann:
    • Eine Benutzergruppe erstellen und als übergeordnete Gruppe eine der Benutzergruppen angeben, die Zugriff auf die Kategorie (oder Kategorien) haben, die diese neue Benutzergruppe ändern soll.
    • Der neuen Benutzergruppe den entsprechenden Zugriffsebenen zuweisen. Dann die erforderlichen Berechtigungen für die neue Benutzergruppe entweder global oder pro Kategorie/Beitrag ändern.
      • Beim Erstellen einer Benutzergruppe ist es ratsam, eine übergeordnete Gruppe zu wählen, die über weniger Berechtigungen verfügt, als für die neue Gruppe erforderlich. Denn es ist einfacher, die Berechtigungen für jede Komponente/Kategorie/Beitrag zu erweitern, für die zusätzliche Berechtigungen nötig sind, als Berechtigungen aus den anderen Komponenten/Kategorien/Beiträgen zu entfernen.
        • (Beispiel: Es gibt 10 Kategorien, man möchte aber nur für eine Erstellen-Berechtigungen. Würde man für diese Gruppe die Berechtigungen global auf Erstellen erlaubt setzen, müsste man für diese Kategorien die Erstellen-Berechtigung entfernen. Und man müsste für diese Gruppe die Erstellen-Berechtigung bei jeder neuen Kategorie, die man zu einem späteren Zeitpunkt hinzufügt, ebenfalls entfernen).
    • Eine Benutzergruppe erstellen, die eine der Standardbenutzergruppen als übergeordnete Gruppe hat, NUR, wenn keine von diesen über die exakten Berechtigungen verfügt, die man benötigt und sich für alle Kategorien wünscht.

Beachten, dass dieses Setup unabhängig vom Setup für die Anzeige ist. Allerdings muss eine Benutzergruppe den entsprechenden Zugriffsebenen zugewiesen werden, damit der Benutzer in dieser Gruppe jene Berechtigungen verwenden kann.

Möchte ein Benutzer eine bestimmte Aktion bei einem Komponenten-Eintrag durchführen (z. B. einen Beitrag bearbeiten), überprüft das System (nachdem es überprüft hat, welcher Gruppe der Benutzer angehört und auf welche er Zugriff hat) die Berechtigung für diese Kombination aus Benutzer, Eintrag und Aktion. Liegt eine Erlaubnis vor, kann der Benutzer fortfahren. Andernfalls ist die Aktion nicht zulässig.

Das restliche Tutorial befasst sich mit der Steuerung, was Benutzer tun können - welche Aktionsberechtigungen sie haben.

Aktionen, Gruppen und Vererbung

Andererseits geht es bei der ACL auch darum, Benutzern Berechtigungen zu erteilen, damit diese Aktionen an Objekten durchführen können.

3.x Serie
Gruppen und Aktionen Aktionen, welche pro Gruppe erlaubt sind, werden durch den Website Administrator festgelegt.
Umfang von Berechtigungen Berechtigungen können auf mehreren Ebenen in der Hierarchie festgelegt werden: Website, Komponente, Kategorie, Objekt.
Vererbung von Berechtigungen Berechtigungen können von übergeordneten Gruppen und übergeordneten Kategorien geerbt werden.

Wie die Berechtigungen funktionieren

Es gibt vier mögliche Berechtigungen für Aktionen. Diese sind (kurz skizziert):

  • Nicht gesetzt: Fällt standardmäßig auf "Nicht erlaubt" zurück. Aber im Gegensatz zur Berechtigung "Verweigert" kann diese Berechtigung außer Kraft gesetzt werden, wenn eine untergeordnete Gruppe oder eine in der Berechtigungshierarchie untergeordnete Ebene auf "Erlaubt" gesetzt wird. Diese Berechtigung kann nur für globale Berechtigungen der Konfiguration gesetzt werden.
  • Vererbt: Erbt den Wert von einer übergeordneten Gruppe oder einer in der Berechtigungshierarchie höheren Ebene. Diese Berechtigung gilt für alle Ebenen mit Ausnahme der obersten Ebene der Konfiguration.
  • Verweigert: Verbietet diese Aktion für diese Ebene und Gruppe. WICHTIG: Dadurch wird diese Aktion auch für alle untergeordneten Gruppen und alle untergeordneten Ebenen in der Berechtigungshierarchie verboten. Wird "Erlaubt" in einer untergeordneten Gruppe oder einer tieferen Ebene gesetzt, hat das keinen Effekt. Die Aktion wird immer für alle Mitglieder einer untergeordneten Gruppe und für alle untergeordneten Ebenen in der Berechtigungshierarchie abgelehnt.
  • Erlaubt : Genehmigt diese Aktion für diese Ebene und Gruppe und für tiefere Ebenen und Untergruppen. Dies hat keine Auswirkungen, wenn eine höhere Gruppe oder Ebene auf "Verweigert" oder "Erlaubt" eingestellt ist. Wenn eine höhere Gruppe oder ein höheres Ebene auf "Verweigert" gesetzt ist, wird diese Berechtigung immer abgelehnt. Wenn eine höhere Gruppe oder Ebene auf Erlaubt eingestellt ist, ist diese Berechtigung bereits erlaubt.

Hierarchie der Berechtigungsebenen

Berechtigungen für Aktionen können in Version 2.5+ auf bis zu vier Ebenen festgelegt werden, wie folgt:

  1. Konfiguration: legt die Standardberechtigungen für jede Aktion und Gruppe fest.
  2. Komponenten-Optionen-> Berechtigungen: kann die Standardberechtigungen für diese Komponente überschreiben (z. B. Beiträge, Menüs, Benutzer, Banner usw.).
  3. Kategorie: kann die Standardberechtigungen für Objekte in einer oder mehreren Kategorien überschreiben. Gilt für alle Komponenten mit Kategorien, einschließlich Beiträge, Banner, Kontakte, Newsfeeds und Weblinks.
  4. Beitrag: kann die Berechtigungen für einen bestimmten Artikel überschreiben. Diese Ebene gilt nur für Beiträge. Alle anderen Komponenten erlauben nur die ersten drei Ebenen.

Konfiguration

Diese erreicht man über System → Konfiguration → Berechtigungen. Die nun sichtbare Maske dient dazu, die Berechtigungen auf der obersten Ebene für jede Gruppe und jede Aktion festzulegen, wie auch in der folgenden Abbildung gezeigt.

File:Screenshot global acl J3 tutorial-de.png

Die möglichen Werte sind Vererbt, Erlaubt oder Verweigert. Die Spalte 'Errechnete Einstellung' zeigt die aktuelle Einstellung an. Diese ist entweder Nicht erlaubt (Standard), Erlaubt oder Nicht erlaubt.

Man kann immer nur an einer Gruppe gleichzeitig arbeiten, indem man den Reiter für ebendiese Gruppe anklickt. Die Berechtigungen kann man über die Dropdownlisten unter Neue Einstellung wählen ändern.

Beachten Sie, dass die Spalte "Errechnete Einstellung" erst aktualisiert wird, wenn Sie auf die Schaltfläche "Speichern" in der Werkzeugleiste klicken.

Um zu überprüfen, ob die Einstellungen Ihren Wünschen entsprechen, klicken Sie auf die Schaltfläche Speichern und überprüfen anschließend die Spalte Errechnete Einstellung.

Komponenten-Optionen->Berechtigungen

Auf diese wird für jede Komponente durch Klicken auf das Symbol "Optionen" in der Werkzeugleiste zugegriffen. Dieser Bildschirm ist ähnlich wie der Bildschirm "Globale Konfiguration" oben links. Wenn Sie beispielsweise im Menü-Manager auf das Symbol in der Werkzeugleiste Optionen klicken, werden die folgenden Menüs angezeigt. File:Screenshot menu acl J3 tutorial-de.jpg

Der Zugriff auf Optionen ist nur für Mitglieder von Gruppen möglich, die die Berechtigung für die Aktion Konfiguration in für jede Komponente haben. Im obigen Beispiel hat die Gruppe Administrator die Berechtigung Erlaubt für die Option Konfigurieren, so dass Mitglieder dieser Gruppe auf diesen Bildschirm zugreifen können.

Kategorie

Auf die Kategorieberechtigungen wird im Category Manager zugegriffen: Bildschirm Kategorie bearbeiten, in einer Registerkarte oben auf dem Bildschirm. Dieser Bildschirm hat fünf Berechtigungen, wie folgt:

File:Screenshot category acl j3 tutorial-de.png

In diesen Bildern bearbeiten Sie die Berechtigungen für jeweils eine Benutzergruppe. Im obigen Beispiel bearbeiten Sie die Berechtigungen für die Gruppe Administrator.

Achten Sie darauf, dass die Aktionen "Konfigurieren und Zugriffssteuerung" nicht auf der Kategorieebene angewendet werden, so dass diese Aktionen nicht enthalten sind.

Beachten Sie auch, dass Kategorien in einer Hierarchie angeordnet werden können. Wenn ja, dann werden Aktionsberechtigungen in einer übergeordneten Kategorie automatisch an eine untergeordnete Kategorie vererbt. Wenn Sie beispielsweise eine Kategoriehierarchie von Tieren → Haustiere → Hunde hätten, dann würde die vollständige Berechtigungshierarchie für einen Artikel in der Kategorie Hunde wie folgt aussehen:

  • Globale Konfiguration
  • Artikel-Manager → Optionen → Genehmigung → Erlaubnis
  • Tierkategorie
  • Kategorie Haustiere
  • Kategorie Hunde
  • spezifischer Artikel

Beitrag

Berechtigungen für einzelne Beiträge findet man im "Beitrag" unter dem Tab-Reiter "Berechigungen". Dieser Bildschirm hat drei Aktionen, wie unten gezeigt.

File:J3x acl tutorial article manager article permissions-de.png

Auch hier bearbeiten Sie jede Gruppe für sich. Um auf die Berechtigungen zuzugreifen wechseln Sie im Artikel auf den Reiter "Berechtigungen" im oberen Reiter. Über das Drop Down Menü wählen Sie die neue Berechtigung im Anschluss speichern Sie den Beitrag ab.

Beachten Sie, dass die Aktionen Configure, Access Component und Create auf Artikelebene nicht gelten, so dass diese Aktionen nicht berücksichtigt werden. Die Berechtigung zum Anlegen eines Artikels wird auf einer der höheren Ebenen der Hierarchie festgelegt.

Zugriffsebenen

Die Zugriffsebenen der 3.x-Serie sind einfach und flexibel. Der folgende Bildschirm zeigt die spezielle Zugriffsebene.

Aktivieren Sie einfach das Kontrollkästchen für jede Gruppe, die Sie in diesem Level aufnehmen wollen. Die spezielle Zugriffsebene umfasst die Gruppen Manager, Autor und Superuser. Es beinhaltet auch untergeordnete Gruppen dieser Gruppen. Die Gruppe Administrator ist also enthalten, da es sich um eine Untergruppe der Gruppe Manager handelt. Die Gruppen Editor, Publisher und Shop Suppliers sind enthalten, da es sich um Untergruppen des Autors handelt.

Jedem Objekt im Frontend ist eine Zugriffsebene zugeordnet. Wenn die Ebene öffentlich ist, kann jeder auf dieses Objekt zugreifen. Andernfalls dürfen nur Mitglieder von Gruppen, die dieser Zugriffsebene zugeordnet sind, auf dieses Objekt zugreifen.

Die Zugriffsebenen sind den Menüpunkten und den Modulen zugeordnet. Jede kann nur einer Zugriffsebene zugeordnet werden.

Der folgende Bildschirm zeigt beispielsweise den Bildschirm Menüpunkt bearbeiten mit der Liste der verfügbaren Zugriffsebenen....

Standard-ACL-Setup

Wenn Joomla! installiert ist, werden diese auf die ursprünglichen Standardwerte gesetzt. Wir werden diese Grundeinstellungen besprechen, um die Arbeitsweise der ACL zu verstehen.

Standardgruppen

Mit der Version 3.x können Sie Ihre individuellen Gruppen definieren. Wenn Sie die Version 3.x installieren, enthält sie eine Reihe von Standardgruppen, die im Folgenden dargestellt werden, sind die grundlegenden Standardbenutzergruppen. (Zusätzliche Standardbenutzergruppen werden mit Beispieldaten installiert)

Die Pfeile zeigen die untergeordneten Elternbeziehungen an. Wie vorstehend besprochen, wird diese Berechtigung, wenn Sie eine Berechtigung für eine übergeordnete Gruppe festlegen, automatisch an alle Untergruppen vererbt. Die vererbten und zulässigen Berechtigungen können für eine Untergruppe überschrieben werden. Die Berechtigung Verweigert kann nicht überschrieben werden und verweigert immer eine Aktion für alle Untergruppen.

Konfiguration

Joomla! Version 3.x wird mit den gleichen bekannten Backend-Rechten wie die Version 1.5 (EOL) installiert. Mit der Version 3.x können Sie diese jedoch leicht an die Bedürfnisse Ihrer Website anpassen.

Wie bereits besprochen, werden die Berechtigungen für jede Aktion von der obigen Ebene in der Berechtigungshierarchie und von der übergeordneten Gruppe einer Gruppe übernommen. Also, wie funktioniert das? Die oberste Ebene dafür ist der gesamte Standort. Dies wird in der Site->Globale Konfiguration->Berechtigungen eingerichtet, wie unten gezeigt.

File:Screenshot global acl J3 tutorial-de.png

Das erste, was man bemerken sollte, sind die zehn Aktionen: Standortlogin, Admin-Login, Offline-Zugriff, Superuser, Access Administration Interface, Erstellen, Löschen, Bearbeiten, Status bearbeiten und Eigenes bearbeiten. Dies sind die Aktionen, die ein Benutzer an einem Objekt in Joomla durchführen kann. Die spezifische Bedeutung jeder Aktion hängt vom Kontext ab. Für das Bild Globale Konfiguration sind sie wie folgt definiert:

Site Login : Login to the front end of the site

Admin Login 
Melden Sie sich am Backend der Website an.

Offline-Zugriff: Melden Sie sich am Frontend der Website an, wenn die Website offline ist (wenn die globale Konfigurationseinstellung "Site Offline" auf Ja gesetzt ist).

Superuser: Gewährt dem Benutzer den Status "Superuser". Benutzer mit dieser Berechtigung dürfen alles auf der Website machen. Nur Benutzer mit dieser Berechtigung können die Einstellungen der globalen Konfiguration ändern. Diese Berechtigungen können nicht eingeschränkt werden. Es ist wichtig zu verstehen, dass, wenn ein Benutzer Mitglied einer Super Admin-Gruppe ist, alle anderen Berechtigungen, die diesem Benutzer zugewiesen sind, irrelevant sind. Der Benutzer kann jede Aktion auf der Website durchführen. Es können jedoch weiterhin Zugriffsebenen zugewiesen werden, um zu steuern, was diese Gruppe auf der Website sieht. (Natürlich kann ein Super-Admin-Benutzer die Zugriffsebenen ändern, wenn er möchte, so dass die Zugriffsebenen nicht vollständig einschränken, was ein Super-Admin-Benutzer sehen kann.)

Zugangskomponente: Öffnen Sie die Bildschirme der Komponentenverwaltung (Benutzerverwaltung, Menüverwaltung, Artikelverwaltung usw.).

Create 
Create new objects (for example, users, menu items, articles, weblinks, and so on)
Löschen 
Löschen eines existienden Objekts
Ändern 
Ändern eines existierenden Objektes
Ändern eines Objekt Status (Veröffentlicht, nicht Veröffentlicht, Archiviert und Gelöscht)

Eigene Objekte bearbeiten: Bearbeiten Sie Objekte, die Sie erstellt haben.

Each Group for the site has its own slider which is opened by clicking on the group name. In this case (with the sample data installed), we have the standard 7 groups that we had in version 1.5 plus two additional groups called "Shop Suppliers" and "Customer Group". Notice that our groups are set up with the same permissions as they had in version 1.5. Keep in mind that we can change any of these permissions to make the security work the way we want. Let's go through this to see how it works.

  • Public has everything set to "Not set", as shown below.
    File:Screenshot global acl public J3 tutorial-de.png
    • This can be a bit confusing. Basically, "Not Set" is the same as "Inherited". Because Public is our top-level group, and because Global Configuration is the top level of the component hierarchy, there is nothing to inherit from. So "Not Set" is used instead of "Inherit".
    • The default in this case is for no permissions. So, as you would expect, the Public group has no special permissions. Also, it is important to note that, since nothing is set to Denied, all of these permissions may be overridden by child groups or by lower levels in the permission hierarchy.
  • Guest is a 'child' group of the Public group has everything set to 'Inherited'
    File:Screenshot global acl guest J3 tutorial-de.png
    • This is the default 'Guest User Group' in the User Manager options and the Group that (non logged in) visitors to your site are placed in.
  • Manager is a "child" group of the Public group. It has Allowed permissions for everything except Access Component and Super Admin. So a member of this group can do everything in the front and back end of the site except change Global Permissions and Component Options.
    File:Screenshot global acl manager J3 tutorial-de.png
  • Registered is the same a Public except for the Allow permission for the Site Login action. This means that members of the Registered group can login to the site. Since default permissions are inherited, this means that, unless a child group overrides this permission, all child groups of the Registered group will be able to login as well.
    File:Screenshot global acl registered J3 tutorial-de.png
  • Author is a child of the Registered group and inherits its permissions and also adds Create and Edit Own. Since Author, Editor, and Publisher have no back-end permissions, we will discuss them below, when we discuss front-end permissions.
    File:Screenshot global acl author J3 tutorial-de.png
  • Shop Suppliers is an example group that is installed if you install the sample data. It is a child group of Author.
  • Customer Group is an example group that is installed if you install the sample data. It is a child group of Registered.
  • Super Users group has the Allow permission for the Super Admin action. Because of this, members of this group have super user permissions throughout the site. They are the only users who can access and edit values on the Global Configuration screen. Users with permission for the Super Admin action have some special characteristics:
  • If a user has Super Admin permissions, no other permissions for this user matter. The user can perform any action on the site.
  • Only Super Admin users can create, edit, or delete other Super Admin users or groups.

There are two very important points to understand from this screen. The first is to see how the permissions can be inherited from the parent Group. The second is to see how you can control the default permissions by Group and by Action.

This provides a lot of flexibility. For example, if you wanted Shop Suppliers to be able to have the ability to login to the back end, you could just change their Admin Login value to "Allowed". If you wanted to not allow members of Administrator group to delete objects or change their state, you would change their permissions in these columns to Inherited (or Denied).

It is also important to understand that the ability to have child groups is completely optional. It allows you to save some time when setting up new groups. However, if you like, you can set up all groups to have Public as the parent and not inherit any permissions from a parent group.

Komponenten-Optionen & Berechtigungen

Now, let's continue to see how the default back-end permissions for version 2.5 mimic the permissions for version 1.5. The Super Users group in 2.5 is equivalent to the Super Administrator group in 1.5.

Just looking at the Global Configuration screen above, it would appear that the Administrator group and the Manager group have identical permissions. However, in version 1.5 Administrators can do everything except Global Configuration, whereas Managers are not permitted to add users or work with menu items. That is also true in the default version 2.5 configuration. Let's see how this is accomplished.

If we navigate to Users->User Manager and click the Options button in the toolbar, we see the screen below:

This screen is the same as the Global Configuration Permissions screen, except that these values only affect working with Users. Let's look at how this works.

First, notice that the Administrator group has Allow permission for the Admin action and the Manager group has Deny permission for this action. Remember that the Admin action in the Global Configuration screen gives the group "super user" permissions. In this screen, the Admin action allows you to edit the Options values. So, the Administrator group can do this but the Manager group cannot.

Next, notice that the Administrator has Inherit for the Manage action and the Manager group has Deny permission. In this screen, the Manage action gives a group access to the User Manager. Since the Administrator has Allow for the Manage action by default, then the Inherit permission here means they inherit the Allow permission for the Manage action. Since the Manager group has Deny permission for the Manage action, members of the Manager group cannot access the User Manager and therefore cannot do any of the other user-related actions.

If you look at the Options for Menus->Menu Manager, you will see the same default settings as for the User Manager. Again, the Administrator group can manage and set default permissions for Menu Manager objects whereas the Manager group cannot.

In short, we can see that the different permissions for the Administrator and Manager groups are set using the Options->Permissions forms on the User Manager and Menu Manager screens.

It is also important to understand that this same Options->Permissions form for setting default permissions is available for all Joomla! objects, including Media Manager, Banners, Contacts, Newsfeeds, Redirect, Search Statistics, Web Links, Extensions, Modules, Plugins, Templates, and Language. So you now have the option to create user groups with fine-tuned sets of back-end permissions.

Frontend Berechtigungen

Default permissions for the front end are also set using the Options form. Let's look at Content->Article Manager->Options->Permissions. First, let's look at the permissions for Manager, as shown below.

Manager has allowed permission for all actions except Configure. So members of the Manager group can do everything with Articles except open the Options screen.

Now let's look at Administrator, as shown below.

Administrator has Allowed for Configure, so Administrators can edit this Options screen.

Both groups can create, delete, edit, and change the state of articles.

Now, let's look at the groups Publisher, Editor, and Author and see how their permissions are set.

Authors only have Create and Edit Own permissions, as shown below.

This means that Authors can create articles and can edit articles they have created. They may not delete articles, change the published state of articles, or edit articles created by others.

Editors have the same permissions as Authors with the addition of permission for the Edit action, as shown below.

So Editors can edit articles written by anyone.

Publishers can do everything Editors can do plus they have permission for the Edit State action, as shown below.

So Publishers can change the published state of an article. The possible states include Published, Unpublished, Archived, and Trashed.

All of these groups have Inherit permission for Configure and Access Component. Remember that Author is a child of the Registered group, and Registered does not have any default permissions except for Login. Since Registered does not have permission for Configure and Access Component, and since Author's permission for these actions is "Inherited", then Author does not have these permissions either. This same permission is passed from Author to Editor and from Editor to Publisher. So, by default, none of these groups are allowed to work with articles in the back end.

It is important to remember that these permissions are only default settings for categories and articles and for any child groups that are created. So they can be overridden for child groups, for categories, and for specific articles.

Also, note that there are no Denied permissions for any actions in the default settings. This allows you to add Allowed permissions at any level. Remember, once you have an action set for Denied, this action will be denied at all lower levels in the hierarchy. For example, if you set the Admin Login for Registered to Denied (instead of Inherited), you could not grant Publishers Allowed permissions for this action.

Beitrags-Manager & Aktions-Diagramm

The diagram below shows how each action in the permissions form relates to the various options on the Article Manager screen.

  • Configure allows you to view and change the Options for the component.
  • Access Component allows you to navigate to the Article Manager. Without this permission, no other actions are possible.
  • Create allows you to add new articles.
  • Delete allows you to delete trashed articles. Note that the Delete icon only shows in the toolbar when you have the "Select State" filter set to "Trash".
  • Edit allows you to edit existing articles.
  • Edit State allows to you Publish, Unpublish, Archive, or Trash articles.
  • Edit Own is the same as Edit except that it only applies to articles written by you.

Allowing Guest-Only Access to Menu Items and Modules

Version 1.6 introduced the ability to create a View Access Level that is only for guests of the site (meaning a user who is not logged in). The example below shows how you can set up this new feature. (N.B. Steps 1 to 3 are not needed for Joomla! 3.x as they exist in the default install)

  1. Create a new user group called Guest. Make it a child of the Public group as shown below.
  2. Create a new access level called Guest and grant only the Guest group access to this level, as shown below.
  3. Navigate to User Manager→Options→Component and change the Guest User Group from the default value of "Public" to "Guest", as shown below.

Now, if we assign a menu item, module, or other object to the Guest access level, only non-logged in users will have access. For example, if we create a new menu item with access level of Guest, as shown below,

this menu item will only be visible to non-logged-in visitors to the site.

If required other user groups like Author can be granted access in the Guest access level, this would allow Authors to view articles in the front end for editing.

N.B. Login/logout in front end (for changing data in session) to see the change.

Berechtigungen und Gruppenebenen gemeinsam nutzen

As discussed above, it is possible to define groups in a hierarchy, where each child group inherits action permissions (for example, the create permission) from its parent group. Action permissions are also be inherited from the permission level above. For example, a permission in the Article Manager is inherited from the same permission in the Global Configuration, and a permission in a child Category is inherited from the parent Category permission.

This dual inheritance can be confusing, but it can also be useful. Let's consider an example as follows. We have a school with a group hierarchy of Teachers → History Teachers → Assistant History Teachers. We also have a category hierarchy of Assignments → History Assignments. We want History Teachers and Assistant History Teachers to have the following permissions:

  • both groups can create new articles only in the History Assignments category.
  • only History Teachers (not Assistant History Teachers) can Publish or otherwise have Edit State permission.

This ACL scheme is very easy to implement. The diagram below shows how this would be set up for the Create Action.

In the diagram, the Permission Hierarchy is shown down the left side and the Group hierarchy is shown across the top. Permissions are inherited down and to the right, as shown by the arrows. To implement the desired permissions, we leave the Global Configuration blank (Not Set) for all three groups. Similarly, in the Article Manager and Assignments Category, we leave the Create permission to Inherit for all the groups. As shown in the diagram, this means that these groups do not have Create permission for articles in general or for articles in the Assignments group.

To sum up so far, we have not set any special permissions to get to this point. Now, in the History Assignments category permissions screen, we set the Create permission to Allow for the History Teachers group. This setting overrides the Soft (Implicit) Deny that we had by default and gives members of this group permission to create content (articles and child categories) for this category. This Allow setting also is inherited by the Assistant History Teachers group.

Next, we need to grant History Teachers the Edit State permission while denying this permission to Assistant History Teachers. This is done as shown in the diagram below.

This configuration is the same as the one above except that this time we set the Edit State permission in the History Assignments category to Deny for the Assistant History Teachers group. This means that Assistant History Teachers will not be able to Publish or Unpublish articles in this category.

Note that this was accomplished by setting just two permissions in the History Assignments category: Allow for the History Teachers group and Deny for the Assistant History Teachers group.

ACL Aktion Berechtigungs-Beispiele

Backend Beitrag Administrator

Problem:

We want to create a group called "Article Administrator" with back-end permissions only for articles and not for any other back-end menu options. Members of this group should be able to use all of the features of the article manager, including setting article permissions.

Lösung:

  1. Create a new group called Article Administrator and make its parent group Public, as shown below. Because its parent group is Public, it won't have any permissions by default.
  2. In Users → Access Levels, edit the Special Access level to add the new group. That way they can get access to the back end menu items and modules (This assumes that the modules for the admin menu and quickicons have the Special Access level assigned to them, which is the default.) By default, the back-end menu items and modules are set to Special access, so if you forget to add the new group to the Special access level, you won't see any modules or menu items when you log in as a user of the new group.
  3. In Site → Global Configuration → Permissions, click on the Article Administrator group and change the permissions to Allowed for the following actions: Admin Login, Create, Delete, Edit, Edit State, and Edit Own. The screen below shows what will show before you press Save. After you save, the Calculated Permissions should show as shown below. Note that the permission for the Access Component is Inherited, which translates to Not Allowed. This is important. This means that this group will only be able to access components if we give the group "Allowed" permission for Access Component. So we only have to change the one component we want to give them access to and don't have to change any settings for the components where we don't want them to have access. If we had a case where we wanted to give a group access to everything except for one component, we could set the default to Allowed and then set the one component to Denied. Also note that we did not give the group Site Login permission, so users in this group will not be able to log into the front end. (If we wanted to allow that, we would just change the permission to Allowed for Site Login.)
  4. In Article Manager → Options → Permissions, change permissions to Allowed for this group for the Access Component action, as shown below. All of the other desired permissions are inherited.

That's all you need to do. Members of this group can login to the back end and do everything in Article Manager but can't do anything else in the back end. For example, the screen below shows what a user in the Article Manager will see when they login to the back end.

ACL Ansicht Zugriffsebenen-Beispiele

A basic concept of using Access Levels is that all items with the same Access will be viewable by the same group of users. In other words, if two items have the same Access, you can't have one viewable by one user and not viewable by another user. On the other hand, it is easy to have one Group view any number of items with different Access levels.

Similarly, each Group has exactly the same combination of Access levels, but one User can be a member of more than one group. Depending on the situation, you may want to have users only in one Group or you may need to have a User in more than one Group.

This means that we may need to group our items so that items so that all items in a group have the same level of sensitivity. Here are some examples.

Hierarchisches Beispiel

In this example, Access levels are hierarchical, for example, like government security clearance codes. Say for example we have the following sets of classified documents: Classified, Secret, and Top Secret. Users have corresponding clearence codes. Users with Classified clearance can only see Classified documents and cannot see Secret or Top Secret. Users with Secret clearance can see Classified and Secret documents but not Top Secret. Users with Top Secret can see all documents.

In this case, you would create three Access levels: Classified, Secret, and Top Secret and the same three Groups. Users would only be members of one group, as follows:

Benutzer Gruppe Zugriffsebenen
C1, C2, C3 Classified Classified
S1, S2, S3 Secret Classified, Secret
TS1, TS2, TS3 Top Secret Classified, Secret, Top Secret

In this case, all users are in exactly one group, but some groups have access to more than one Access Level of items. In other words, we have a one-to-one relationship between users and groups, but a one-to-many relationship between Groups and Access Levels.

Teamsicherheit Beispiel

Another possible use case is a set of non-hierarchical teams. Let's say we have three teams, T1, T2, and T3. Some users are only on one team, but others might be on two or more teams. In this case, we could set up our Access Levels and Groups by team. Documents for each team have the access level for that team, and the Group for the team has only the one access level. When a User is on more than one team, they get added to the group for each team, as follows:

Benutzer Beschreibung Gruppe Zugriffsebenen
U1 Team 1 Mitglied T1 T1
U2 Team 2 Mitglied T2 T2
U3 Team 3 Mitglied T3 T3
U1-2 Mitglied aus Team 1 und 2 T1, T2 T1, T2
U1-3 Mitglied aus Team 1 und 3 T1, T3 T1, T3
U1-2-3 Mitglied aus Team 1, 2 und 3 T1,T2, T3 T1, T2, T3


Hybrid Example

In a real-world situation, you might have a combination of these two arrangements. Say for example we have Managers and Staff. Staff can only see Staff documents and Managers can see Manager and Staff documents. Both types of users can be assigned to teams as well, in which case they can see all of the documents for that team. In addition, say that Managers can access some, but not all, team documents. Staff can only access team documents if they are members of that team.

In this example, we could set up the following Access Levels:

Access Level Description Groups
Manager Non-team manager documents Manager
Staff Non-team staff documents Manager, Staff
Team1 Sensitive Team1 documents (no access outside team) Team1
Team1-Manager Team1 documents that can be accessed by all managers Team1, Manager
Team2 Sensitive Team2 documents (no access outside team) Team2
Team2-Manager Team2 documents that can be accessed by all managers Team2, Manager

Then, users could be assigned to groups as follows:

User Type Group
Manager on no teams Manager
Staff on no teams Staff
Manager on team 1 Manager, Team1
Staff on team 1 Staff, Team1
Manager on teams 1 and 2 Manager, Team1, Team2
Staff on teams 1 and 2 Staff, Team1, Team2