Jump to content

Extension:Lockdown

From mediawiki.org
This page is a translated version of the page Extension:Lockdown and the translation is 99% complete.
Outdated translations are marked like this.
Manuel des extensions MediaWiki
Lockdown
É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+
  • $wgActionLockdown
  • $wgNamespacePermissionLockdown
  • $wgSpecialPageLockdown
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é Lockdown dans votre dossier extensions/.
    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.
  • Yes Fait – Accédez à Special:Version sur 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

Images et autres fichiers téléversés

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