MediaWiki/Extension/Lockdown: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(65 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' kurze Beschreibung
'''Lockdown'''-Erweiterung für [[Mediawiki]] - Zugriff beschränken


= Beschreibung =
== Beschreibung ==
The Lockdown extension implements a way to restrict access to specific namespaces and special pages to a given set of user groups. This provides a more finely grained security model than the one provided by the default [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgGroupPermissions $wgGroupPermissions] and [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgNamespaceProtection $wgNamespaceProtection] settings.
Feineres Sicherheitsmodell im Vergleich zu den Standardeinstellungen
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgGroupPermissions $wgGroupPermissions]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgNamespaceProtection $wgNamespaceProtection]


= Installation =
== Installation ==
= Syntax =
=== Download ===
== Parameter ==
https://www.mediawiki.org/wiki/Special:ExtensionDistributor/Lockdown
== Optionen ==
= Konfiguration =
== Dateien ==


= Anwendungen =
=== Entpacken ===
= Sicherheit =
$ '''tar -xzf Lockdown-*.tar.gz -C mediawiki/extensions/'''
= Dokumentation =
== RFC ==
== Man-Pages ==
== Info-Pages ==
== Projekt-Homepage ==


= Links =
=== Aktivieren ===
== Siehe auch ==
[[Wiki:Verwaltung:LocalSettings.php|LocalSettings.php]]
* [https://www.mediawiki.org/wiki/Category:User_rights_extensions Kategorie:Erweiterungen für Benutzerrechte ]
wfLoadExtension ( 'Lockdown' );
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:GroupManager GroupManager ](BlueSpice) - zum Hinzufügen, Bearbeiten und Löschen von Benutzergruppen
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:PermissionManager PermissionManager ](BlueSpice) - zur Verwaltung von Benutzerrechten auf Benutzergruppen
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UserProtect UserProtect ]– Ermöglicht pro Benutzer pro Recht pro Seite Schutz
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:AccessControl AccessControl ]- Ermöglicht das Einschränken des Zugriffs auf bestimmte Seiten und Dateien
* [https://www.mediawiki.org/wiki/Extension:CategoryLockdown CategoryLockdown ]– Ermöglicht das Einschränken des Zugriffs nach Kategorie und Gruppe
== Weblinks ==
== Einzelnachweise ==
<references />


= Testfragen =
=== Prüfen ===
<div class="toccolours mw-collapsible mw-collapsed">
Prüfen, ob die Erweiterung erfolgreich installiert wurde siehe [[Spezial:Version]]
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


= TMP =
== Konfiguration ==
The following pages about the security model used by MediaWiki per default may be helpful to understand the instructions below: * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights Manual:User rights]
''Lockdown'' kann Zugriffe einschränken, aber nicht erweitern
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgGroupPermissions Manual:$wgGroupPermissions]
* Wurde der Zugriff durch eine MediaWiki-Einstellung verweigert, kann er nicht durch ''Lockdown'' zugelassen werden
 
=== $wgSpecialPageLockdown ===
Für spezielle Seite festlegen, welche Benutzergruppen Zugriff darauf haben.


