DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:install:permissions

Configuration des droits d'accès aux fichiers et répertoires

DokuWiki stocke ses données dans des fichiers texte. Pour pouvoir faire cela, DokuWiki a besoin de droits suffisants (propriétaires et permissions) pour écrire dans ces fichiers. Dans le même temps, laisser les autorisations trop lâches peut présenter des risques de sécurité.

DokuWiki est exécuté par PHP, donc le processus PHP doit être capable d'écrire dans ces fichiers. Le processus PHP s'exécute généralement avec les autorisations du serveur Web, de sorte que le serveur Web doit pouvoir écrire dans ces fichiers.

Les autorisations suivantes doivent être modifiées pour que les fonctions DokuWiki respectives fonctionnent:

  • les répertoires data/ et data/tmp/ : tous les fichiers dans et sous ces répertoires doivent être accessibles en écriture par le processus web pour que DokuWiki fonctionne.
  • le répertoire lib/plugins/ doit être accessible en écriture par le processus Web pour que le Gestionnaire d'extensions fonctionne.
  • le répertoire lib/ doit être lisible par le public pour les feuilles de style à afficher. 755 fonctionne bien.
  • le répertoire lib/tpl doit être accessible en écriture pour que le processus web puisse installer des thèmes.

Les fichiers suivants sont copiés par le fichier install.php à partir des fichiers *.dist respectifs et reçoivent les permissions correctes pour le processus Web automatiquement :

  • dans le répertoire conf/, les fichiers suivants doivent être accessibles en écriture par le processus web:

Windows (en utilisant Microsoft IIS)

Pour que les fichiers des répertoires data et conf soient inscriptibles, vous devez donner un accès “Write” au Compte invité Internet (IUSR_computername) ou le groupe de serveurs Web approprié (comme IIS_WPG). Cela se fait à travers le menu contextuel clic-droit sur les dossiers et fichiers en choisissant “Propriétés” et en sélectionnant l'onglet “sécurité”.

Une bonne description avec des captures d'écran est disponible ici.

Note: Si vous utilisez PHP sous IIS6 avec le module FastCGI FastCGI Extension pour IIS 6.0 , le compte d'utilisateur qui a besoin des autorisations sera très probablement “NETWORK SERVICE” plutôt que le compte Invité Internet.

Pour IIS 7/7.5, il s'agira du compte de pools d'applications. Il n'est pas sûr que vous puissiez ajouter ceci via l'interface graphique. Essayez ce qui suit:

  • Sélectionner un utilisateur ou un groupe accessible en cliquant sur Ajouter …
  • Si cela ne fonctionne pas, pensez à utiliser le groupe “Users” local à la machine. Cela inclura généralement le compte du pool d'applications.

Cependant, il inclura tout autre compte ajouté à ce groupe local sur la machine, donc si cela inclut des utilisateurs qui ne devraient normalement pas avoir ces permissions, c'est une option moins viable.

  • Si vous ne pouvez pas trouver ou ajouter le compte via l'interface graphique, pensez à l'outil de ligne de commande 'icacls': icacls c:\pathtodirectory /grant “IIS AppPool\yourAppPoolName”:(OI)(CI)F - Cela vous donnera un contrôle total avec propagation dans le répertoire spécifié.

Pour plus d'informations, votre moteur de recherche préféré avec ICACLS.

Ajoutez ceci via l'interface graphique: http://technet.microsoft.com/fr-fr/library/cc771170%28v=ws.10%29.aspx

Remarque: Consultez le programme d'installation de la plateforme Web v3.0 pour les composants nécessaires et ajoutez IIS: Restrictions IP et de domaine (sous produits)

Exécutant Windows Server 2008, R2 Standard. IIS 7.5 cela a fonctionné:
Ajouter un utilisateur comme décrit ci-dessus avec le nom: COMPUTERNAME\IUSER_COMPUTERNAME et leur donner le contrôle total. Le nom complet de l'ordinateur est ComputerName.Domain.com et le nom de l'ordinateur était juste ComputerName sans le domaine. Utiliser le nom de l'ordinateur plutôt que le nom complet de l'ordinateur.

