# Coppermine Photo Gallery v1.5.x: Documentation and Manual

## Configuration des permissions

Tout script PHP qui est supposé tourner sur un serveur web nécessite les autorisations en lecture et execution sur le serveur. En concéquence, tous les fichiers Coppermine ont besoin de ces autorisations.
En plus, Coppermine a besoin d'accès en écriture pour un certain nombre de fichiers et de répertoires sur le serveur afin de pouvoir faire ce qui suit:

- 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'instaleur d'être lancé une deuxième fois après une installation réussie.
- A l'utilisation du processus http de téléchargement, 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
- En dehors de la méthode de téléchagement, Coppermine va crée un fichier pour la vignette et un pour l'image intermédiaire (si vous avez configuré Coppermine pour celà) et les stocke aussi dans un sous-dossier dans le répertoire "albums"
- Si vous avez activé les logs à un niveau, le script aura besoin d'un accès en écriture pour le répertoire "logs"
- Le répertoire "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 de fichiers zip dans le plugin manager

Par défaut, les fichiers et les répertoires ne sont pas inscriptibles sur un serveur web, vous serez donc pêut être obligé de changer les permissions avant l'installation, pour les raisons évoquées plus haut. C'est vraiment important que vous vérfiez/Changiez (CHMOD) les permissions - ou vous risquez d'avoir des problèmes plus ou moins rapidement.

Certains hébergeurs gratuits (comme Free par exemple) ne permettent pas de modifier le CHMOD des répertoires et des fichiers, vous pourrez néanmoins faire fonctionner correctement Coppermine sur la plupart de ceux-ci.

Pour pouvoir configurer correctement les permissions, vous devez comprendre coment elles fonctionnent: il y a les permissions read(lecture), write(écriture) et execute(éxecution) (avec comme abréviations rwx) pour chaque répertoire ou fichier. Les autorisations d'un dossier parent peuvent être appliquées à un répertoire "enfant" ou aux fichiers qu'ils contient, mais il est possible de modifier vos paramètres afin que des autorisations non souhaitées ne s'appliquent aux répertoires enfants ou aux fichiers contenus.

Toutefois, il y a des différences entre les différents sytèmes d'exploitationutilisés par les erveurs web. Il en résulte plusieurs methodes d'approche pour ce sujet. Comme Coppermine est conçu pour fonctionner sur beaucoups de configurations différentes, nous avons inclu quelques instructions de base. Ceux qui ont de bonnes connaissances de ces paramétrages pourront trouver ces instructions un peux 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 sur du système d'exploitation utilisé par votre serveur, essayez d'abbord les instructions CHMOD - la plupart des erveurs tournent sous une versions d'Unix/Linux.

Si vous n'arrivez pas à configurer correctement les permissions, demandez de l'aide à votre hébergeur.

### Apache sur Unix/Linux (CHMOD)

- Bases
  Il y a différentes versions d'Unix/Linux - toutes partagent une approche similaire. En référence à cette architecture, le mot "Lunix" est utilisé pour tous les dérivés d'Unix et de Linux. L'autorisation "Read" s'applique aux fichiers qui ne sont pas executés, mais uniquement hébergés, par exemple les fichiers texte ou html. L'autorisation "Write" est nécessaire pour créer dynamiquement des fichiers, pour les modifier ou les effacer. L'autorisation "Execute" est nécessaire pour lancer les fichiers éxecutables, par exemple les fichiers script comme PHP. Pour faire tourner correctement des pages web pilotées par PHP, les autorisations basiques nécessaires pour celà sont "read" et "execute" (abrégé en r-x).
  Les paramétrages possibles sont:
  - `r--` ... lecture uniquement
  - `r-x` ... Lecture et éxecution
  - `rwx` ... lecture, écriture et éxecution
  Innutile de dire que d'autres combinaisons sont techniquement possible (comme -wx, --x ou -w-), mais elles n'ont que très peu de sens dans la configuration d'un serveur web, et ne seront pas traitées dans cette documentation.
