Base de connaissances · Fantastico
Impossible de modifier par FTP un modèle Joomla installé par Joomla
Dernière mise à jour : 2020-04-05
Ce problème est propre aux serveurs n'exécutant pas SuExec/phpSuExec. La solution consiste à téléverser les fichiers par FTP, puis à effectuer une installation manuelle du composant ou du modèle Joomla.
Ce point est expliqué à l'adresse http://forum.joomla.org/index.php/topic,30796.0.html. Voici un résumé des raisons, que nous citons :
« Tout d'abord… Peu importe que le propriétaire des fichiers principaux de Joomla soit votre utilisateur ou httpd (ou nobody, apache, ou tout autre utilisateur d'Apache). Le propriétaire d'un fichier est déterminé à sa création, par l'utilisateur auquel appartient le processus du système d'exploitation qui crée le fichier dans le système de fichiers.
Scénario : vous êtes connecté en tant qu'utilisateur et vous créez un nouveau fichier… something.txt avec votre éditeur de texte favori (vi par exemple).
Comme vous exécutez le programme vi en étant connecté sous votre identité (nous supposerons par la suite que le nom d'utilisateur est USER), USER est propriétaire du processus vi qui a créé le fichier something.txt dans le système de fichiers. Cela signifie que le fichier something.txt appartiendra à USER.
Scénario : vous téléversez un fichier ... somethingElse.txt par FTP.
Comme vous êtes connecté au FTP avec votre combinaison identifiant/mot de passe... le processus FTP que vous utilisez a changé d'utilisateur et appartient désormais à USER. Par conséquent, lorsque le fichier somethingElse.txt est téléversé (créé) sur le système de fichiers... il appartient au propriétaire du processus qui l'a créé, USER.
Scénario: vous téléversez un fichier vers un script PHP qui l'enregistre sous le nom yetSomethingElse.txt (sans utiliser suexec avec PHP).
Pour des raisons de sécurité, Apache exécute ses processus sous un utilisateur « spécial »... souvent nommé nobody, apache, httpd, ou tout autre nom choisi par l'administrateur système dans le fichier de configuration. Dans ce cas, nous dirons que l'utilisateur apache s'appelle httpd. Vous téléversez donc votre fichier vers le script PHP. PHP s'exécute dans un module Apache, lui-même exécuté dans le processus Apache... devinez à qui il appartient ? ... exactement... à l'utilisateur httpd. De ce fait... lorsque PHP appelle move_uploaded_file() et enregistre le fichier yetSomethingElse.txt ... celui-ci appartient à l'utilisateur httpd, et à nul autre. Est-ce un bogue de PHP ? Non. Est-ce un bogue d'Apache ? Non. Est-ce un bogue du script PHP ? Non. C'est simplement ainsi que fonctionnent les propriétaires de fichiers sur le système de fichiers.
suexec est un mécanisme par lequel apache change d'utilisateur (Switch User) et exécute (EXECute) le processus en fonction de l'utilisateur propriétaire du document root de l'hôte virtuel demandé. (Avez-vous repéré SUEXEC dans cette expression ?) Il s'agit d'une solution proposée par certains hébergeurs, qui permet que tous les fichiers créés ou modifiés, etc., par les processus apache appartiennent à l'utilisateur approprié.
Vous vous demandez peut-être pourquoi Apache se comporte ainsi... Je vous suggère d'adresser toutes ces questions à http://www.apache.org
En résumé, il ne s'agit pas d'un bogue du système : c'est exactement ainsi que le système est conçu pour fonctionner... cela vous simplifie-t-il la vie ? Non. Mais c'est l'explication. Il existe plusieurs solutions de contournement possibles... l'une d'elles étant la couche client FTP que j'ai écrite pour la version 1.1, je suppose.
Louis "
Ce point est expliqué à l'adresse http://forum.joomla.org/index.php/topic,30796.0.html. Voici un résumé des raisons, que nous citons :
« Tout d'abord… Peu importe que le propriétaire des fichiers principaux de Joomla soit votre utilisateur ou httpd (ou nobody, apache, ou tout autre utilisateur d'Apache). Le propriétaire d'un fichier est déterminé à sa création, par l'utilisateur auquel appartient le processus du système d'exploitation qui crée le fichier dans le système de fichiers.
Scénario : vous êtes connecté en tant qu'utilisateur et vous créez un nouveau fichier… something.txt avec votre éditeur de texte favori (vi par exemple).
Comme vous exécutez le programme vi en étant connecté sous votre identité (nous supposerons par la suite que le nom d'utilisateur est USER), USER est propriétaire du processus vi qui a créé le fichier something.txt dans le système de fichiers. Cela signifie que le fichier something.txt appartiendra à USER.
Scénario : vous téléversez un fichier ... somethingElse.txt par FTP.
Comme vous êtes connecté au FTP avec votre combinaison identifiant/mot de passe... le processus FTP que vous utilisez a changé d'utilisateur et appartient désormais à USER. Par conséquent, lorsque le fichier somethingElse.txt est téléversé (créé) sur le système de fichiers... il appartient au propriétaire du processus qui l'a créé, USER.
Scénario: vous téléversez un fichier vers un script PHP qui l'enregistre sous le nom yetSomethingElse.txt (sans utiliser suexec avec PHP).
Pour des raisons de sécurité, Apache exécute ses processus sous un utilisateur « spécial »... souvent nommé nobody, apache, httpd, ou tout autre nom choisi par l'administrateur système dans le fichier de configuration. Dans ce cas, nous dirons que l'utilisateur apache s'appelle httpd. Vous téléversez donc votre fichier vers le script PHP. PHP s'exécute dans un module Apache, lui-même exécuté dans le processus Apache... devinez à qui il appartient ? ... exactement... à l'utilisateur httpd. De ce fait... lorsque PHP appelle move_uploaded_file() et enregistre le fichier yetSomethingElse.txt ... celui-ci appartient à l'utilisateur httpd, et à nul autre. Est-ce un bogue de PHP ? Non. Est-ce un bogue d'Apache ? Non. Est-ce un bogue du script PHP ? Non. C'est simplement ainsi que fonctionnent les propriétaires de fichiers sur le système de fichiers.
suexec est un mécanisme par lequel apache change d'utilisateur (Switch User) et exécute (EXECute) le processus en fonction de l'utilisateur propriétaire du document root de l'hôte virtuel demandé. (Avez-vous repéré SUEXEC dans cette expression ?) Il s'agit d'une solution proposée par certains hébergeurs, qui permet que tous les fichiers créés ou modifiés, etc., par les processus apache appartiennent à l'utilisateur approprié.
Vous vous demandez peut-être pourquoi Apache se comporte ainsi... Je vous suggère d'adresser toutes ces questions à http://www.apache.org
En résumé, il ne s'agit pas d'un bogue du système : c'est exactement ainsi que le système est conçu pour fonctionner... cela vous simplifie-t-il la vie ? Non. Mais c'est l'explication. Il existe plusieurs solutions de contournement possibles... l'une d'elles étant la couche client FTP que j'ai écrite pour la version 1.1, je suppose.
Louis "
Tell us what you need
Compare available plans or describe your workload so we can discuss a suitable starting point.