Une avalanche de faille, dont une exécution de code à distance, vient de tomber sur le flux de sécurité de drupal.org. L'installation de la 5.3 est donc pour ainsi dire obligatoire. C'est l'occasion de donner quelques petites astuces de terrain pour faire cela rapidement et simplement. Et d'en profiter pour rendre l'installation drupal un peu plus sure.
Déjà, pour être à jour, faut-il encore être informé. Le flux indispensable sur lequel il faut connecter votre client RSS est le suivant :
http://drupal.org/security/rss.xmlet de manière plus générale un flux annonçant toutes les failles est fort utile :
http://secunia.com/information_partner/anonymous/o.rss
Le problème lorsque l'on veut installer une nouvelle version de drupal c'est que souvent on a bidouillé l'installation d'origine. Un changement par ci, un autre par là et on ne sait plus trop bien ce qui a bougé. Du coup, c'est le risque de tout perdre si l'on remplace "bêtement" la version existante avec la mise à jour.
La procédure suivante permet de faire le job sans risque et rapidement en utilisant les techniques connues de création de patch. Nous allons ainsi créer un fichier qui contient les différences entre la version d'origine officielle et la nouvelle.
Tout d'abord aller dans un répertoire "hors ligne" (par exemple /tmp) et télécharger/décompressez la version source et la version cible :
Etape suivante, fabriquer un patch permettant de passer de l'ancienne à la nouvelle version. Le dossier /var/www/mon_drupal est à changer en fonction de l'endroit où se trouve réellement votre installation drupal.
Ceci fait aller dans le dossier drupal et simulez l'application du patch sur votre installation. Cette opération ne modifie rien (paramètre dry-run) et permet de voir les fichiers que vous avez trop modifiés et qui du coup ne sont pas patchés (erreur FAILED).
Si tout s'applique correctement, passer à l'étape suivante. Sinon, cela veut sûrement dire que patch ne retrouve pas ses petits dans un fichier trop bidouillé. Le plus simple est de mettre le fichier incriminé dans un endroit sur et de le remplacer par son équivalent en version d'origine (qui se trouve en /tmp/drupal/drupal-5.2/...). Vous ré-appliquerez vos changements à la main après. Relancez après l'étape précédente jusqu'à ce qu'il n'y ait plus de FAILED.
Vous pouvez maintenant appliquer le patch "pour de vrai"
Voilà, c'est fait. L'opération prendre tout au plus 5 minutes. Ne vous reste plus maintenant qu'à ré-intégrer les éventuels fichiers qui ne serait pas passé à au moment du test du patch.
A ce stade, il faut vérifier que tout fonctionne (évidemment
mais aussi de lancer le www.monsite.com/update.php pour mettre éventuellement à jour la base de données.
Ceci fait, je vous conseille de renommer les fichiers install.php et update.php en des fichiers .foo ou tout ce qui vous amuse et qui ne soit pas exécutable. Le mieux est même de simplement les mettre ailleurs dans un dossier "hors-ligne". En effet, pas mal de vulnérabilités passent par ces fichiers et là encore cela n'a pas loupé.
Dans le même ordre d'idée, si vous n'utilisez pas XmlRPC (ou ne savez pas ce que c'est
, renommer ou déplacez aussi le fichier xmlrpc.php. De manière générale, enlever tout ce qui ne sert à rien, car c'est source de problèmes.
Voili voilà, en espérant que cela vous sera utile.
- reply
Bernhard (not verified), le 8 November, 2007 - 11:59(Sorry, not speaking french.)
Did you mean "diff -Naur drupal-5.2 drupal-5.3 > /var/www/mon_drupal/mise-a-jour-5.2-5.3.patch" instead of "patch -Naur drupal-5.2 drupal-5.3 > /var/www/mon_drupal/mise-a-jour-5.2-5.3.patch" to create the patch file?
- reply
Ulhume, le 8 November, 2007 - 12:08Ooops, Thank you for pointing this mistake out to me. Yes it's the "diff" command and not the "patch" one.
- reply
gagarine (not verified), le 13 November, 2007 - 13:29Hello,
.
Merci pour ton blog il est très intéressant et n'est pas simplement un relais d'information
Sinon pour ma part j'évite de modifier les corps et je n'ai donc pas à me soucier des fichiers qui pourrais être écrasé.
je garde juste au chaud les dossiers:
-files
-sites
-et mylib (ou je met principalement des librairies js maison)
Je ne patch pas car sa prend plus de temps qu'une simple copie (3s).
- reply
Ulhume, le 13 November, 2007 - 15:44C'est sur, si tu ne modifies pas le core, y'a peu de problèmes, sinon, c'est vite l'enfer
Moi j'ai jamais réussi à garder un core intacte plus de 2 jours 
- reply
Su86DR (not verified), le 10 December, 2007 - 07:13Bonjour,
Tout d'abord, merci pour ce fabuleux nid d'informations que j'exploite de plus en plus
Je voulais simplement signaler une petite faute de frappe, lorsqu'on applique le patch "pour de vrai", il faut supprimer le paramètre --dry-run de la ligne de commande.
Je le dis même si je pense que tout le monde aura corrigé de soi-même
- reply
Ulhume, le 10 December, 2007 - 09:04@Su86DR Tu as bien fait de le dire, merci ! C'est corrigé
- reply
~RV~ (not verified), le 18 November, 2008 - 18:05Super !!!
Je ne connaissais pas cette procédure pour mettre à jour les sources, ça a marché impec du 1er coup, c'est magique
Merci pour le tuyau, je pense que je vais adapter ça pour beaucoup d'autres projets.
- reply
Ulhume, le 18 November, 2008 - 19:27@RV ravis que cela puisse aider
J'ai industrialisé la méthode sous la forme d'un script pour la MAJ de modules drupal.
- reply
~RV~ (not verified), le 21 November, 2008 - 11:59@Ulhume
Ah oui, ça m'intéresse aussi.
D'ailleurs je suis sûr que ça pourrait intéresser plein d'autres gens !
Si tu pouvais poster ça (ou au moins un exemple) à la suite de cet article, ça serait top !
Merci pour tout
- reply
Ulhume, le 22 November, 2008 - 00:33@RV, ok je vais essayer de mettre le script au propre
Post new comment