- Groupes dans Lunix
  Lunix utilise un jeu de permissions pour 3 groupes, chacune peut être appliquée indépendemment. Ce sont les groupes: owner(propriétaire), group(groupe) et world(monde). En utilisant ce jeux, vous déciderez si un utilisateur propriétaire d'un fichier, a l'autorisation de le modifier, ou de l'effacer(autorisation en écriture) pendant que les autres ne pourront que lire/voir et éventuellement éxecuter le fichier. Sur votre serveur, la configuration de ces autorisations pour les 3 groupes possibles sont écrites en une seule ligne (dans l'odre "owner", "group", "world").
  - `rwxrwxrwx` ... lecture, écriture et éxecution (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 éxecution uniquement, pour tous les groupes
- "Diablotins" des serveurs Web (Webservers deamons)
  Même si vous(l'utilisateur qui est propriétaire des fichiers sur votre serveur qui à le contrôle de ces autorisations) êtes capable 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 du à une option de paramétrage particulière des serveurs: des services (sur Lunix souvent appelés "daemons (diablotins)") peuvent fonctionner de manière différente dans un contexte ou avec un utilisateur spécifique que pour l'utilisateur qui est autoriser à accéder aux fichiers. Sur la plupart de ces serveurs, le service du serveur web (apache) utilise l'utilisateur "nobody"(personne). De cette manière, le serveur peut être protégé contre les attaques des hackeurs. C'est pourquoi, le paramétrage des permissions sur un serveur avec cette configuration particulière ne fonctionne pas uniquement pour le propriétaire , vous devez paramétrer les permissions pour les deux autres groupes: "group" et "world" (du 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" - c'est l'équivalent aux deux états différents qu'un bit de donnée peut avoir en arithmétique binaire (et aussi dans l'ensemble du monde informatique). Comme nous avons 3 sortes de permissions différentes (read, write, execute), nous aurons besoin de 3 bits pour assigner un jeu de permissions. Le bit le plus élevé est le bit "read" - la décimale "4" est utilisée pour le représenter. Le bit intermédiaire "write" est assigné à la décimale "2", le bit le plus bas "execute" est représenté par la décimale "1". C'est un peu difficile à comprendre au début en particulier si vous n'avez jamais utilisé l'arithmétique bianaire avant. Si vous voulez en apprendre d'avantage, cherchez sur Google. C'est plus facile à comprendre en regardant des exemples:

  permission | valeur du bit | param.? | valeur
  read | 4 |  | 4
  write | 2 |  | 2
  execute | 1 |  | 1
  somme (resultant de la valeur des byte) | 7

  permission | valeur du bit | param.? | valeur
  read | 4 |  | 4
  write | 2 |  | -
  execute | 1 |  | 1
  somme (resultant de la valeur des byte) | 5

  permission | valeur du bit | param.? | value
  read | 4 |  | 4
  write | 2 |  | 2
  execute | 1 |  | -
  somme (resultant de la valeur des byte) | 6

- Quoi de bon là dedans?
  Au lieu de vous rappeler et d'écrire `rwxrwxrwx` pour chaque fichier ou dossier dans votre configuration, vous pouvez écrire `777` à la place. La même chose s'applique à `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 methode 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 Coppermine. Sélectionnez le répertoire "albums" se trouvant dans le répertoirede Coppermine. Depuis le menu contextuel(clic droit!), choisissez "propriétés" (l'item de menu peut ausi 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 focntion 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 dialoque 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 ré-appliquer 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 le application 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'éxecuter 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 aux répertoires. 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 hait 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".

  Certains hébergeurs gratuits (comme Free par exemple) ne permettent pas de modifier le CHMOD des répertoires et des fichiers, vous pourrez néanmoins faire fonctionner correctement Coppermine sur la plupart de ceux-ci.

- Accès Shell
  Si vous avez un accès shell à votre serveur vous pouvez appliquer la commande CHMOD native à vos fichiers et répertoires. Allez dans le répertoire contenant les fichiers Coppermine avec votre accès shell, puis appliquez les permissions au répertoires "albums" et "includes" ainsi qu'à l'ensemble de leurs contenu. 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.

- #### Ownership (CHOWN)

  In rare cases you might run into permission issues that can't be solved by setting permissions using the CHMOD command - instead, you need to change the ownership of folder/files using the CHOWN command that only applies on Posix-compliant operating systems. Issues related to ownership usually happen if the user the FTP upload runs under differs from the user the webserver runs under. The tricky thing is that there is no control built into your FTP application to review or change ownership. Therefore, if the server isn't yours to administer and you don't have shell access, you're stuck and will have to ask your webhost for support.

### Apache sur Windows

Vous devez comprendre qu'il n'y a pas de commandes comme CHMOD sur les systèmes d'exploitations Windows - this command is disponible uniquement 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 de serveurs web apache utilisent un utilisateur particulier - si vous avez un accès total au serveur, vérifiez dans le contrôle des service lequel est utilisé. Si vous ne pouvez pas, demandez votre hébergeur.

Pour un focntionnement 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'éxecutionto peut présenter un risque de sécuité, ce n'est pas recommandé du tout.

### IIS sur Windows

Pre-requis: vous aurez besoin d'un accès administrateur total sur votre serveur pour pouvoir éxecuter ce processus. Si vous ne faites pas tourner vous même votre serveur, votr ehé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 versions 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'ojets "enfants" et de la vitesse de votre système d'éxploitation, attendez que l'ensemble des permission 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'éxploitation 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 demanden 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'exploitations. Les permissions nécéssaires à 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 si il n'a pas les privilèges pour le faire. Pensez à ça comme à la structure d'une armée: un soldat qui a un bas rang 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 êtr ele cas sur la pupart 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, celà posera un risque de sécurité. De plus, sur certaines machines, on ne pourra pas appliquer cette commande parce qu'elle n'éxiste 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 permissiosn de cette documentation. Il y a peu de choses que les autres pouront faire pour vous dans ce domaine. Si vous n'y arrivez vraiement pas, demandez plutôt de l'aide à votre hébergeur.