# Coppermine Photo Gallery v1.5.x: Documentation et manuel

# Configuration des permissions

Tout script PHP qui est supposé tourner sur un serveur web nécessitant les autorisations en lecture et en exécution sur le serveur. En conséquence, Coppermine à besoin de ces autorisations.
En outre, Coppermine a besoins d'accès en écriture sur un certain nombre de fichiers et dossiers qui sont sur le serveur web afin d'accomplir les tâches suivantes:

- Lors de l'installation, Coppermine doit créer et écrite dans le fichier "config.inc.php" du répertoire "include" afin de stocker les informations de connexion et d'accès à la base de donnée MySQL pour utiliser Coppermine et pour empêcher l'installateur d'être lancé une deuxième fois après une installation réussie.
- A l'utilisation du processus de téléchargement http, Coppermine doit enregistrer les fichiers qui ont été téléchargés dans les sous-répertoires que vous ou vos utilisateurs ont crées dans le répertoire albums de Coppermine
- Quelle que soit la méthode de téléchargement, Coppermine va crée un fichier pour la vignette et un autre pour l'image intermédiaire (si vous avez configuré Coppermine pour cela) puis, les stockera dans un sous-dossier à l’intérieur du dossier "albums"
- Si vous avez activé les log à un moment, le script aura besoin d'un accès en écriture pour le répertoire "logs"
- Le dossier "plugin" doit être paramétré lui aussi avec des droits d'accès en écriture si vous voulez pouvoir utiliser la possibilité de téléchargement des fichiers zip dans le gestionnaire de plugins

Par défaut, les fichiers et dossiers sur un serveur web ne sont généralement pas accessibles en écriture, de sorte que vous aurez probablement à modifier les autorisations avant l'installation, pour les raisons mentionnées ci-dessus. Il est vraiment obligatoire que vous définissez / changez (CHMOD) les permissions - ou vous rencontrerez probablement des problèmes tôt ou tard.

Pour être en mesure de configurer les autorisations correctement, vous devez comprendre comment elles fonctionnent: il y a les permissions read (lecture), write (écriture) et execute (exécution) (avec comme abréviations rwx) pour chaque fichier et dossier. Les autorisations sur un dossier parent peut se propager dans un dossier "enfant" ou aux fichiers qu'ils contiennent, mais il est possible de modifier vos paramètres afin que les autorisations non souhaitées ne se propage aux sous-dossiers et fichiers résident.

Si vous ne savez pas comment définir des autorisations correctement, demandez de l’aide à votre hébergeur. Demander de l'aide sur cet aspect sur le forum d'aide de Coppermine n’a pas de sens - nous ne pouvons pas vous dire quel est le niveau d'autorisations qui doit être appliquée, sur votre serveur. Seul votre hébergeur ne peut répondre à cette question.

## Permissions sur les types de serveur web différents

Il existe des différences entre les différents systèmes d'exploitation qui sont utilisés par les serveurs Web. En conséquence, il y a un certain nombre d'approches différentes concernant ce sujet. Comme Coppermine est conçu pour fonctionner sur de nombreuses configurations différentes, nous avons inclus quelques instructions de base. Ceux qui ont de bonnes connaissances de ces paramétrages pourront trouver ces instructions un peu générales et manquant de détails.

Note: ce n'est pas votre ordinateur local qui gère les permissions, mais plutôt, le système d'exploitation utilisé par votre serveur web. Si vous n'êtes pas sûr de du système d'exploitation qui est en cours d'exécution sur le serveur, essayez les instructions CHMOD en premier - la plupart des serveurs web exécutent une version d'Unix / Linux.

Par conséquent, voici un résumé comment les permissions travail sur certaines configurations serveur:

### Apache sur Unix/Linux (CHMOD)

