Manual:Empêcher l'accès

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Preventing access and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎فارسی • ‎中文 • ‎日本語

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

La plupart des exemples ont besoin d'avoir modifié le fichier de configuration LocalSettings.php de MediaWiki. Les extraits de code sans instructions qui les accompagnent doivent être ajoutés à LocalSettings.php pour être effectifs. Pour ajouter une ou plusieurs lignes dans le fichier, suivez ces étapes :

  1. S'il y a un ?> à la fin du ficher, enlevez-le. Cela n'est pas nécessaire et peut nuire dans certaines situations.
  2. Ajoutez la ligne à la fin du fichier, en utilisant un éditeur de texte. Le fait qu'il y ait des lignes blanches avant ou après l'addition n'a pas d'importance. N'utilisez pas Notepad de Windows, qui peut ajouter un "indicateur d'ordre des octets" (BOM - Byte Order Mark) et empêcher le fichier d'être lu correctement. Les symptomes typiques de la présence de BOMs sont les pages blanches et les erreurs concernant les entêtes déja envoyées. Pour supprimer le BOM du fichier, vous devez utiliser un éditeur hexadécimal. Windows WordPad semble convenir, tout comme Notepad++. La suppression des BOMs peut aussi se faire avec l' éditeur de texte Vim en ouvrant le fichier dans Vim, entrez :set nobomb, puis réenregistrez le. Si vous utilisez un Mac, TextEdit fera également le travail.

Pour plus d'informations sur la modification de LocalSettings.php, veuillez lire 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.
# Disable reading by anonymous users
$wgGroupPermissions['*']['read'] = false;

# Disable anonymous editing
$wgGroupPermissions['*']['edit'] = false;

# Prevent new user registrations except by sysops
$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.

# Prevent new user registrations except by sysops
$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, son adresse courriel sera également marquée comme 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 les opérateurs système de créer des comptes :

# Prevent new user registrations by anyone
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['sysop']['createaccount'] = false;

Pour ajouter un message en haut du formulaire de connexion, modifiez MediaWiki:Loginprompt. A la place, vous pouvez utiliser ce code dans votre LocalSettings.php:

function efLoginFormMessage( &$template ) {
	$template->set( 'header', "(For an account to edit articles with, contact Mrs. Nurdsbaum in room B-303, nelda.nurdsbaum@example.org )");
	return true;
}
$wgHooks['UserLoginForm'][]='efLoginFormMessage';

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:

# Only allow autoconfirmed users to edit Project namespace
$wgNamespaceProtection[NS_PROJECT] = array( 'autoconfirmed' );

# Don't allow anyone to edit non-talk pages until they've confirmed their
# e-mail address (assuming we have no custom namespaces and allow edits
# from non-emailconfirmed users to start with)
# Note for 1.13: emailconfirmed group and right were removed from default
# setup, if you want to use it, you'll have to re-enable it manually
$wgNamespaceProtection[NS_MAIN]     = $wgNamespaceProtection[NS_USER]  =
$wgNamespaceProtection[NS_PROJECT]  = $wgNamespaceProtection[NS_IMAGE] =
$wgNamespaceProtection[NS_TEMPLATE] = $wgNamespaceProtection[NS_HELP]  =
$wgNamespaceProtection[NS_CATEGORY] = array( 'emailconfirmed' );

# Only allow sysops to edit "Policy" namespace
$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 Manual:Using custom namespaces et Manual:Namespace_constants 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.
# Anonymous users can't create pages
$wgGroupPermissions['*']['createpage'] = false;

# Only users with accounts four days old or older can create pages
# Requires MW 1.6 or higher.
$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

Manual:Image Authorisation , 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 Manual:Image Authorisation 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 v1.10 en utilisant $wgNonincludableNamespaces (ou dans les versions précédentes utilisant l’extension NonincludableNamespaces ), mais il est possible que cela n’ait pas été testé de manière approfondie.
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 Manual:Image Authorization , ou utilisez une méthode externe pour protéger les images, telle que .htaccess.
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 :

# Disable reading by anonymous users
$wgGroupPermissions['*']['read'] = false;

# But allow them to read e.g., these pages:
$wgWhitelistRead =  [ "Main Page", "Help:Contents" ];

# Allow Jobs to be run
$wgWhitelistRead = [ "Special:RunJobs" ];

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 principale 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.

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 avec l'extension Oversight . 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 bug 1924.) 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 security issues with authorization extensions 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 Category:Page des droits utilisateur d'extensions spécifiques . Lisez à propos de security issues with authorization extensions si vous envisagez d'utiliser l'un d'eux.

Restreindre l'exportation

Voir aussi : Manual:Parameters_to_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. parce que les utilisateurs peuvent encore 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
  • GroupWikiBase - basé sur MediaWiki (documentation limitée, petit projet)
  • TWiki
  • TikiWiki - possède un contrôle d'accès complètement configurable des fonctionalités et des niveaux de permission.

Si vous voules 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.