Jump to content

Manuel:Empêcher l'accès

From mediawiki.org
This page is a translated version of the page Manual:Preventing access and the translation is 100% complete.

Pour l'aide concernant la personnalisation des droits utilisateurs, voir Manuel:Droits utilisateurs . Cette page contient des exemples utiles pour restreindre l'accès.

Pour plus d'informations sur la façon de modifier LocalSettings.php, voir Manuel:LocalSettings.php .

Simple wiki privé

Pour le cas d'utilisation habituel d'un "wiki privé, pour soi-même et approuvé pour les autres", vous devez :

Avertissement Avertissement : voyez les avertissements des sections ci-dessous; ceci est un « code à usage général » , qui peut ou pas, correspondre à vos besoins.
# Désactiver le lecture par les utilisateurs anonymes
$wgGroupPermissions['*']['read'] = false;

# Désactiver les modifications anonymes
$wgGroupPermissions['*']['edit'] = false;

# Empêcher les enregistrements de nouveaux utilisateurs sauf par les opérateurs système
$wgGroupPermissions['*']['createaccount'] = false;

En fonction des extensions que vous avez installées, vous pouvez mettre en liste blanche davantage de pages. Par exemple si vous utilisez l'extension Extension:ConfirmAccount , vous voulez éventuellement que Special:RequestAccount soit en liste blanche. Si la langue du contenu de votre wiki n'est pas l'anglais, il est possible que vous ayiez à utiliser le nom traduit des pages spéciales en question.

Restreindre la création de compte

Pour restreindre la création de compte, vous avez besoin de modifier LocalSettings.php dans le chemin de la racine de votre installation MediaWiki.

# Empêcher les enregistrements de nouveaux utilisateurs sauf par les opérateurs système
$wgGroupPermissions['*']['createaccount'] = false;
Vous pouvez utiliser l'extension ConfirmAccount si vous voulez définir une file de confirmation de compte. (Sinon, vous pouvez faire comme suit.)
Les nouveaux utilisateurs pourront encore être créés par les opérateurs système, de la manière suivante :
  1. aller à Special:Userlogin, lorsque vous serez connecté en tant qu'opérateur système.
  2. cliquer sur le lien "Créer un compte" pour arriver dans le formulaire de création de compte.
  3. entrer un nom d'utilisateur et une adresse de courriel, et cliquez sur le bouton "par courriel". Notez que vous avez besoin que $wgEnableEmail=true sinon l'opérateur système doit choisir un mot de passe et l'envoyer à l'utilisateur.
  4. le compte sera créé avec un mot de passe aléatoire qui est ensuite envoyé par courriel à l'adresse indiquée (comme pour la fonction « mot de passe oublié » ). Il sera demandé à l'utilisateur de changer le mot de passe lors de sa première connexion; une fois cela fait, l'adresse courriel sera également marquée comme étant confirmée.
    Quand vous cliquez à la place sur le bouton « créer un compte » , vous devez manuellement envoyer à l'utilisateur son mot de passe. Si vous avez défini $wgMinimalPasswordLength=0 (configuration par défaut jusqu'à la version 1.15) et que vous avez laissé le mot de passe vide, l'utilisateur sera averti d'une demande de confirmation de son adresse courriel mais ne pourra pas accéder à Special:Confirmemail pour faire sa confirmation. A la place, l'utilisateur obtiendra une erreur (à moins que vous ne l'ayiez ajouté à $wgWhitelistRead ); l'utilisateur pourra se connecter avec un mot de passe vide puis pourra confirmer son adresse courriel, mais le mot de passe ne sera pas réinitialisé (il devra l'être manuellement).

Il peut être nécessaire de modifier le texte affiché quand un non-utilisateur essaie de se connecter. Ceci peut être fait sur MediaWiki:Nosuchuser, lors de la connexion en tant qu'opérateur système. Utiliser du texte brut sans aucun formatage spécial, parce que la mise en forme est ignorée et que le texte est affiché littéralement. (peut avoir changé, voir bug 12952).

Vous pouvez aussi modifier le contenu du courriel envoyé aux nouveaux utilisateurs en modifiant la page MediaWiki:Createaccount-text.

Pour empêcher même les opérateurs système de créer des comptes :

# Empêcher les enregistrements de nouveaux utilisateurs par quiconque
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['sysop']['createaccount'] = false;

Pour ajouter un message en haut du formulaire de connexion, modifiez MediaWiki:Loginprompt.