- #### Notions de base

  Il existe différentes versions d’Unix / Linux - toutes partagent une même approche commune. En se référant à cette architecture, le mot "Lunix" est utilisé à la fois pour les dérivés d’Unix et Linux. L’autorisation "Read" s'appliquent à des fichiers qui ne sont pas exécutés, mais seulement hébergés, par exemple, les fichiers texte ou HTML. "Write" est nécessaire pour créer dynamiquement des fichiers, les modifier ou les supprimer. "Execute" est nécessaires pour lancer les fichiers exécutables, par exemple, les fichiers de script comme PHP. Pour faire tourner correctement des pages web qui sont pilotées par PHP les autorisations les plus élémentaires qui sont nécessaires, sont donc «read» et «execute» (en abrégé r-x).
  Les paramètres possibles sont les suivants:
  - `r--` ... Lecture uniquement
  - `r-x` ... Lecture et exécution
  - `rwx` ... Lecture, écriture et exécution
  Inutile de dire, que d'autres combinaisons sont techniquement possibles (comme-wx, - x ou-w-), mais elles n’ont que très peu de sens dans la configuration d’un serveur et seront ignorées dans cette documentation.

- #### Groupes dans Lunix

  Lunix utilise un jeu de permissions pour trois groupes, dont chacun peut être appliqué indépendamment. Ce sont les groupe: owner (propriétaire), group (groupe) et world. (monde) L'utilisation de ce jeu, permet de dicter si un utilisateur qui possède un fichier a l'autorisation de le modifier ou de l’effacer (autorisation en écriture), tandis que les autres utilisateurs ne seront en mesure que de lire / voir et peut-être exécuter le fichier. Sur votre serveur, ces paramètres d'autorisations pour les trois groupes possibles sont écris sur une seule ligne (dans l'ordre "owner", "group", "world").
  - `rwxrwxrwx` ... Lecture, écriture et exécution (rwx) pour tous les 3 groupes
  - `rwxr-xr-x` ... Autorisations rwx permissions pour le propriétaire, autorisation r-x pour tous les autres
  - `r-xr-xr-x` ... Lecture et exécution uniquement, pour tous les groupes

- #### "Diablotins" des serveurs Web (Webserver daemon)

  Même si vous (l'utilisateur qui possède les fichiers sur votre serveur et qui a le contrôle sur les autorisations) êtes en mesure d'accéder à un fichier (par exemple en utilisant votre client FTP), le script Coppermine peut ne pas être en mesure de faire de même. C’est souvent causé par une option de configuration particulière des serveurs: les services (sur Lunix souvent appelés "daemons" (diablotins)) peuvent s'exécuter de manière différente suivant un contexte particulier ou d'un utilisateur en spécifique qui serait différent de l'utilisateur qui est autorisé à accéder aux fichiers. Sur la plupart des serveurs, le service du serveur web (Apache) utilise l’utilisateur "nobody" (personne). De cette façon, le serveur peut être protégé contre les attaques de hackeurs. Par conséquent, le paramétrage des permissions sur un serveur avec cette configuration particulière ne fonctionne pas uniquement pour le "owner" (propriétaire), vous devez définir les permissions pour les deux autres groupes "group" et "world" (au moins pour le groupe dans lequel se trouve le diablotin).

- #### Arithmétique binaire

  Comme vous pouvez le voir, les autorisations peuvent être soit "on" ou "off" - ce qui équivaut aux deux états différents qu'un bit de données peut avoir dans en arithmétique binaire (et donc aussi dans le monde de l'informatique). Comme nous avons trois types de permissions différents (read, write, execute) nous aurons besoin de trois bits pour attribuer un jeu de permissions. Le bit le plus élevé est le "read" la décimale "4" est utilisée pour le représenter. Le bit du milieu "write" est attribué à la décimale "2", le bit le plus bas "execute" est représenté par la décimales "1". Cela peut paraître un peu difficile à comprendre au début, surtout si vous n'avez pas utilisé l'arithmétique binaire avant, mais en réalité, c’est assez simple. Si vous souhaitez en savoir plus, cherchez via Google. Il est plus facile de comprendre si vous regardez quelques exemples:

  Permission | Valeur du bit | Installer ? | Valeur
  --- | --- | --- | ---
  read | 4 |  | 4
  write | 2 |  | 2
  execute | 1 |  | 1
  Somme (résultant de la valeur des bytes) | 7

  Permission | Valeur du bit | Installer ? | Valeur
  --- | --- | --- | ---
  read | 4 |  | 4
  write | 2 |  | -
  execute | 1 |  | 1
  Somme (résultant de la valeur des bytes) | 5

  Permission | Valeur du bit | Installer ? | Valeur
  --- | --- | --- | ---
  read | 4 |  | 4
  write | 2 |  | 2
  execute | 1 |  | -
  Somme (résultant de la valeur des bytes) | 6