Unix-like

Cela s'appliquera si vous installez DokuWiki sur un système Linux, MacOS X ou autre système Unix. C'est probablement aussi vrai pour un espace d'hébergement loué.

Remarque: sous Linux, après activation des ACL supplémentaires permettent une gestion avancée des droits sur le système de fichiers grâce aux commandes “getfacl” et “setfacl” - les autorisations de fichier décrites ci-dessous peuvent être sans signification s'il n'y a pas de droits selon les FACL.

Autorisations de fichier, un petit rappel

Ce n'est pas l'endroit pour expliquer le système d'autorisation de fichier UNIX en détail. Voir Wikipedia pour cela. Voici juste un petit rappel :

  • Les droits pour un fichier dépendent du propriétaire et du groupe d'utilisateur définis selon qui tente d'accéder au fichier.
  • Il y a des autorisations pour lire, écrire et exécuter.
  • Chaque processus UNIX s'exécute avec les autorisations d'un utilisateur du système d'exploitation et de ses groupes.
  • Le serveur web est un processus UNIX.
  • PHP s'exécute généralement dans le cadre du serveur Web.
  • DokuWiki fonctionnera avec les permissions du processeur PHP.
  • DokuWiki a besoin de lire, écrire et exécuter des permissions pour les répertoires dont il a besoin pour créer des fichiers.
  • DokuWiki a besoin d'autorisations de lecture et d'écriture pour les fichiers sur lesquels il doit écrire.
  • DokuWiki a besoin d'autorisations en lecture seule pour les fichiers et répertoires pour lesquels il n'a pas besoin d'écrire

Pour trouver l'utilisateur et le groupe que votre processus PHP (serveur web) exécute, vous pourriez essayer d'exécuter le script PHP suivant:

<?php
 
if(function_exists('posix_geteuid')){
    // use posix to get current uid and gid
    $uid   = posix_geteuid();
    $usr   = posix_getpwuid($uid);
    $user  = $usr['name'];
    $gid   = posix_getegid();
    $grp   = posix_getgrgid($gid);
    $group = $grp['name'];
}else{
    // try to create a file and read its ids
    $tmp = tempnam ('/tmp', 'check');
    $uid = fileowner($tmp);
    $gid = filegroup($tmp);
 
    // try to run ls on it
    $out = `ls -l $tmp`;
    $lst = explode(' ',$out);
    $user  = $lst[2];
    $group = $lst[3];
    unlink($tmp);
}
 
echo "Your PHP process seems to run with the UID $uid ($user) and the GID $gid ($group)\n"; ?>

Alternativement, vous pouvez utiliser un script simple avec la fonction phpinfo() et voir la section Utilisateur/Groupe en sortie :

<?php
phpinfo();
?>

Permissions courantes

Voici les valeurs les plus couramment utilisées pour définir les droits sur les répertoires et les fichiers.

répertoires fichiers résultat
0700 0600 lire/écrire pour le propriétaire seulement. Le propriétaire doit être le même que l'utilisateur du processus PHP.
0770 0660 lire/écrire pour le propriétaire et le groupe. L'utilisateur du processus PHP doit être dans le groupe d'utilisateurs
0777 0666 lire/écrire pour tout le monde. Dangereux car tout le monde ayant accès au serveur peut écrire et supprimer vos fichiers. A n'utilisez uniquement qu'en dernier recours sur des machines approuvées, PAS sur un serveur d'hébergement mutualisé bon marché.

Quelles permissions définir ?

Alors, comment devriez-vous définir les autorisations des répertoires mentionnés ci-dessus ? En général, vous devriez essayer de définir les autorisations aussi restrictives que possible, mais il n'y a pas de règle générale sur les autorisations que vous devez définir pour votre système.

Si vous avez un accès root (droits super utilisateur), vous pouvez changer le propriétaire des fichiers et des répertoires. Cela signifie que vous pouvez modifier le propriétaire des fichiers DokuWiki pour l'utilisateur du serveur Web (par exemple www-data ou nobody) et définir les droits d'accès au serveur Web uniquement. Par exemple. 0600 pour les fichiers et 0700 pour les répertoires.