Restreindre les modifications

Restreindre la modification de toutes les pages

Les utilisateurs pourront encore lire les pages avec ces modifications, et afficher leur source en utilisant Special:Export/Article name ou d'autres méthodes. Voir aussi bug 1859.

Voir Help:User rights et Manuel:$wgGroupPermissions . Si vous utilisez Extension:AbuseFilter , tout administrateur wiki peut aussi mettre en place diverses restrictions.

Quelques exemples sur la façon de se protéger contre la modification de toutes les pages (et non la lecture) par certaines classes d'utilisateurs :

Restreindre les modifications anonymes

Nécessite qu'un utilisateur soit enregistré avant de pouvoir modifier.

$wgGroupPermissions['*']['edit'] = false;

Restreindre les modifications aux utilisateurs administrateurs

Nécessite qu'un utilisateur soit un membre du groupe des utilisateurs administrateurs (opérateurs système).

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['sysop']['edit'] = true;

Restreindre absolument toute modification

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['sysop']['edit'] = false;

Restreindre la modification d'un espace de noms entier

Version de MediaWiki :
1.10

A partir de MediaWiki version 1.10, il est possible de protéger entièrement les espaces de noms en utilisant la variable $wgNamespaceProtection . Exemples:

# N'autorise que les utilisateurs auto-confirmés à modifier l'espace de noms du projet
$wgNamespaceProtection[NS_PROJECT] = array( 'autoconfirmed' );

# Ne laissez personne modifier les pages qui ne sont pas des pages de conversation avant qu'ils n'aient confirmé leur
# addresse courriel (en supposant que nous n'avons pas d'espaces de noms personnalisés et permettetnde modifier
# à partir des utilisateurs qui n'appartiennent pas au groupe 'emailconfirmed' pour commencer)
# Note pour 1.13 : le groupe 'emailconfirmed' et les droits ont été supprimés des valeurs par défaut
# initialiser si vous voulez l'utiliser, vous devrez le réactiver manuellement
$wgNamespaceProtection[NS_MAIN]     = $wgNamespaceProtection[NS_USER]  =
$wgNamespaceProtection[NS_PROJECT]  = $wgNamespaceProtection[NS_IMAGE] =
$wgNamespaceProtection[NS_TEMPLATE] = $wgNamespaceProtection[NS_HELP]  =
$wgNamespaceProtection[NS_CATEGORY] = array( 'emailconfirmed' );

# Ne permet qu'aux sysops de modifier l'espace de noms ''Policy''
$wgGroupPermissions['sysop']['editpolicy'] = true;
$wgNamespaceProtection[NS_POLICY] = array( 'editpolicy' );

Notez que dans le dernier cas on suppose qu'un espace de noms personnalisé existe et que NS_POLICY est une constante définie égale au numéro de l'espace de noms. Voir Manuel:Utiliser des espaces de noms personnalisés et Manuel:Constantes des espaces de noms pour une liste des espaces de noms du coeur de MediaWiki.

Restreindre la modification de certaines pages spécifiques

Utiliser la fonctionalité de protection . Par défaut, tout opérateur système peut protéger les pages, donc uniquement les autres opérateurs système peuvent les modifier. Dans la version 1.9 et ultérieurement, par défaut ils peuvent également protéger les pages de telle façon que seulement les utilisateurs « autoconfirmés » (avec des comptes plus anciens qu'une période définie) puissent les modifier. Pas besoin de modifier les fichiers de configuration pour cela.

Si vous voulez restreindre les modifications aux groupes avec des droits spécifiques, modifiez $wgRestrictionLevels . Pour empêcher les actions autres que la modification et le déplacement, utilisez $wgRestrictionTypes .

Restreindre la modification de toutes sauf quelques pages

Pour imposer une restriction générale à l'édition de toutes les pages, mais en autoriser quelques-unes (telles que les bacs à sable, les pages des demandes, etc.), vous pouvez utiliser l'extension EditSubpages . Cela peut ne pas convenir très souvent, mais vous pouvez également utiliser la méthode Restreindre l'édition de certaines pages mentionnée ci-dessus, avec tous les espaces de noms protégés, et seulement celui qui être édité par tout le monde et contenant toutes les pages souhaitées éditables.

Restreindre la modification pour cetains intervalles d'adresses IP

Les écoles et autres institutions peuvent souhaiter bloquer toutes les modifications, à l'exception de quelques plages spécifiées adresse IP. Pour faire ceci, voir Manuel:Bloquer et débloquer . La seule façon de faire cela à l'heure actuelle sans modifier le code est d'aller à Special:Blockip et systématiquement bloquer l'intervalle de chacune des plages d'adresses que vous ne voulez pas voir éditée. Ceci fonctionnera avec toutes les versions futures de MediaWiki. Ceci ne fonctionnera pas selon l'espace de noms.

Restreindre le modification par un utilisateur particulier

Utiliser la fonctionalité de blocage de l'utilisateur pour lui ôter tout droit d'accès en modification. MediaWiki n'inclut pas la possibilité de donner des droits à des utilisateurs séparés directement; au lieu de cela, les droits sont toujours accordés à un groupe d'utilisateurs. Le logiciel principal ne contient aucun moyen de modifier les autorisations d'utilisateurs particuliers afin de restreindre ou d'autoriser la modification de pages particulières, sauf si on modifie leur groupe d'utilisateurs.

Restreindre la création de page

Révoquer le « droit de modification » empêche déjà les utilisateurs concernés de créer de nouvelles pages et des pages de discussion.
# Les utilisateurs anonymes ne peuvent pas créer des pages
$wgGroupPermissions['*']['createpage'] = false;

# Seuls les utilisateurs ayant des comptes âgés de quatre jours ou plus, peuvent créer des pages
# Nécessite MW 1.6+
$wgGroupPermissions['*'            ]['createpage'] = false;
$wgGroupPermissions['user'         ]['createpage'] = false;
$wgGroupPermissions['autoconfirmed']['createpage'] = true;

Restriction de la création de pages dans certains espaces de noms

Il existe des droits séparés pour créer des pages de discussion (createtalk) et des pages qui ne le sont pas (createpage). Si vous avez besoin d'un contôle plus fin que cela par espace de noms, cela n'est pas possible au coeur de MediaWiki, et nécessite une extension telle que Extension:Lockdown .

Restreindre l'accès aux fichiers téléversés

Manuel:Droits d'accès aux images , img_auth.php , Manuel:Droits utilisateurs (lecture)

Si vous avez activé la possibilité de téléverser des fichiers, ils seront pris en charge directement par le serveur web correspondant. Comme résultat, l'accès au fichier en fonction du compte n'est pas restreint par défaut.

Avertissement Avertissement : positionner les droits utilisateur "read" (permettant de voir toutes les pages) à false ne protègera que les pages wiki (article, discussion, ...) , mais les fichiers téléversés (images, fichiers, documents... dans les sous-répertoires $wgUploadPath ) resteront toujours consultables en utilisant l'accès direct par défaut.
Utilisez les informations des pages Manuel:Droits d'accès aux images et img_auth.php si vous avez besoin de ne restreindre l'affichage des images et l'accès au téléchargement de fichiers qu'aux utilisateurs connectés.

Exemple de restriction d'accès aux fichiers téléversés dans la configuration du serveur

Si des fichiers sensibles sont téléversés sur un wiki accessible par internet, vous pouvez ajouter des restrictions sur l'endroit de où ils peuvent être demandés. Sous Apache, si votre réseau local était 10.1.2.*, vous pouvez restreindre la mise a disposition des fichiers aux adresses locales par :

  <Location /mediawiki/images>
    Order deny,allow
    Allow from 10.1.2.3
    Deny from all
  </Location>

Restreindre l'affichage

Restreindre l'affichage de toutes les pages

Avertissement Avertissement : Si vous voulez que les utilisateurs anonymes ne puissent pas voir le marquage/code wiki, vous ne devriez pas leur permettre de modifier les pages (voir #Restreindre la modification de toutes les pages ci-dessus). S'ils peuvent éditer n'importe quelle page, ils peuvent utiliser l'inclusion de modèles pour néanmoins afficher les pages qu'ils ne peuvent pas éditer. Il est possible d’éviter cela en utilisant $wgNonincludableNamespaces
Avertissement Avertissement : Cette méthode permet à tout visiteur de voir le wiki après avoir créé un compte. Vous pouvez le combiner avec #Restreindre la création de compte ci-dessus.
Avertissement Avertissement : Les images téléversées seront encore visualisables par quiconque connaissant le nom du répertoire de l'image. Soit pointez $wgUploadPath sur le script img_auth.php et suivez les instructions de Manuel:Droits d'accès aux images , ou utilisez une méthode externe pour protéger les images, telle que .htaccess.
Avertissement Avertissement : Les pages Wiki telles que MediaWiki:Common.css et MediaWiki:Gadget-foo.css peuvent faire partie d'un module ResourceLoader public et peuvent donc voir leur code source exposé à travers load.php . Désactivez $wgUseSiteJs et $wgUseSiteCss pour désactiver cette fonctionnalité.
Si les utilisateurs anonymes ne peuvent pas voir votre page, alors les moteurs de recherche ne le pourront pas non plus. Votre site ne sera pas indexé par Google.

Ajoutez cette ligne à votre fichier LocalSettings.php :

# Désactiver le lecture par les utilisateurs anonymes
$wgGroupPermissions['*']['read'] = false;

# Mais autorisez-les à lire par exemple ces pages :
$wgWhitelistRead = [ "Main Page", "Help:Contents" ];

Définir $wgWhitelistRead permet aux utilisateurs de voir la page d'accueil. Si les noms de page ont plus d'un mot, utilisez un espace «   » entre eux, mais pas un trait de soulignement « _ ».

En plus de la page d'accueil d'un tel site privé, vous pouvez donner accès à la page des modifications récentes (si vous pensez que son contenu n'est pas privé) pour les lecteurs de flux, en ajoutant Special:Recentchanges à $wgWhitelistRead .

Si vous devez protéger même la barre latérale, la page principale ou l'écran de connexion pour une raison quelconque, il est recommandé d'utiliser une authentification de niveau supérieur, telle que .htpasswd ou équivalente.

Avertissement Avertissement : MediaWiki présente un problème de sécurité pour les versions 1.37.0, 1.36.2 et celles de 1.32 à 1.35.4 : il permet la modification non privilégiée d'une page quelconque et l'exécution arbitraire de code JavaScript. Si vous utilisez l'une de ces versions et ne pouvez pas faire la mise à jour vers une version plus récente, veuillez lire Version de sécurité 2021-12/FAQ pour contourner le problème.
Bien que Special:Listusers ne soit pas disponible, il est possible de déterminer si un nom d'utilisateur est correct à partir des erreurs de connexion utilisateur. Vous pouvez vouloir donner un texte commun à MediaWiki:wrongpassword et MediaWiki:nosuchusershort.

Restreindre l'affichage de certaines pages spécifiques

Pour empêcher quiconque sauf les opérateurs système de voir une page, elle peut être simplement supprimée . Pour empêcher même les sysops de l'afficher, il peut être supprimé de manière plus permanente en utilisant Suppression des révisions . Pour effacer complètement le texte de la page, elle peut être supprimée manuellement de la base de données. En tous cas, la page ne peut être modifiée dans cet état, et pour tout motif, elle n'existe plus.

Faire en sorte qu'une page agisse normalement pour certains utilisateurs, mais reste invisible pour d'autres, comme cela est par exemple possible dans la plupart des logiciels de forum, est un sujet très différent. MediaWiki est conçu pour deux modes d'accès de base :

  1. Chacun peut voir toutes les pages individuellement sur le wiki (excepté pour quelques pages spéciales). C'est le mode utilisé par Wikipedia et ses projets frères.
  2. Les utilisateurs anonymes ne peuvent qu'afficher la page d'accueil et la page de connexion, mais ne peuvent pas modifier de page. C'est fondamentalement la même chose que ce qui précède, en termes de mise en œuvre technique (juste une vérification supplémentaire pour chaque affichage de page), c'est pourquoi elle existe. C'est le mode opératoire utilisé par certains wikis privés tels que ceux utilisés par différents comités Wikimedia.

Si vous devez avoir différents droits d'affichage que ceux-là, MediaWiki n'est pas conçu pour votre utilisation. (Voir T3924.) Les données ne sont pas nécessairement clairement délimitées par l'espace de noms, le nom de la page, ou d'autres critères, et il existe beaucoup d'endroits à modifier si vous voulez qu'il en soit ainsi (voir Problèmes de sécurité avec les extensions d'autorisation pour exemple). D'autres logiciels wiki peuvent davantage convenir à vos objectifs. Vous avez été averti. Si vous devez utiliser MediaWiki, il existe trois possibilités de base:

  1. configurez votre wiki en privé et mettez en liste blanche les pages spécifiques qui seront publiques, avec $wgWhitelistRead dans le fichier LocalSetting.php. Voir la section ci-dessus.
  2. configurez des wikis distincts avec une base de données utilisateur partagée , configurez-en un comme visible et l'autre comme invisible (voir ci-dessus) et établissez des liens interwiki entre eux.
  3. installer une bidouille tiers ou une extension. Vous devrez le réappliquer à chaque mise à niveau du logiciel. Il se peut que le logiciel ne soit pas mis à jour immédiatement lorsque de nouveaux correctifs de sécurité ou des mises à niveau de MediaWiki sont publiées. Les bidouilles tierces ne sont bien sûr pas prises en charge par les développeurs de MediaWiki, et si vous rencontrez des problèmes, vous ne devez pas poser de question à MediaWiki-l, #mediawiki ni aux autres canaux de support officiels. Les nombres de greffons sont listés dans Catégorie:Page des droits utilisateur d'extensions spécifiques . Lisez à propos de Problèmes de sécurité avec les extensions d'autorisation si vous envisagez d'utiliser l'un d'eux.

Restreindre l'exportation

Voir aussi : Manuel:Paramètres de Special:Export

Il n'est pas possible d'exporter le contenu d'une page qui ne peut pas être lue depuis r19935 .

Retrait du lien de connexion sur toutes les pages

Il est possible d'enlever le lien de connexion/création de compte du coin supérieur droit sur toutes les pages, car les utilisateurs peuvent toujours aller à Special:SpecialPages > Special:UserLogin pour se connecter. Dans LocalSettings.php utilisez (testé avec MediaWiki 1.16)

function NoLoginLinkOnMainPage( &$personal_urls ){
    unset( $personal_urls['login'] );
    unset( $personal_urls['anonlogin'] );
    return true;
}
$wgHooks['PersonalUrls'][]='NoLoginLinkOnMainPage';

Retrait des comptes

Si vous souhaitez supprimer complètement l’accès à un utilisateur, par exemple, sur un simple wiki privé, il n'est pas possible de supprimer simplement le compte (à moins qu'aucune modification n'ait été effectuée ); vous pouvez le bloquer , mais il pourra encore lire les pages. Cependant, en utilisant l’extension User Merge and Delete , vous pouvez fusionner le compte dans un autre et supprimer l’ancien; le compte d'origine va alors « disparaître ». Si vous souhaitez préserver la lisibilité de l'historique (c'est-à-dire que les modifications de l'utilisateur soient toujours affichées sous son nom), vous pouvez créer un nouveau compte, par exemple avec le nom d'utilisateur « OriginalUserName (désactivé) » puis fusionnez « OriginalUserName » avec l'ancien, ou utilisez même l'extension Renameuser pour renommer « OriginalUserName » en « AnotherUserName », puis créer un compte sous « OriginalUserName » et y fusionner « AnotherUserName ». De cette manière, « OriginalUserName » sera complètement « usurpé » (si vous avez défini un mot de passe non nul).

Depuis MediaWiki 1.16.0, il est possible d'initialiser $wgBlockDisablesLogin à vrai pour empêcher l'accès et la lecture aux utilisateurs bloqués.

Autres restrictions

Vous voudrez peut-être que les pages ne soient modifiables que par leur créateur, ou interdire la visualisation de l'historique, ou de plusieurs autres choses. Aucune de ces fonctionalités n'est disponible dans la version originale de MediaWiki. Si vous avez besoin d'autorisations plus détaillées, consultez la section #Voir aussi pour des liens vers d'autres packages wiki conçus à cet effet, ainsi que les bidouilles qui tentent de contourner MediaWiki en quelque chose qu'il n'est pas conçu mais peut fonctionner quand même.

Voir aussi

Il existe des pages relatives de manuel et d'aide qui peuvent avoir un intérêt pour vous :

D'autres logiciels wiki peuvent présenter une meilleure prise en charge pour le contrôle d'accès plus fin que MediaWiki:

  • MoinMoin
  • TWiki
  • TikiWiki - possède un contrôle d'accès complètement configurable des fonctionalités et des niveaux de permission.

Si vous voulez un meilleur contrôle d'accès tout en utilisant MediaWiki, voici une liste d' extensions et de bidouilles pour autoriser les restrictions impossibles dans le propre logiciel. Ces produits peuvent être périmés (vérifiez la version à laquelle ils s'appliqent). Veuillez ne pas demander d'aide sur les canaux du support officiel MediaWiki lorsque le problème que vous avez concerne une bidouille tierce.