- #### A quoi bon tout cela ?

  Au lieu d'avoir à mémoriser et à écrire `rwxrwxrwx` pour chaque fichier ou dossier dans votre installation, vous pouvez maintenant écrire `777` à la place. La même chose s'applique pour `rwxr-xr-x`, vous pouvez écrire `755`, à la place.

- #### Application FTP

  Le paramétrage des permissions en utilisant votre application FTP sera possible pour la majorité des utilisateurs hébergés sur un serveur web distant. En fonction de l'application FTP que vous utilisez, l'interface utilisateur sera quelque peu différente: certaines applications vous permettront d'entrer la commande CHMOD en saisissant les nombres (777 or 755), d'autres vous proposeront des boites d'options à cocher vous permettant de déterminer les autorisations séparément pour chaque groupe. Les applications les plus évoluées vous proposeront les deux mécanismes. Comme cette documentation ne peut pas couvrir individuellement toutes les applications FTP disponibles, la méthode exacte sera peut être un peu différente de celle que vous avez.
  Votre application FTP affiche probablement deux fenêtres, une montrant vos fichiers locaux, l'autre affichant les fichiers sur votre serveur. Dans la fenêtre montrant les fichiers du serveur, allez dans le répertoire contenant les fichiers de Coppermine. Sélectionnez le dossier "albums" se trouvant dans le répertoire de Coppermine. Depuis le menu contextuel (clic droit!), choisissez "propriétés" (l'item de menu peut aussi s'appeler "chmod" ou autrement). La boite de dialogue des permissions s'affiche dans une fenêtre pop up. Choisissez les permissions appropriées comme suggéré plus haut (777 ou 755, en fonction de la configuration de votre serveur). Si vous avez une case à cocher qui autorise l'application des permissions pour tous les sous-dossiers et fichiers, cochez là. Si vous ne l'avez pas, ce n'est pas grave. Puis cliquez sur "OK" dans la boite de dialogue pour appliquer les permissions. Rappelez-vous que votre application FTP n'a pas la possibilité de savoir quelles sont les permissions qui sont actuellement appliquées, donc il ne faut pas toujours croire les informations affichées dans la boite de dialogue: même si les permissions apparaissent comme correctes, ce n'est pas obligatoirement le cas, et vous devrez les appliquer de nouveau sans savoir pourquoi.
  Après avoir appliqué les permissions au répertoire "albums", faites la même chose avec le répertoire "include" se trouvant dans le répertoire de Coppermine.
  Pour une liste de toutes les applications FTP recommandées, regardez dans la documentation des développeurs → Outils recommandés par les développeurs → clients FTP.

- #### Panneau de contrôle de l'hébergement

  Certains hébergeurs ne vous donnent pas la possibilité d'accéder à votre site via votre client FTP, ou ne permettent pas à celui ci d'exécuter les commandes CHMOD. Si c'est le cas, vous avez probablement une interface de gestion de votre hébergement (cpanel par exemple) pour appliquer les permissions aux fichiers et dossiers. En fait, ce n'est pas un problème, la méthode d'application des permissions n'est pas différente de celle décrit plus haut dans la section "Applications FTP": Allez dans le répertoire "albums" et appliquez les permissions nécessaires pour permettre l'accès en écriture à tous les fichiers et répertoires contenus dans le répertoire "albums". Faites de même pour le répertoire "include".

- #### Accès Shell

  Si vous avez un accès shell à votre serveur vous pouvez appliquer la commande CHMOD native à vos fichiers et dossiers. Allez dans le répertoire contenant les fichiers Coppermine avec votre accès shell, puis appliquez les permissions aux dossiers "albums" et "includes" ainsi qu'à l'ensemble de leurs contenus. Comme expliqué plus haut, l'utilisateur utilisé par le "diablotin" apache a besoin d'accès en écriture, vous devrez donc utiliser un CHMOD de 777 ou 755, en fonction de la configuration du serveur.