Si vous êtes un utilisateur normal, vous pouvez être membre du groupe serveur Web et modifier les fichiers appartenant à ce groupe. Ensuite, définissez les fichiers et les répertoires à écrire par ce groupe. Par exemple. 0660 pour les fichiers et 0770 pour les répertoires.

Si vous êtes seul sur le serveur ou dans un environnement totalement fiable, vous pouvez simplement modifier les autorisations pour donner accès à tout le monde. Par exemple. 0666 pour les fichiers et 0777 pour les répertoires.

Si vous utilisez un serveur Web partagé, il est recommandé de contacter l'administrateur de votre serveur Web ou le support d'hébergement et de demander de l'aide et des recommandations. Dirigez-les vers cette page et ils devraient savoir ce que vous devez faire.

Note : Lorsque vous avez trouvé les paramètres corrects pour vos répertoires, vous devez modifier les paramètres de configuration fmode et dmode pour refléter ces paramètres.

Comment poser les permissions ?

En ligne de commande, utilisez chmod pour modifier les permissions, chown pour changer le propriétaire des fichiers et des répertoires et chgrp pour changer le groupe. (Notez que chown et chgrp peuvent ne pas être disponibles ou fonctionner comme prévu si vous utilisez un fournisseur d'hébergement mutualisé.)

Lorsque vous accédez à votre serveur via FTP, consultez le manuel de votre outil FTP. La plupart des outils graphiques FTP ont une boîte de dialogue pour définir les permissions (souvent dans le menu contextuel).

Sur certains systèmes UN*X-like, vous pouvez utiliser les listes de contrôle d'accès du système de fichiers pour permettre à l'utilisateur PHP d'écrire dans les fichiers. Pour le ZFS de Sun, consultez le Solararis ZFS Administrator's guide pour plus de détails. Pour les systèmes de fichiers compatibles POSIX, tels que Linux ext2/3 ou UFS de Sun sur Solaris 8 ou version ultérieure, consultez les pages man de setfacl et getfacl.

Vérifiez auprès de votre administrateur système: certains systèmes de sauvegarde ignorent les ACL sur les fichiers. Si elles sont disponibles, les listes de contrôle d'accès sont plus sécurisées que l'ajout de l'utilisateur PHP à votre groupe, en donnant les fichiers à l'utilisateur PHP, ou en rendant les fichiers accessibles en écriture.

En cas de problèmes

Dans certaines situations, vous pouvez constater que vous ne pouvez pas supprimer ou modifier les fichiers créés par DokuWiki. Voir fixperms.php (en anglais) pour une solution possible.

Astuce: Utilisation du Bit setgid

Si vous avez un accès en ligne de commande à votre serveur, vous pouvez utiliser le bit setgid pour conserver les autorisations de suppression des fichiers sous le répertoire data/ bien qu'ils aient été créés par le serveur Web. Sur les répertoires où le bit setgid est défini, les fichiers/répertoires nouvellement créés appartiennent au même groupe que le répertoire setgid. L'exemple suivant montre comment réaliser une telle configuration pour l'utilisateur www-data qui appartient au groupe foo :

  • répertoire /data :
    • votrewiki> chmod -R g=rwX,u=rwX,o=rX data/
    • votrewiki> chown -R www-data:foo data/
  • tout, dans le répertoire /data :
    • votrewiki/data> chmod 2775 {attic,cache,index,locks,media,meta,pages,tmp}
    • votrewiki/data> chown www-data:foo {attic,cache,index,locks,media,meta,pages,tmp}

Afin de conserver pleinement les permissions correctes, vous devez également changer le paramètre de configuration dmode en 02775 ou similaire afin que les nouveaux répertoires aient également le bit setgid correctement défini.

Comment puis-je créer des pages spécifiques dans un wiki en lecture seule ?

Crédits

Traduction : — Digitalin 2018-01-27 17:50

fr/install/permissions.txt · Dernière modification : 2022-09-23 12:27 de JeromeP

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki