Extension:Lockdown
MediaWiki n'est pas écrit pour fournir des restrictions d'accès sur une page donnée ou partiellement. Si ce niveau de contrôle vous est nécessaire, nous vous recommandons fortement d'utiliser un système de gestion de contenu qui le prend en charge nativement.
Les correctifs ou les extensions tierces qui promettent d'ajouter un contrôle d'accès pour une utilisation avec MediaWiki, peuvent ne pas fonctionner dans certains cas, exposant ainsi potentiellement des données confidentielles. Utilisez-les mais sous votre propre responsabilité. Ni les développeurs MediaWiki, ni la Fondation Wikimedia ne sont responsables des fuites de données qui pourraient en résulter. Ce message est ajouté à toutes les extensions de ce type et ne refléte pas forcément l'état de sécurité réel de l'extension actuelle. Pour plus de détails, voir Problèmes de sécurité avec les extensions d'autorisation. |
État de la version : stable |
|
|---|---|
| Implémentation | Droits utilisateur |
| Description | Implémente les autorisations de groupe par espace de noms |
| Auteur(s) | Daniel Kinzler (Duesentriebdiscussion) |
| MediaWiki | 1.31+ |
| PHP | 5.5+ |
|
|
| Licence | Licence publique générale GNU v2.0 ou ultérieur |
| Téléchargement | README |
| Traduire l’extension Lockdown sur translatewiki.net si elle y est disponible | |
| Problèmes | Tâches ouvertes · Signaler un bogue |
L'extension Lockdown implémente un moyen de restreindre l'accès à des espaces de noms spécifiques et des pages spéciales à un ensemble donné de groupes d'utilisateurs. Cela fournit un modèle de sécurité plus précis que celui fourni par les paramètres par défaut $wgGroupPermissions et $wgNamespaceProtection.
Les pages suivantes sur le modèle de sécurité utilisé par MediaWiki par défaut peuvent être utiles pour comprendre les instructions ci-dessous :
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
Lockdowndans votre dossierextensions/.
Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Lockdown
- Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
wfLoadExtension( 'Lockdown' );
- Configurer si nécessaire.
Fait – Accédez à Special:Versionsur votre wiki pour vérifier que l'extension a bien été installée.
Exemple
Pour utiliser Lockdown pour :
- empêcher l'accès à Special:Export aux utilisateurs non connectés
- limiter la modification de l'espace de noms du projet aux utilisateurs connectés (utilisateurs enregistrés)
Vous pouvez ensuite utiliser les éléments suivants :
$wgSpecialPageLockdown['Export'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'user' ];
Voir ci-dessous pour une explication et plus d'exemples.
Configuration
Notez que l'extension "Lockdown" ne peut être utilisée que pour restreindre l'accès, et non pour l'accorder. Si l'accès est refusé par un paramètre intégré de MediaWiki, il ne peut pas être autorisé en utilisant l'extension Lockdown.
$wgSpecialPageLockdown
$wgSpecialPageLockdown vous permet de spécifier pour chaque page spéciale quels groupes d'utilisateurs y ont accès.
Par exemple, pour limiter l'utilisation de Special:Export aux utilisateurs connectés, utilisez ceci dans LocalSettings.php :
$wgSpecialPageLockdown['Export'] = [ 'user' ];
Notez que certaines pages spéciales nécessitent nativement une autorisation spécifique.
Par exemple, Special:MovePage qui peut être utilisé pour déplacer (renommer) des pages, nécessite d'avoir les droits move (accordés uniquement par défaut aux utilisateurs connectés).
Cette restriction ne peut pas être remplacée à l'aide de l'extension Lockdown.
Certains titres de pages spéciales ne sont pas mis en majuscules comme ils apparaissent sur le wiki. Par exemple, Special:RecentChanges est Recentchanges en interne, donc pour le restreindre vous devez :
$wgSpecialPageLockdown['Recentchanges'] = [ 'user' ];
Une liste complète des titres des pages spéciales est disponible dans le fichier MessagesEn.php (tableau $specialPageAliases) ou vous pouvez aussi utiliser le module API "siteinfo" comme par exemple /api.php?action=query&meta=siteinfo&siprop=specialpagealiases de votre wiki.
$wgActionLockdown
$wgActionLockdown vous permet de spécifier pour chaque action le groupe d'utilisateurs qui peut y accéder.
Par exemple, pour limiter l'utilisation de la page d'historique aux utilisateurs connectés, utiliser ceci dans LocalSettings.php :
$wgActionLockdown['history'] = [ 'user' ];
Notez que certaines actions ne peuvent pas être bloquées de cette manière.
En particulier, cela ne fonctionne pas pour l'action ajax.
$wgNamespacePermissionLockdown
$wgNamespacePermissionLockdown vous permet de restreindre des groupes d'utilisateurs donnés, à des droits donnés, et sur des espaces de noms donnés.
Par exemple, pour ne donner accès qu'aux membres du groupe sysop à l'espace de noms du projet, utilisez :
$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'sysop' ];
Les jokers sont autorisés pour l'espace de noms et pour les droits (mais pas les deux à la fois). Les définitions plus précises ont priorité :
$wgNamespacePermissionLockdown[NS_PROJECT]['*'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ '*' ];
$wgNamespacePermissionLockdown['*']['move'] = [ 'autoconfirmed' ];
Les deux premières lignes restreignent toutes les autorisations dans l'espace de noms du projet aux membres du groupe sysop, mais permettent toujours à n'importe qui de lire. La troisième ligne limite le renommage (déplacement) de la page dans tous les espaces de noms aux membres du groupe des auto-confirmés.
Notez que de cette manière, vous ne pouvez pas attribuer les droits qui ne sont pas autorisés par le paramètre embarqué $wgGroupPermissions . L'exemple suivant ne permet pas aux utilisateurs réguliers de patrouiller les modifications dans l'espace de noms Main: :
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];
Au lieu de cela, vous devrez d'abord accorder ce droit dans $wgGroupPermissions, puis le restreindre à nouveau en utilisant $wgNamespacePermissionLockdown :
$wgGroupPermissions['user']['patrol'] = true;
$wgNamespacePermissionLockdown['*']['patrol'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];
Notez que lorsque vous restreignez l'accès en lecture à un espace de noms, la restriction peut être facilement contournée si l'utilisateur a un accès en lecture à tout autre espace de noms : en incluant une page protégée en lecture comme modèle, elle peut être rendue visible. Pour éviter cela, vous devrez interdire l'utilisation des pages de cet espace de noms en tant que modèles, en ajoutant l'ID de l'espace de noms à $wgNonincludableNamespaces :
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ 'user' ];
$wgNonincludableNamespaces[] = NS_PROJECT;
Un utilisateur qui a à la fois les autorisations de lecture et de renommage de page peut la déplacer vers un espace de noms lisible par lui-même mais pas par les autres. Ceci peut effectivement masquer la page à la vue des autres utilisateurs. Notez que le droit de renommer seul n'est pas suffisant — les utilisateurs doivent aussi pouvoir afficher le source de la page pour pouvoir le renommer.
Bien sûr vous pouvez également utiliser Lockdown avec des espaces de noms personnalisés définis à l'aide de $wgExtraNamespaces :
// définir les espaces de noms personnalisés
$wgExtraNamespaces[100] = 'Private';
$wgExtraNamespaces[101] = 'Private_talk';
// ne restreindre l'accès en lecture qu'aux utilisateurs connectés
$wgNamespacePermissionLockdown[100]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[101]['read'] = [ 'user' ];
// empêcher l'inclusion de pages de cet espace de noms
$wgNonincludableNamespaces[] = 100;
$wgNonincludableNamespaces[] = 101;
Notez que les espaces de noms personnalisés doivent toujours être définis par paires, l'espace de noms lui-même (avec un Id pair) et l'espace de noms de discussion associé (avec un Id impair).
Si vous voulez utiliser des constantes pour référencer vos espaces de noms, vous devez les définir :
// définir les constantes de vos espaces de noms personnalisés, pour une configuration plus lisible
define('NS_PRIVATE', 100);
define('NS_PRIVATE_TALK', 101);
// définir les espaces de noms personnalisés
$wgExtraNamespaces[NS_PRIVATE] = 'Private';
$wgExtraNamespaces[NS_PRIVATE_TALK] = 'Private_talk';
// ne restreindre l'accès en lecture qu'aux utilisateurs connectés
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PRIVATE_TALK]['read'] = [ 'user' ];
// empêcher l'inclusion de pages de cet espace de noms
$wgNonincludableNamespaces[] = NS_PRIVATE;
$wgNonincludableNamespaces[] = NS_PRIVATE_TALK;
Vous pouvez également utiliser array_fill() pour restreindre plusieurs espaces de noms simultanément, par exemple si vous ne voulez restreindre les espaces de noms de 0 à 2009 en édition qu'aux sysops seulement :
$wgNamespacePermissionLockdown = array_fill( 0, 2010, [ 'edit' => [ 'sysop' ] ] );
$wgNamespacePermissionLockdown et $wgActionLockdown
$wgActionLockdown est testé beaucoup plus tôt (dans l'accroche $5) lors du processus du traitement de la requête, que $wgNamespacePermissionLockdown (qui est testé dans l'accroche $6).
Si une action non autorisée par $wgActionLockdown est tentée, on affiche une erreur de droits.
De même, $wgNamespacePermissionLockdown permet à l'utilisateur final de savoir quels groupes sont autorisés à effectuer l'action.
Gestion des groupes
Vous pouvez contrôler quel utilisateur appartient à quel groupe avec la page Special:Userrights. Seuls les groupes existants seront proposés, mais vous pouvez créer un nouveau groupe en créant une entrée pour lui dans $wgGroupPermissions (même si vous n'avez pas besoin de définir aujourd'hui une autorisation là-bas, mais elle doit apparaître sur le côté gauche du tableau). Par exemple :
$wgGroupPermissions['somegroupname']['read'] = true;
Pour plus d'informations voir Droits utilisateurs et Droits utilisateurs et leur gestion.
Mesures supplémentaires
Les images et autres fichiers téléversés peuvent toujours être vus et inclus sur n'importe quelle page. Les protections sur l'espace de noms Image: n'empêchent pas cela. Voir Droits d'accès aux images pour les informations sur la manière d'empêcher les accès non autorisés aux images. Voir aussi :
Voir aussi
- GroupManager (BlueSpice) – pour l'ajout, la modification et la suppression de groupes utilisateurs
- PermissionManager (BlueSpice) – pour l'administration des droits utilisateur aux groupes d'utilisateurs
- UserProtect – Permet une protection par utilisateur, par privilège et par page
- PageOwnership – Gestionnaire de droits multicouches, sur le wiki entier ou sur des pages spécifiques, avec une interface conviviale
- AccessControl – Permet de restreindre l'accès à des pages et des fichiers spécifiques
- CategoryLockdown – Permet de restreindre l'accès par catégorie et par groupe
- DisableSpecialPages – Permet de rendre une page spéciale non disponible
- CrawlerProtection – Bloque les utilisateurs anonymes pour prendre des mesures et d'accéder aux pages spéciales les plus fréquemment abusées par les robots explorateurs de l'IE
- liste complète dans Category:User rights extensions fr
| Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : |
- Page specific read access extensions/fr
- Stable extensions/fr
- User rights extensions/fr
- MediaWikiPerformAction extensions/fr
- SearchGetNearMatchComplete extensions/fr
- SearchableNamespaces extensions/fr
- GetUserPermissionsErrors extensions/fr
- GPL licensed extensions/fr
- Extensions in Wikimedia version control/fr
- All extensions/fr
- Extensions included in Canasta/fr
- Extensions included in MyWikis/fr
- Extensions included in Open CSP/fr
- Extensions included in ProWiki/fr
- View page extensions/fr
- Edit extensions/fr