- #### Propriété (CHOWN)

  Dans de rares cas, vous pouvez rencontrer des problèmes de droits qui ne peuvent pas être résolus en paramétrant les permissions en utilisant la commande CHMOD - a la place, vous devrez changer les propriétés des répertoires/fichiers en utilisant la commande CHOWN qui ne fonctionne que sur les systèmes d'exploitations compatibles Posix. Les problèmes relatifs a la propriété arrivent généralement lorsque l'utilisateur qui télécharge par FTP est différent de celui qui utilise le serveur web. Ce qui est bête c'es qu'il n'y a aucun controle dans les clients FTP qui permettent de vérifier ou de changer cette "possession". c'est pourquoi, si ce n'est pas vous qui administrez le serveur ou que vous n'avez pas d'accès shell, vous serez obligé de demander de l'aide à votre hébergeur.

### Apache on Windows

Vous devez comprendre qu'il n'y a pas de commandes comme CHMOD sur les systèmes d'exploitations Windows - Cette commande est uniquement disponible sur Unix/Linux, même si votre application FTP affiche des options CHMOD. Si vous essayez d'appliquer des commandes CHMOD sur Windows, la commande sera simplement ignorée et rien ne sera fait. Malgré tout il y a aussi des permissions sur Windows.

Les services des serveurs web apache utilisent un utilisateur particulier - si vous avez un accès total au serveur, vérifiez dans le contrôle des services lequel est utilisé. Si vous ne pouvez pas, demandez votre hébergeur.