== Installation  ==
Um beispielsweise die Verwendung von Special:Export auf angemeldete Benutzer zu beschränken, verwenden Sie this in <tt>LocalSettings.php</tt>:
* [https://www.mediawiki.org/wiki/Special:ExtensionDistributor/Lockdown herunter ]Sie die Datei(en) <tt>Lockdown</tt>in deiner <tt>extensions/</tt>Mappe.
$wgSpecialPageLockdown [ 'Exportieren' ] <nowiki>= </nowiki> [ 'Benutzer' ];
* Fügen Sie den folgenden Code am Ende Ihrer [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:LocalSettings.php LocalSettings.php hinzu ]: <br/>wfLoadExtension (  'Lockdown' );
* [https://www.mediawiki.org/wiki/Extension:Lockdown#Configuration Konfigurieren Sie nach Bedarf ]
* [[Image:Bild1.png|top|alt="Jawohl"]]&nbsp;Fertig – Navigieren Sie in Ihrem Wiki zu [https://www.mediawiki.org/wiki/Special:Version Special:Version ], um zu überprüfen, ob die Erweiterung erfolgreich installiert wurde.


Aufgrund von [https://phabricator.wikimedia.org/T148582 Problemen ](siehe auch [https://www.mediawiki.org/wiki/Topic:Tcspqvnlstfztqw2 dieses Thema ]) scheint diese Erweiterung mit MediaWiki 1.27.x bis 1.30.x nicht wie erwartet zu funktionieren. Diese Probleme wurden jedoch für MediaWiki 1.31 und höher behoben!
Beachten Sie, dass einige spezielle Seiten "nativ" eine bestimmte Berechtigung erfordern.
* Zum Beispiel erfordert Special:MovePage, das zum Verschieben von Seiten verwendet werden kann, das " <tt>move</tt>"-Berechtigung (wird standardmäßig nur angemeldeten Benutzern gewährt). Diese Einschränkung kann nicht mit der Lockdown-Erweiterung aufgehoben werden.


== Beispiel ==
Einige spezielle Seitentitel werden nicht so groß geschrieben, wie sie im Wiki erscheinen. Zum Beispiel ist Special:Recent C hanges Recent um es einzuschränken, brauchen Sie:
So verwenden Sie Lockdown für Folgendes: * Zugriff auf Spezial:Export für eingeloggte Benutzer (registrierte Benutzer) verhindern
$wgSpecialPageLockdown [ 'Letzte Änderungen' ] <nowiki>= </nowiki> [ 'Benutzer' ];
* Bearbeitung des Projektnamensraums auf eingeloggte Benutzer beschränken (registrierte Benutzer)


Sie können dann Folgendes verwenden:  
Eine vollständige Liste spezieller Seitentitel finden Sie in der [https://gerrit.wikimedia.org/g/mediawiki/core/%2B/HEAD/languages/messages/MessagesEn.php MessagesEn.php ]Datei <tt>$specialPageAliases</tt>array) oder verwenden Sie alternativ das "siteinfo" API-Modul wie zB [https://www.mediawiki.org/w/api.php?action=query&meta=siteinfo&siprop=specialpagealiases /api.php?action=query&meta=siteinfo&siprop=specialpagealiases ]in Ihrem Wiki.
$wgSpecialPageLockdown [ 'Exportieren' ] <nowiki>= </nowiki> [ 'Benutzer'  ];
$wgNamespacePermissionLockdown [ NS_PROJECT ][ 'edit' ]  <nowiki>= </nowiki> [  'user'  ];


Siehe unten für eine Erklärung und weitere Beispiele.  
=== $wgActionLockdown ===
<tt>$wgActionLockdown</tt>können Sie für jede [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Actions Aktion ]welche Benutzergruppen Zugriff darauf haben. Um beispielsweise die Verwendung der Verlaufsseite auf angemeldete Benutzer zu beschränken, verwenden Sie dies in LocalSettings.php:
$wgActionLockdown [ 'Verlauf' ] <nowiki>= </nowiki> [ 'Benutzer' ];


== Konfiguration  ==
Beachten Sie, dass einige Aktionen auf diese Weise nicht gesperrt werden können. Insbesondere wird es nicht für die funktionieren <tt>ajax</tt>Handlung.
Beachten Sie, dass die Lockdown-Erweiterung nur verwendet werden kann, um den Zugriff einzuschränken, nicht um ihn zu gewähren. Wenn der Zugriff durch eine integrierte Einstellung von MediaWiki verweigert wird, kann er nicht mit der Lockdown-Erweiterung zugelassen werden.  


=== $wgSpecialPageLockdown  ===
=== $wgNamespacePermissionLockdown ===
<tt>$wgSpecialPageLockdown</tt>können Sie für jede spezielle Seite festlegen, welche Benutzergruppen Zugriff darauf haben. Um beispielsweise die Verwendung von Special:Export auf angemeldete Benutzer zu beschränken, verwenden Sie this in <tt>LocalSettings.php</tt>:  
<tt>$wgNamespacePermissionLockdown</tt> können Sie einschränken, welche Benutzergruppen welche Berechtigungen für welchen Namensraum haben. Um beispielsweise nur Mitgliedern der Sysop-Gruppe Schreibzugriff auf den Projekt-Namespace zu gewähren, verwenden Sie Folgendes:
  $wgSpecialPageLockdown [ 'Exportieren' ] <nowiki>= </nowiki> [ 'Benutzer' ];  
  $wgNamespacePermissionLockdown [ NS_PROJECT ][ 'edit' ] <nowiki>= </nowiki> [ 'sysop' ];


Beachten Sie, dass einige spezielle Seiten "nativ" eine bestimmte Berechtigung erfordern. Zum Beispiel erfordert Special:MovePage, das zum Verschieben von Seiten verwendet werden kann, das " <tt>move</tt>"-Berechtigung (wird standardmäßig nur angemeldeten Benutzern gewährt). Diese Einschränkung kann nicht mit der Lockdown-Erweiterung aufgehoben werden.  
Platzhalter für den Namensraum oder die Berechtigung (aber nicht beide gleichzeitig) werden unterstützt. Spezifischere Definitionen haben Vorrang:


Einige spezielle Seitentitel werden nicht so groß geschrieben, wie sie im Wiki erscheinen. Zum Beispiel ist Special:Recent C hanges Recent um es einzuschränken, brauchen Sie:
$wgNamespacePermissionLockdown [ NS_PROJECT ][ '*' ] <nowiki>= </nowiki> [ 'sysop' ];
  $wgSpecialPageLockdown [ 'Letzte Änderungen' ] <nowiki>= </nowiki> [ 'Benutzer' ];  
  $wgNamespacePermissionLockdown [ NS_PROJECT ][ 'read' ] <nowiki>= </nowiki> [ '*' ];


Eine vollständige Liste spezieller Seitentitel finden Sie in der [https://gerrit.wikimedia.org/g/mediawiki/core/%2B/HEAD/languages/messages/MessagesEn.php MessagesEn.php ]Datei <tt>$specialPageAliases</tt>array) oder verwenden Sie alternativ das "siteinfo" API-Modul wie zB [https://www.mediawiki.org/w/api.php?action=query&meta=siteinfo&siprop=specialpagealiases /api.php?action=query&meta=siteinfo&siprop=specialpagealiases ]in Ihrem Wiki.
$wgNamespacePermissionLockdown [ '*' ][ 'move' ] <nowiki>= </nowiki> [ 'autoconfirmed' ];


=== $wgActionLockdown  ===
Die ersten beiden Zeilen beschränken alle Berechtigungen im Namensraum des Projekts auf Mitglieder der Sysop-Gruppe, erlauben aber dennoch das Lesen für jedermann. Die dritte Zeile begrenzt die Seite in allen Namespaces auf Mitglieder der automatisch bestätigten Gruppe.
<tt>$wgActionLockdown</tt>können Sie für jede [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Actions Aktion ]welche Benutzergruppen Zugriff darauf haben. Um beispielsweise die Verwendung der Verlaufsseite auf angemeldete Benutzer zu beschränken, verwenden Sie dies in LocalSettings.php:
$wgActionLockdown [ 'Verlauf' ]  <nowiki>= </nowiki> [  'Benutzer'  ];


Beachten Sie, dass einige Aktionen auf diese Weise nicht gesperrt werden können. Insbesondere wird es nicht für die funktionieren <tt>ajax</tt>Handlung.
Beachten Sie, dass Sie auf diese Weise keine Berechtigungen erteilen können, die nicht durch die integrierte $wgGroupPermissions-Einstellung zugelassen wurden. Folgendes nicht, Änderungen im Haupt-Namespace zu überwachen:
$wgNamespacePermissionLockdown [ NS_MAIN ][ 'Patrouille' ] <nowiki>= </nowiki> [ 'Benutzer' ];


=== $wgNamespacePermissionLockdown  ===
Stattdessen müssten Sie dieses Recht zuerst in $wgGroupPermissions vergeben und es dann mit $wgNamespacePermissionLockdown wieder einschränken:
<tt>$wgNamespacePermissionLockdown</tt>können Sie einschränken, welche Benutzergruppen welche Berechtigungen für welchen Namensraum haben. Um beispielsweise nur Mitgliedern der Sysop-Gruppe Schreibzugriff auf den Projekt-Namespace zu gewähren, verwenden Sie Folgendes:  
  $wgGroupPermissions [ 'Benutzer' ][ 'Patrouille' ] <nowiki>= </nowiki> true ;
  $wgNamespacePermissionLockdown [ NS_PROJECT ][ 'edit' ] <nowiki>= </nowiki> [  'sysop'  ];  


Platzhalter für den Namensraum oder die Berechtigung (aber nicht beide gleichzeitig) werden unterstützt. Spezifischere Definitionen haben Vorrang:
$wgNamespacePermissionLockdown [ '*' ][ 'patrouille' ] <nowiki>= </nowiki> [ 'sysop' ];
$wgNamespacePermissionLockdown [ NS_MAIN ][ 'Patrouille' ] <nowiki>= </nowiki> [ 'Benutzer' ];


$wgNamespacePermissionLockdown [ NS_PROJECT ][ '*' ]  <nowiki>= </nowiki> [  'sysop'  ];
Beachten Sie, dass beim Einschränken des Lesezugriffs auf einen Namespace die Einschränkung leicht umgangen werden kann, wenn der Benutzer Lesezugriff auf einen beliebigen anderen Namespace hat: Indem eine lesegeschützte Seite als Vorlage eingefügt wird, kann sie sichtbar gemacht werden. Um dies zu vermeiden, müssten Sie die Verwendung von Seiten aus diesem Namensraum als Vorlagen verbieten, indem Sie die ID des Namensraums zu [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgNonincludableNamespaces $wgNonincludableNamespaces hinzufügen ]:
  $wgNamespacePermissionLockdown [ NS_PROJECT ][ 'read' ] <nowiki>= </nowiki> [ '*' ];  
  $wgNamespacePermissionLockdown [ NS_PROJECT ][ 'read' ] <nowiki>= </nowiki> [ 'user' ];
  $wgNonincludableNamespaces [] <nowiki>= </nowiki> NS_PROJEKT ;
  $wgNamespacePermissionLockdown [ '*' ][ 'move' ] <nowiki>= </nowiki> [  'autoconfirmed'  ];  


Die ersten beiden Zeilen beschränken alle Berechtigungen im Namensraum des Projekts auf Mitglieder der Sysop-Gruppe, erlauben aber dennoch das Lesen für jedermann. Die dritte Zeile begrenzt die Seite in allen Namespaces auf Mitglieder der automatisch bestätigten Gruppe.
Sie können Lockdown natürlich auch mit benutzerdefinierten Namespaces verwenden, die mit [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExtraNamespaces $wgExtraNamespaces ]:
// benutzerdefinierte Namespaces definieren
$wgExtraNamespaces [ 100 ] <nowiki>= </nowiki> 'Private' ;
$wgExtraNamespaces [ 101 ] <nowiki>= </nowiki> 'Privatgespräch' ;


Beachten Sie, dass Sie auf diese Weise keine Berechtigungen erteilen können , die nicht durch die integrierte $wgGroupPermissions-Einstellung zugelassen wurden. Folgendes nicht , Änderungen im Haupt-Namespace zu überwachen:
// "Lese"-Berechtigung auf angemeldete Benutzer
  $wgNamespacePermissionLockdown [ NS_MAIN ][ 'Patrouille' ] <nowiki>= </nowiki> [ 'Benutzer' ];  
beschränken $wgNamespacePermissionLockdown [ 100 ][ 'read' ] <nowiki>= </nowiki> [ 'user' ];
  $wgNamespacePermissionLockdown [ 101 ][ 'read' ] <nowiki>= </nowiki> [ 'user' ];


Stattdessen müssten Sie dieses Recht zuerst in $wgGroupPermissions vergeben und es dann mit $wgNamespacePermissionLockdown wieder einschränken:
  // verhindern, dass Seiten aus diesem Namespace
  $wgGroupPermissions [ 'Benutzer' ][ 'Patrouille' ]  <nowiki>= </nowiki> true ;
  aufgenommen werden $wgNonincludableNamespaces [] <nowiki>= </nowiki> 100 ;
  $wgNonincludableNamespaces [] <nowiki>= </nowiki> 101 ;
  $wgNamespacePermissionLockdown [ '*' ][ 'patrouille' ]  <nowiki>= </nowiki> [  'sysop'  ];  
  $wgNamespacePermissionLockdown [ NS_MAIN ][ 'Patrouille' ] <nowiki>= </nowiki> [  'Benutzer'  ];  


Beachten Sie, dass beim Einschränken des Lesezugriffs auf einen Namespace die Einschränkung leicht umgangen werden kann, wenn der Benutzer Lesezugriff auf einen beliebigen anderen Namespace hat: Indem eine lesegeschützte Seite als Vorlage eingefügt wird, kann sie sichtbar gemacht werden. Um dies zu vermeiden, müssten Sie die Verwendung von Seiten aus diesem Namensraum als Vorlagen verbieten, indem Sie die ID des Namensraums zu [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgNonincludableNamespaces $wgNonincludableNamespaces hinzufügen ]:
Beachten Sie, dass benutzerdefinierte Namespaces immer paarweise definiert werden sollten, der eigentliche Namespace (mit einer geraden ID) und der zugehörige Talk-Namespace (mit einer ungeraden ID).
$wgNamespacePermissionLockdown [ NS_PROJECT ][ 'read' ]  <nowiki>= </nowiki> [  'user'  ];
$wgNonincludableNamespaces []  <nowiki>= </nowiki> NS_PROJEKT ;


Sie können Lockdown natürlich auch mit benutzerdefinierten Namespaces verwenden, die mit [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExtraNamespaces $wgExtraNamespaces ]:  
Wenn Sie Konstanten verwenden möchten, um auf Ihre Namespaces zu verweisen, müssen Sie diese definieren:
  // benutzerdefinierte Namespaces definieren  
  // Konstanten für Ihre benutzerdefinierten Namespaces definieren, für eine besser lesbare Konfiguration
  $wgExtraNamespaces [ 100 ]  <nowiki>= </nowiki> 'Private' ;  
  define ( 'NS_PRIVATE' , 100 );
  $wgExtraNamespaces [ 101 ]  <nowiki>= </nowiki> 'Privatgespräch' ;  
  definieren ( 'NS_PRIVATE_TALK' , 101 );


  // "Lese"-Berechtigung auf angemeldete Benutzer
  // benutzerdefinierte Namespaces definieren
  beschränken $wgNamespacePermissionLockdown [ 100 ][ 'read' ]  <nowiki>= </nowiki> 'user' ];  
  $wgExtraNamespaces [ NS_PRIVATE ] <nowiki>= </nowiki> 'Private' ;
  $wgNamespacePermissionLockdown [ 101 ][ 'read' ]  <nowiki>= </nowiki> 'user' ];  
  $wgExtraNamespaces [ NS_PRIVATE_TALK ] <nowiki>= </nowiki> 'Privatgespräch' ;


  // verhindern, dass Seiten aus diesem Namespace
  // "Lese"-Berechtigung auf angemeldete Benutzer
  aufgenommen werden $wgNonincludableNamespaces [] <nowiki>= </nowiki> 100 ;  
  beschränken $wgNamespacePermissionLockdown [ NS_PRIVATE ][ 'read' ] <nowiki>= </nowiki> [ 'user' ];
  $wgNonincludableNamespaces [] <nowiki>= </nowiki> 101 ;  
  $wgNamespacePermissionLockdown [ NS_PRIVATE_TALK ][ 'read' ] <nowiki>= </nowiki> [ 'user' ];
Beachten Sie, dass benutzerdefinierte Namespaces immer paarweise definiert werden sollten, der eigentliche Namespace (mit einer geraden ID) und der zugehörige Talk-Namespace (mit einer ungeraden ID).


Wenn Sie Konstanten verwenden möchten, um auf Ihre Namespaces zu verweisen, müssen Sie diese definieren:
  // Einschluss von Seiten aus diesem Namespace verhindern
  // Konstanten für Ihre benutzerdefinierten Namespaces definieren, für eine besser lesbare Konfiguration
  $wgNonincludableNamespaces [] <nowiki>= </nowiki> NS_PRIVATE ;
  define ( 'NS_PRIVATE' ,  100 );  
  $wgNonincludableNamespaces [] <nowiki>= </nowiki> NS_PRIVATE_TALK
  definieren ( 'NS_PRIVATE_TALK' ,  101 );


// benutzerdefinierte Namespaces definieren
Sie könnten auch [http://php.net/array_fill array_fill() ], um mehrere Namespaces auf einmal einzuschränken, z.&nbsp;B.&nbsp; wenn Sie die Namespaces 0 bis 2009 auf die Bearbeitung nur durch Sysops beschränken wollten:
  $wgExtraNamespaces [ NS_PRIVATE ]  <nowiki>= </nowiki> 'Private' ;
  $wgNamespacePermissionLockdown <nowiki>= </nowiki> array_fill ( 0 , 2010 , [ 'edit' <nowiki>=> </nowiki> [ 'sysop' ] ] );
$wgExtraNamespaces [ NS_PRIVATE_TALK ]  <nowiki>= </nowiki> 'Privatgespräch' ;  


// "Lese"-Berechtigung auf angemeldete Benutzer
=== $wgNamespacePermissionLockdown vs. $wgActionLockdown ===
beschränken $wgNamespacePermissionLockdown [ NS_PRIVATE ][ 'read' ]  <nowiki>= </nowiki> [ 'user'  ];
<tt>$wgActionLockdown</tt>wird wesentlich früher (im [https://www.mediawiki.org/wiki/Manual:Hooks/MediaWikiPerformAction MediaWikiPerformAction-Hook ]) im Request-Handling-Prozess überprüft als <tt>$wgNamespacePermissionLockdown</tt>(was im [https://www.mediawiki.org/wiki/Manual:Hooks/getUserPermissionsErrors getUserPermissionsErrors-Hook ]).
$wgNamespacePermissionLockdown [ NS_PRIVATE_TALK ][ 'read' ]  <nowiki>= </nowiki> [ 'user'  ];


// Einschluss von Seiten aus diesem Namespace verhindern
Wenn eine Aktion das <tt>$wgActionLockdown</tt>nicht zulassen versucht wird, wird ein Berechtigungsfehler angezeigt. Ebenfalls, <tt>$wgNamespacePermissionLockdown</tt>teilt dem Endbenutzer mit, welche Gruppen die Aktion ausführen dürfen.
$wgNonincludableNamespaces []  <nowiki>= </nowiki> NS_PRIVATE ;
$wgNonincludableNamespaces []  <nowiki>= </nowiki> NS_PRIVATE_TALK


Sie könnten auch [http://php.net/array_fill array_fill() ], um mehrere Namespaces auf einmal einzuschränken, z. B. wenn Sie die Namespaces 0 bis 2009 auf die Bearbeitung nur durch Sysops beschränken wollten:
== Anwendungen ==
$wgNamespacePermissionLockdown  <nowiki>= </nowiki> array_fill ( 0 ,  2010 ,  [  'edit'  <nowiki>=> </nowiki> [  'sysop'  ]  ]  );
=== Beispiel ===
So verwenden Sie Lockdown für Folgendes:
* Zugriff auf Spezial:Export für eingeloggte Benutzer (registrierte Benutzer) verhindern
* Bearbeitung des Projektnamensraums auf eingeloggte Benutzer beschränken (registrierte Benutzer)


=== $wgNamespacePermissionLockdown vs. $wgActionLockdown  ===
Sie können dann Folgendes verwenden:
$wgSpecialPageLockdown [ 'Exportieren' ] <nowiki>= </nowiki> [ 'Benutzer' ];
$wgNamespacePermissionLockdown [ NS_PROJECT ][ 'edit' ] <nowiki>= </nowiki> [ 'user' ];


<tt>$wgActionLockdown</tt>wird wesentlich früher (im [https://www.mediawiki.org/wiki/Manual:Hooks/MediaWikiPerformAction MediaWikiPerformAction-Hook ]) im Request-Handling-Prozess überprüft als <tt>$wgNamespacePermissionLockdown</tt>(was im [https://www.mediawiki.org/wiki/Manual:Hooks/getUserPermissionsErrors getUserPermissionsErrors-Hook ]).
The following pages about the security model used by MediaWiki per default may be helpful to understand the instructions below:
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights Manual:User rights]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgGroupPermissions Manual:$wgGroupPermissions]


Wenn eine Aktion das <tt>$wgActionLockdown</tt>nicht zulassen versucht wird, wird ein Berechtigungsfehler angezeigt. Ebenfalls, <tt>$wgNamespacePermissionLockdown</tt>teilt dem Endbenutzer mit, welche Gruppen die Aktion ausführen dürfen.
=== Gruppen ===
* Steuern, welcher Benutzer zu welchen Gruppen gehört [https://www.mediawiki.org/wiki/Special:UserRights Special:Userrights ].
* Es werden nur bestehende Gruppen vorgeschlagen
** aber Sie können eine neue Gruppe "erstellen"
** indem Sie einen Eintrag dafür in [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgGroupPermissions $wgGroupPermissions erstellen ]
** auch wenn Sie dort eigentlich keine Berechtigung setzen müssen, aber sie muss auf der linken Seite erscheinen des Arrays


== Gruppen  ==
;Beispiel
können Sie steuern, welcher Benutzer zu welchen Gruppen gehört [https://www.mediawiki.org/wiki/Special:UserRights Special:Userrights ]. Es werden nur bestehende Gruppen vorgeschlagen, aber Sie können eine neue Gruppe "erstellen", indem Sie einen Eintrag dafür in [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgGroupPermissions $wgGroupPermissions erstellen ](auch wenn Sie dort eigentlich keine Berechtigung setzen müssen, aber sie muss auf der linken Seite erscheinen des Arrays). Zum Beispiel:
  $wgGroupPermissions [ 'somegroupname' ][ 'read' ] <nowiki>= </nowiki> true ;
  $wgGroupPermissions [ 'somegroupname' ][ 'read' ] <nowiki>= </nowiki> true ;  


Weitere Informationen finden Sie unter [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:User_rights Hilfe:Benutzerrechte ], [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights Handbuch:Benutzerrechte ]und [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights_management Handbuch:Benutzerrechteverwaltung ].
;Weitere Informationen
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:User_rights Hilfe:Benutzerrechte ]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights Handbuch:Benutzerrechte ]
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights_management Handbuch:Benutzerrechteverwaltung ]


== Zusätzliche Maßnahmen ==
=== Zusätzliche Maßnahmen ===
[https://meta.wikimedia.org/wiki/Help:Images_and_other_uploaded_files Bilder und andere hochgeladene Dateien ]
[https://meta.wikimedia.org/wiki/Help:Images_and_other_uploaded_files Bilder und andere hochgeladene Dateien ]


Zeile 175: Zeile 147:




== Bekannte Probleme ==
=== Bekannte Probleme ===
Es ist bekannt, dass Lockdown für MW 1.27.x bis 1.30.x gebrochen wurde [https://phabricator.wikimedia.org/T148582 [1] ]. Mögliche Nebenwirkungen der Verwendung sind: * Unvollständige Liste der Namespaces, die unter der Registerkarte Erweitert von Special:Search und auf der speziellen Seite für [https://www.mediawiki.org/wiki/Extension:ReplaceText ReplaceText angezeigt werden ]
Es ist bekannt, dass Lockdown für MW 1.27.x bis 1.30.x gebrochen wurde [https://phabricator.wikimedia.org/T148582 [1] ]. Mögliche Nebenwirkungen der Verwendung sind:
* Das Suchfeld bietet für bestimmte Namensräume keine automatische Vervollständigung mehr an  
* Unvollständige Liste der Namespaces, die unter der Registerkarte Erweitert von Special:Search und auf der speziellen Seite für [https://www.mediawiki.org/wiki/Extension:ReplaceText ReplaceText angezeigt werden ]
Eine Problemumgehung besteht möglicherweise darin, alle Namespaces unter [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgContentNamespaces $wgContentNamespaces aufzulisten ], aber der Erfolg ist nicht garantiert. Eine andere vorübergehende Lösung besteht darin, eine Version vor den Breaking Commits zu verwenden, wie in [https://www.mediawiki.org/wiki/Topic:Tr4xxpln3fnpz3eu Topic:Tr4xxpln3fnpz3eu beschrieben ].  
* Das Suchfeld bietet für bestimmte Namensräume keine automatische Vervollständigung mehr an
 
Eine Problemumgehung besteht möglicherweise darin, alle Namespaces unter [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgContentNamespaces $wgContentNamespaces aufzulisten ], aber der Erfolg ist nicht garantiert. Eine andere vorübergehende Lösung besteht darin, eine Version vor den Breaking Commits zu verwenden, wie in [https://www.mediawiki.org/wiki/Topic:Tr4xxpln3fnpz3eu Topic:Tr4xxpln3fnpz3eu beschrieben ].
 
<noinclude>
== Anhang ==
== Sicherheit ==
* https://www.mediawiki.org/wiki/Permissions
* https://www.mediawiki.org/wiki/Manual:Preventing_access
 
== Dokumentation ==
== Links ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
 
==== Links ====
===== Weblinks =====
# [https://www.mediawiki.org/wiki/Kategorie:/User_rights_extensions Kategorie/Erweiterungen für Benutzerrechte ]
# [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:GroupManager GroupManager ](BlueSpice) - zum Hinzufügen, Bearbeiten und Löschen von Benutzergruppen
# [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:PermissionManager PermissionManager ](BlueSpice) - zur Verwaltung von Benutzerrechten auf Benutzergruppen
# [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:UserProtect UserProtect ]– Ermöglicht pro Benutzer pro Recht pro Seite Schutz
# [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:AccessControl AccessControl ]- Ermöglicht das Einschränken des Zugriffs auf bestimmte Seiten und Dateien
# [https://www.mediawiki.org/wiki/Extension:CategoryLockdown CategoryLockdown ]– Ermöglicht das Einschränken des Zugriffs nach Kategorie und Gruppe
 
[[Kategorie:MediaWiki/Extension]]


[[Kategorie:Wiki:Extension]]
</noinclude>

Aktuelle Version vom 23. Juni 2024, 10:27 Uhr

Lockdown-Erweiterung für Mediawiki - Zugriff beschränken

Beschreibung

Feineres Sicherheitsmodell im Vergleich zu den Standardeinstellungen

Installation

Download

https://www.mediawiki.org/wiki/Special:ExtensionDistributor/Lockdown

Entpacken

$ tar -xzf Lockdown-*.tar.gz -C mediawiki/extensions/

Aktivieren

LocalSettings.php

wfLoadExtension ( 'Lockdown' );

Prüfen

Prüfen, ob die Erweiterung erfolgreich installiert wurde siehe Spezial:Version

Konfiguration

Lockdown kann Zugriffe einschränken, aber nicht erweitern

  • Wurde der Zugriff durch eine MediaWiki-Einstellung verweigert, kann er nicht durch Lockdown zugelassen werden

$wgSpecialPageLockdown

Für spezielle Seite festlegen, welche Benutzergruppen Zugriff darauf haben.

Um beispielsweise die Verwendung von Special:Export auf angemeldete Benutzer zu beschränken, verwenden Sie this in LocalSettings.php:

$wgSpecialPageLockdown [ 'Exportieren' ] =  [ 'Benutzer' ];

Beachten Sie, dass einige spezielle Seiten "nativ" eine bestimmte Berechtigung erfordern.

  • Zum Beispiel erfordert Special:MovePage, das zum Verschieben von Seiten verwendet werden kann, das " move"-Berechtigung (wird standardmäßig nur angemeldeten Benutzern gewährt). Diese Einschränkung kann nicht mit der Lockdown-Erweiterung aufgehoben werden.

Einige spezielle Seitentitel werden nicht so groß geschrieben, wie sie im Wiki erscheinen. Zum Beispiel ist Special:Recent C hanges Recent um es einzuschränken, brauchen Sie:

$wgSpecialPageLockdown [ 'Letzte Änderungen' ] =  [ 'Benutzer' ];

Eine vollständige Liste spezieller Seitentitel finden Sie in der MessagesEn.php Datei $specialPageAliasesarray) oder verwenden Sie alternativ das "siteinfo" API-Modul wie zB /api.php?action=query&meta=siteinfo&siprop=specialpagealiases in Ihrem Wiki.

$wgActionLockdown

$wgActionLockdownkönnen Sie für jede Aktion welche Benutzergruppen Zugriff darauf haben. Um beispielsweise die Verwendung der Verlaufsseite auf angemeldete Benutzer zu beschränken, verwenden Sie dies in LocalSettings.php:

$wgActionLockdown [ 'Verlauf' ] =  [ 'Benutzer' ];

Beachten Sie, dass einige Aktionen auf diese Weise nicht gesperrt werden können. Insbesondere wird es nicht für die funktionieren ajaxHandlung.

$wgNamespacePermissionLockdown

$wgNamespacePermissionLockdown können Sie einschränken, welche Benutzergruppen welche Berechtigungen für welchen Namensraum haben. Um beispielsweise nur Mitgliedern der Sysop-Gruppe Schreibzugriff auf den Projekt-Namespace zu gewähren, verwenden Sie Folgendes:

$wgNamespacePermissionLockdown [ NS_PROJECT ][ 'edit' ] =  [ 'sysop' ];

Platzhalter für den Namensraum oder die Berechtigung (aber nicht beide gleichzeitig) werden unterstützt. Spezifischere Definitionen haben Vorrang:

$wgNamespacePermissionLockdown [ NS_PROJECT ][ '*' ] =  [ 'sysop' ];
$wgNamespacePermissionLockdown [ NS_PROJECT ][ 'read' ] =  [ '*' ];
$wgNamespacePermissionLockdown [ '*' ][ 'move' ] =  [ 'autoconfirmed' ];

Die ersten beiden Zeilen beschränken alle Berechtigungen im Namensraum des Projekts auf Mitglieder der Sysop-Gruppe, erlauben aber dennoch das Lesen für jedermann. Die dritte Zeile begrenzt die Seite in allen Namespaces auf Mitglieder der automatisch bestätigten Gruppe.

Beachten Sie, dass Sie auf diese Weise keine Berechtigungen erteilen können, die nicht durch die integrierte $wgGroupPermissions-Einstellung zugelassen wurden. Folgendes nicht, Änderungen im Haupt-Namespace zu überwachen:

$wgNamespacePermissionLockdown [ NS_MAIN ][ 'Patrouille' ] =  [ 'Benutzer' ];

Stattdessen müssten Sie dieses Recht zuerst in $wgGroupPermissions vergeben und es dann mit $wgNamespacePermissionLockdown wieder einschränken:

$wgGroupPermissions [ 'Benutzer' ][ 'Patrouille' ] =  true ;
$wgNamespacePermissionLockdown [ '*' ][ 'patrouille' ] =  [ 'sysop' ];
$wgNamespacePermissionLockdown [ NS_MAIN ][ 'Patrouille' ] =  [ 'Benutzer' ];

Beachten Sie, dass beim Einschränken des Lesezugriffs auf einen Namespace die Einschränkung leicht umgangen werden kann, wenn der Benutzer Lesezugriff auf einen beliebigen anderen Namespace hat: Indem eine lesegeschützte Seite als Vorlage eingefügt wird, kann sie sichtbar gemacht werden. Um dies zu vermeiden, müssten Sie die Verwendung von Seiten aus diesem Namensraum als Vorlagen verbieten, indem Sie die ID des Namensraums zu $wgNonincludableNamespaces hinzufügen :

$wgNamespacePermissionLockdown [ NS_PROJECT ][ 'read' ] =  [ 'user' ];
$wgNonincludableNamespaces [] =  NS_PROJEKT ;

Sie können Lockdown natürlich auch mit benutzerdefinierten Namespaces verwenden, die mit $wgExtraNamespaces :

// benutzerdefinierte Namespaces definieren
$wgExtraNamespaces [ 100 ] =  'Private' ;
$wgExtraNamespaces [ 101 ] =  'Privatgespräch' ;
// "Lese"-Berechtigung auf angemeldete Benutzer
beschränken $wgNamespacePermissionLockdown [ 100 ][ 'read' ] =  [ 'user' ];
$wgNamespacePermissionLockdown [ 101 ][ 'read' ] =  [ 'user' ];
// verhindern, dass Seiten aus diesem Namespace
aufgenommen werden $wgNonincludableNamespaces [] =  100 ;
$wgNonincludableNamespaces [] =  101 ;

Beachten Sie, dass benutzerdefinierte Namespaces immer paarweise definiert werden sollten, der eigentliche Namespace (mit einer geraden ID) und der zugehörige Talk-Namespace (mit einer ungeraden ID).

Wenn Sie Konstanten verwenden möchten, um auf Ihre Namespaces zu verweisen, müssen Sie diese definieren:

// Konstanten für Ihre benutzerdefinierten Namespaces definieren, für eine besser lesbare Konfiguration
define ( 'NS_PRIVATE' , 100 );
definieren ( 'NS_PRIVATE_TALK' , 101 );
// benutzerdefinierte Namespaces definieren
$wgExtraNamespaces [ NS_PRIVATE ] =  'Private' ;
$wgExtraNamespaces [ NS_PRIVATE_TALK ] =  'Privatgespräch' ;
// "Lese"-Berechtigung auf angemeldete Benutzer
beschränken $wgNamespacePermissionLockdown [ NS_PRIVATE ][ 'read' ] =  [ 'user' ];
$wgNamespacePermissionLockdown [ NS_PRIVATE_TALK ][ 'read' ] =  [ 'user' ];
// Einschluss von Seiten aus diesem Namespace verhindern
$wgNonincludableNamespaces [] =  NS_PRIVATE ;
$wgNonincludableNamespaces [] =  NS_PRIVATE_TALK

Sie könnten auch array_fill() , um mehrere Namespaces auf einmal einzuschränken, z. B.  wenn Sie die Namespaces 0 bis 2009 auf die Bearbeitung nur durch Sysops beschränken wollten:

$wgNamespacePermissionLockdown =  array_fill ( 0 , 2010 , [ 'edit' =>  [ 'sysop' ] ] );

$wgNamespacePermissionLockdown vs. $wgActionLockdown

$wgActionLockdownwird wesentlich früher (im MediaWikiPerformAction-Hook ) im Request-Handling-Prozess überprüft als $wgNamespacePermissionLockdown(was im getUserPermissionsErrors-Hook ).

Wenn eine Aktion das $wgActionLockdownnicht zulassen versucht wird, wird ein Berechtigungsfehler angezeigt. Ebenfalls, $wgNamespacePermissionLockdownteilt dem Endbenutzer mit, welche Gruppen die Aktion ausführen dürfen.

Anwendungen

Beispiel

So verwenden Sie Lockdown für Folgendes:

  • Zugriff auf Spezial:Export für eingeloggte Benutzer (registrierte Benutzer) verhindern
  • Bearbeitung des Projektnamensraums auf eingeloggte Benutzer beschränken (registrierte Benutzer)

Sie können dann Folgendes verwenden:

$wgSpecialPageLockdown [ 'Exportieren' ] =  [ 'Benutzer' ];
$wgNamespacePermissionLockdown [ NS_PROJECT ][ 'edit' ] =  [ 'user' ];

The following pages about the security model used by MediaWiki per default may be helpful to understand the instructions below:

Gruppen

  • Steuern, welcher Benutzer zu welchen Gruppen gehört Special:Userrights .
  • Es werden nur bestehende Gruppen vorgeschlagen
    • aber Sie können eine neue Gruppe "erstellen"
    • indem Sie einen Eintrag dafür in $wgGroupPermissions erstellen
    • auch wenn Sie dort eigentlich keine Berechtigung setzen müssen, aber sie muss auf der linken Seite erscheinen des Arrays
Beispiel
$wgGroupPermissions [ 'somegroupname' ][ 'read' ] =  true ;
Weitere Informationen

Zusätzliche Maßnahmen

Bilder und andere hochgeladene Dateien

Bilder und andere hochgeladene Dateien können weiterhin angezeigt und auf jeder Seite eingefügt werden. Schutzmaßnahmen für den Image-Namensraum verhindern dies nicht. Sie Handbuch: Bildautorisierung Informationen zum Verhindern des unbefugten Zugriffs auf Bilder Siehe auch: * NSFileRepo


Bekannte Probleme

Es ist bekannt, dass Lockdown für MW 1.27.x bis 1.30.x gebrochen wurde [1 ]. Mögliche Nebenwirkungen der Verwendung sind:

  • Unvollständige Liste der Namespaces, die unter der Registerkarte Erweitert von Special:Search und auf der speziellen Seite für ReplaceText angezeigt werden
  • Das Suchfeld bietet für bestimmte Namensräume keine automatische Vervollständigung mehr an

Eine Problemumgehung besteht möglicherweise darin, alle Namespaces unter $wgContentNamespaces aufzulisten , aber der Erfolg ist nicht garantiert. Eine andere vorübergehende Lösung besteht darin, eine Version vor den Breaking Commits zu verwenden, wie in Topic:Tr4xxpln3fnpz3eu beschrieben .


Anhang

Sicherheit

Dokumentation

Links

Siehe auch

Links

Weblinks
  1. Kategorie/Erweiterungen für Benutzerrechte
  2. GroupManager (BlueSpice) - zum Hinzufügen, Bearbeiten und Löschen von Benutzergruppen
  3. PermissionManager (BlueSpice) - zur Verwaltung von Benutzerrechten auf Benutzergruppen
  4. UserProtect – Ermöglicht pro Benutzer pro Recht pro Seite Schutz
  5. AccessControl - Ermöglicht das Einschränken des Zugriffs auf bestimmte Seiten und Dateien
  6. CategoryLockdown – Ermöglicht das Einschränken des Zugriffs nach Kategorie und Gruppe