Pour un fonctionnement temporaire, paramétrez les permissions au niveau répertoires et les fichiers comme expliqué dans la section IIS sur Windows, mais pas pour le IUSR (qui n'existe que sur IIS), mais pour "everyone". Comme autoriser "everyone" à avoir la permission de lecture, d'écriture et d'exécution peut présenter un risque de sécurité, ce n'est pas recommandé du tout.

### IIS sur Windows

Pré-requis: vous aurez besoin d'un accès administrateur total sur votre serveur pour pouvoir exécuter ce processus. Si vous ne faites pas tourner vous même votre serveur, votre hébergeur à probablement configuré une interface web pour vous permettre de modifier les permissions. Si vous n'êtes pas sur, contactez votre hébergeur.

Les dialogues peuvent être différents en fonction de la version de Windows utilisée:

- Lancez l'explorateur Windows sur votre serveur et allez vers le répertoire contenant vos fichiers Coppermine
- Faites un clic-droit sur le répertoire dont vous voulez changer les permissions
- Choisissez "Propriétés"
- Dans la boite de dialogue propriétés, cliquez sur l'onglet "Sécurité"
- Sélectionnez l'utilisateur "Compte Internet Invité (Hebergeur\IUSR_hebergeur). Si il n'existe pas encore, utilisez l'option "Ajouter..." et ajoutez cet utilisateur particulier
- Cochez la case "Autoriser"- pour l'accès en "Ecriture"-
- Cliquez sur le bouton "Avancé"
- Juste pour vérifier que les permissions sont appliquée à tous les répertoires et fichiers contenus dans le répertoire que vous être en train de modifier, cochez la case "Réapplique les permissions à tous les objets "enfants" et activez l'application des permissions à tous les objets hérités"
- Cliquez sur "OK"
- Répondre "OUI" dans la boite de dialogue de confirmation qui vous demande si toutes les permissions doivent être remplacées"
- En fonction du nombre d'objets "enfants" et de la vitesse de votre système d'exploitation, attendez que l'ensemble des permissions aient été changées et que la fenêtre d'état de Windows disparaisse
- Cliquez sur "OK" pour fermer la boite de dialogue des permissions

Vous devez comprendre qu'il n'y a pas de chose comme CHMOD sur les systèmes d'exploitation Windows - cette commande n'est disponible que sur Unix/Linux, même si votre application FTP affiche des options CHMOD. Si vous essayez d'applique une commande CHMOD sur Windows, la commande sera simplement ignorée et rien ne sera changé. Par contre, il y a aussi un système de permissions sur Windows.

## Demander de l'aide à propose de problèmes liés aux permissions

La plupart des utilisateurs arrivent avec une habitude de Windows (ou n'ont aucune idée de comment fonctionne les permissions) et demande fréquemment sur le forum d'aide de Coppermine "Pourquoi est ce que c'est si compliqué ? Pourquoi ne faites vous pas un script qui gérera ces problèmes compliqués de permissions pour moi ?". La réponse est terriblement simple: parce que nous ne pouvons pas.

Coppermine a été conçu pour fonctionner avec un maximum de plateformes et de systèmes d’exploitation. Les permissions nécessaires à paramétrer sont liées à la manière dont le système d'exploitation de votre serveur web fonctionne- Elles ne sont pas liées directement à Coppermine. Un script ne peut pas assigner des permissions par lui-même s’il n'a pas les privilèges pour le faire.

Pensez à ça comme à la structure d'une armée: un soldat qui a un rang bas dans la hiérarchie ne peut pas se promouvoir lui même comme général; seuls les officiers qui ont un grade supérieur au sien peuvent le promouvoir à un rang supérieur. Ils ne voudront pas non plus en faire un général tout de suite, mais juste lui donner le rang lui permettant de faire correctement son travail (par exemple ils feront d'un soldat première classe un caporal).

Comme la configuration des serveurs web sont très différentes, nous ne pouvons pas vous donner d'instruction simples comme "faites un CHMOD à 755 et ce sera bon". Même si ça peut être le cas sur la plupart des hébergements mutualisés, ce n'est peut être pas le cas pour vous. Sur certaines configurations serveur, ça ne suffira pas. Sur d'autres, cela posera un risque de sécurité. De plus, sur certaines machines, on ne pourra pas appliquer cette commande parce qu'elle n'existe simplement pas.

Les supporters du forum sont réticents à répondre maintes et maintes fois aux mêmes questions sur les permissions, surtout que ce n'est pas relatif à Coppermine au départ. Si vous posez une question relative aux permissions sur le forum d'aide de Coppermine qui montre clairement que vous n'avez pas lu cette documentation (en particulier la parties relative aux permissions), vous risques d'avoir une réponse lapidaire voire pas de réponse du tout. Merci d'y penser à deux fois, relisez attentivement la section sur les permissions de cette documentation. Il y a peu de choses que les autres pourront faire pour vous dans ce domaine. Si vous n'y arrivez vraiment pas, demandez plutôt de l'aide à votre hébergeur.

## Permissions, sur le niveau des dossiers

Comme indiqué plus haut, Coppermine a besoins de différents niveaux de permissions sur certains de ses sous-dossiers. Tous les dossiers et fichiers dans le dossier Coppermine ont besoin d'être lisibles et ont généralement besoin d'autorisations d'exécution.

En outre, des autorisations d'écriture sont nécessaires pour:

- Le répertoire `albums`-et tout ce qu'il contient.
  Ne confondez pas le répertoire (dans le système de fichiers) nommé `albums` avec le terme logique et organisationnel "album" au niveau de la base de données: même si les deux mots ont le même son et s'il peut y avoir un lien entre les fichiers du système de fichiers et les fichiers au niveau de la base de données, ces deux mots ne doivent pas être confondus ou mélangés. Les albums au niveau de la base de données sont des conteneurs logiques. Le répertoire `albums` du système de fichiers est un conteneur physique.
- Le répertoire `include` doit être inscriptible pendant l'installation de Coppermine; l'intalleur va devoir écrire dans un fichier nommé `config.inc.php` dans le répertoire `include` ou seront stockées toutes les informations nécessaires à au script de la galerie pour établir une connection à la base de données. Ces éléments d'informations doivent être stockés au niveau du système de fichiers - tous les autres paramètres de Coppermine sont stockés dans la base de données, une fois la connection établie correctement par le script
- Le répertoire `logs` doit être inscriptible si vous activez l'enregistrement dans la configuration de Coppermine.
- Le répertoire `plugins` doit être inscriptible si vous voulez utiliser des plugins et si vous voulez les télécharger en utilisant la fonction de téléchargement HTTP inclue dans le gestionnaire de plugins.