1 line
30 KiB
JSON
1 line
30 KiB
JSON
[{"uuid":"ab5f47cd-33f9-4e54-8e0f-c7389695fb78","slug":"creer-un-groupe-d-utilisateurs-pour-un-site-web","title":"Créer un groupe d'utilisateurs pour un site Web","category":"Informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2023-02-10 22:48:33","created_at":"2023-02-10 22:48:33","updated_at":"2023-02-10 22:48:33","tags":[],"plain":"<note tip>Cet article fait partie de la collection </note> Avant de créer un site dans la configuration Apache 2, vous devez déterminer un groupe d'utilisateurs (administrateurs, développeurs, opérateurs...) qui devront accéder aux fichiers du site. Le bonne pratique est de créer un groupe d'utilisateur qui sera en charge du maintient du site web. Même pour un seul utilisateur cette méthode est valable et <u>évolutive</u>. Il est vivement conseillé de créer <u>un groupe par site Internet</u>. Créer un groupe Associer l'utilisateur au groupe Si vous êtes logué avec le compte , il faut se déconnecter et connecter pour que soit pris en compte. Créer les dossiers du site\nJe vais créer le dossier du site dans . Les droits seront automatiquement donnés à afin d'empêcher n'importe qui d'aller modifier le contenu. Modifier le groupe des dossiers du site\nL'objectif est de données les droits au groupe et de restreindre l'accès en lecture seule aux autres groupes d'utilisateurs. Lorsque qu'un fichier est créé, afin de garder la priorité au groupe de développeurs, j'attribue l'option \nS'il est nécessaire d'autoriser Apache à modifier le contenu d'un dossier, par exemple , je modifierai les droits en attribuant le groupe à (groupe d'utilisation d'Apache 2)."},{"uuid":"32242b73-c564-41b0-892a-ae97b0e1861e","slug":"spf-ou-comment-votre-boite-mail-repere-les-imposteurs","title":"SPF, ou comment votre boîte mail repère les imposteurs","category":"informatique","author":"cedric@abonnel.fr","cover":"cover.svg","published":true,"published_at":"2026-05-18 07:18","created_at":"2026-05-12 11:18:53","updated_at":"2026-05-12 12:58:33","tags":[],"plain":"Vous recevez un mail qui semble venir de votre banque. L'adresse a l'air correcte, le logo est bon, le ton est sérieux. Sauf que ce mail n'a peut-être jamais été envoyé par votre banque. N'importe qui, depuis n'importe quel ordinateur, peut techniquement écrire « De : votre-banque@exemple.fr » en haut d'un mail. C'est ce qu'on appelle l'usurpation d'expéditeur, et c'est à la base de la quasi-totalité des arnaques par mail.\r\n\r\nLe SPF, ou Sender Policy Framework, est l'un des mécanismes inventés pour limiter ce problème. C'est une technologie discrète, invisible à l'utilisateur, mais qui tourne en arrière-plan chaque fois qu'un mail arrive dans votre boîte.\r\n\r\nL'analogie de l'enveloppe et de la liste d'invités\r\n\r\nImaginez que chaque domaine de mail (par exemple ) soit une grande entreprise qui envoie du courrier. Cette entreprise a plusieurs bureaux de poste autorisés : son siège, sa filiale belge, son prestataire de marketing. Tous ces bureaux ont le droit d'envoyer du courrier en son nom.\r\n\r\nLe SPF, c'est tout simplement la liste publique de ces bureaux autorisés, affichée à la vue de tous. L'entreprise publie quelque part : « Le courrier authentique en mon nom ne peut venir que de ces adresses précises. Toute autre origine est suspecte. »\r\n\r\nQuand un mail prétendument envoyé par arrive chez votre fournisseur (Gmail, Orange, Free…), celui-ci fait deux choses :\r\n\r\n1. Il regarde l'adresse IP du serveur qui lui livre le mail.\r\n2. Il consulte la liste SPF publiée par .\r\n\r\nSi l'IP figure sur la liste, le mail est considéré comme légitime de ce point de vue. Sinon, c'est un signal d'alerte.\r\n\r\nPourquoi ça existe\r\n\r\nÀ l'origine d'internet, personne n'avait imaginé que le mail servirait à frauder à grande échelle. Le protocole d'envoi (SMTP) a été conçu avec une confiance totale : on déclare son identité et on est cru sur parole. Aucun mécanisme natif ne vérifie quoi que ce soit.\r\n\r\nLe SPF a été ajouté par-dessus, dans les années 2000, pour combler ce trou. C'est volontairement simple : une liste, une vérification, un verdict. L'idée n'est pas de tout résoudre, mais de filtrer les usurpations les plus grossières — celles où un escroc envoie depuis un serveur quelconque en se faisant passer pour une grande marque.\r\n\r\nCe que le SPF fait, et ce qu'il ne fait pas\r\n\r\nLe SPF vérifie d'où vient le mail, pas ce qu'il contient. Un mail légitime envoyé depuis un serveur autorisé peut très bien contenir une arnaque (cas typique : un compte interne piraté). Inversement, un mail forwardé par un ami passe parfois pour suspect alors qu'il est inoffensif, parce que le serveur de transfert n'est évidemment pas sur la liste du domaine d'origine.\r\n\r\nLe SPF n'agit pas non plus sur le contenu visible. Il regarde une information technique — l'identité du serveur émetteur — que l'utilisateur ne voit jamais. C'est précisément ce qui le rend utile : un escroc peut falsifier le « De : » affiché, mais il ne peut pas falsifier l'adresse IP de la machine qui établit la connexion.\r\n\r\nPour une vraie protection, le SPF est combiné à deux autres mécanismes : DKIM (qui signe cryptographiquement le mail) et DMARC (qui indique au destinataire quoi faire quand SPF ou DKIM échoue). Les trois ensemble forment le socle de l'authentification mail moderne. Aucun n'est suffisant seul.\r\n\r\nCe qui se passe concrètement à la réception\r\n\r\nQuand votre fournisseur reçoit un mail, la vérification SPF aboutit à l'un de ces verdicts : autorisé, refusé, douteux, ou indéterminé. Selon le résultat, le mail peut être livré normalement, placé en spam, ou rejeté avant même d'arriver dans votre boîte.\r\n\r\nVous ne voyez jamais cette décision. Elle est inscrite dans les en-têtes techniques du mail, consultables si on creuse, mais transparente pour l'usage quotidien. C'est précisément le but : une protection silencieuse qui élimine une partie du bruit avant qu'il ne vous atteigne.\r\n\r\nEt pour les expéditeurs ?\r\n\r\nSi vous gérez un site, une newsletter, ou même simplement une adresse mail professionnelle sur votre propre domaine, configurer correctement le SPF est devenu indispensable. Sans SPF, vos mails légitimes ont de plus en plus de chances d'être marqués comme suspects par les grands fournisseurs. Avec un SPF bien réglé, vous dites au monde entier : « voici exactement qui a le droit d'écrire en mon nom », et le reste devient automatiquement reconnaissable comme une usurpation.\r\n\r\nC'est un de ces réglages qu'on fait une fois, qu'on oublie ensuite, mais qui décide silencieusement chaque jour du sort de millions de mails."},{"uuid":"3e7ef528-6bd0-4fd1-83cb-a0d03ba35949","slug":"npm-le-ver-dans-le-fruit-comprendre-la-faille-systemique-et-repenser-les-pratiques-devops","title":"NPM, le ver dans le fruit : comprendre la faille systémique et repenser les pratiques DevOps","category":"informatique","author":"cedric@abonnel.fr","cover":"cover.svg","published":true,"published_at":"2026-05-12 13:08","created_at":"2026-05-12 13:08:44","updated_at":"2026-05-12 13:12:42","tags":[],"plain":"À propos de l'article du MagIT « NPM : une nouvelle campagne malveillante souligne une vulnérabilité systémique ».\r\n\r\nNPM expliqué simplement\r\n\r\nQuand on développe une application web moderne en JavaScript ou TypeScript, on ne réécrit jamais tout depuis zéro. On assemble des briques logicielles déjà écrites par d'autres : un module pour parser des dates, un autre pour valider des emails, un troisième pour discuter avec une base de données. Ces briques s'appellent des paquets, et la place de marché centrale qui les distribue s'appelle npm (Node Package Manager).\r\n\r\nConcrètement, dans un projet, on déclare la liste des paquets nécessaires dans un fichier . On lance la commande , et l'outil télécharge automatiquement les paquets demandés… ainsi que tous les paquets dont ces paquets ont eux-mêmes besoin. Un projet « simple » se retrouve souvent à dépendre de plusieurs centaines, voire plusieurs milliers, de paquets en cascade. C'est ce qu'on appelle l'arbre des dépendances.\r\n\r\nLe registre npm héberge aujourd'hui plus de 2,5 millions de paquets. C'est à la fois sa force — un écosystème colossal, une productivité décuplée — et sa faiblesse : la confiance accordée à chaque maillon de la chaîne est implicite, et chaque maillon devient une porte d'entrée potentielle.\r\n\r\nLa faille : ce qui s'est passé\r\n\r\nL'épisode décrit par LeMagIT n'est pas un bug logiciel classique. C'est ce qu'on appelle une attaque sur la chaîne d'approvisionnement logicielle (supply chain attack) : au lieu d'attaquer directement la cible finale, l'attaquant compromet un fournisseur en amont, et laisse la mise à jour légitime faire son travail de propagation.\r\n\r\nLe scénario reconstitué se déroule en plusieurs temps.\r\n\r\n1. Compromission d'un paquet de confiance. Les attaquants sont parvenus à pousser du code malveillant dans des paquets npm largement utilisés, notamment via le détournement du pipeline d'intégration continue de projets connus comme et l'écosystème Checkmarx. L'astuce n'est pas de publier un faux paquet : c'est de modifier un vrai paquet en exploitant les GitHub Actions — les robots qui construisent et publient automatiquement les nouvelles versions.\r\n\r\n2. Vol de secrets à l'installation. Une fois installé sur la machine d'un développeur ou dans un environnement de build, le code malveillant scanne l'environnement à la recherche de variables sensibles : , , , . Tout ce qui traîne dans les variables d'environnement, les fichiers , les configurations cloud.\r\n\r\n3. Auto-propagation. C'est là que l'attaque devient virale. Avec les jetons npm volés, le maliciel se reconnecte au registre npm, récupère la liste des paquets publiés par la victime, et publie automatiquement des versions piégées de ces paquets. Chaque développeur compromis devient un super-propagateur. Socket a identifié une quarantaine de paquets infectés en cascade lors d'une seule vague.\r\n\r\n4. Persistance. Sur les postes touchés, le malware installe un script pour survivre aux redémarrages, et, si nécessaire, exfiltre les données volées dans un dépôt GitHub public créé pour l'occasion.\r\n\r\nLe résultat : un binaire signé, publié sous un nom officiel, à jour, qui passe tous les contrôles de surface — et qui contamine simultanément le poste du développeur et les serveurs de production.\r\n\r\nPourquoi c'est « systémique »\r\n\r\nLe terme employé par LeMagIT est juste. Ce n'est pas un bug isolé, c'est une propriété structurelle de l'écosystème.\r\n\r\nLa confiance est transitive. On fait confiance à , qui fait confiance à , qui fait confiance à , etc. Compromettre un nœud profond et populaire suffit à toucher des millions de projets.\r\n\r\nLa publication est ouverte. N'importe qui peut publier un paquet. Les contrôles existent (provenance, 2FA pour les mainteneurs populaires) mais restent surtout a posteriori.\r\n\r\nLes scripts d'installation s'exécutent automatiquement. Un paquet npm peut déclarer un qui lance du code arbitraire au moment de . C'est pratique, mais c'est aussi un cheval de Troie idéal.\r\n\r\nLes jetons d'API sont partout. Le poste du développeur, les runners CI/CD, les serveurs : tous manipulent des secrets en clair dans des variables d'environnement. Un malware qui s'exécute dans le build n'a même pas besoin d'escalader ses privilèges.\r\n\r\nLes versions sont mutables sur fenêtre courte. Un paquet peut être republié dans les 72 heures suivant sa publication, et un peut retirer une version d'un jour à l'autre.\r\n\r\nAucun de ces points n'est un défaut technique réparable par un patch. Ce sont des choix d'architecture, vieux de plus de dix ans, qui ont accompagné l'explosion de l'écosystème.\r\n\r\nY a-t-il des alternatives ?\r\n\r\nLa question est légitime, mais la réponse honnête est : pas vraiment, et pour de bonnes raisons.\r\n\r\nLes gestionnaires de paquets alternatifs\r\n\r\n, et sont des gestionnaires différents, mais ils tirent leurs paquets du même registre npm. Migrer de à ne change rien à la surface d'attaque : ce sont les mêmes paquets, le même registre, les mêmes mainteneurs.\r\n\r\nCela dit, certains apportent des garde-fous utiles :\r\na introduit l'option , qui refuse d'installer un paquet publié il y a moins de N jours. Une vague d'attaque dure typiquement quelques heures avant détection : attendre 72 heures avant d'installer une nouvelle version élimine la fenêtre dangereuse.\r\nimpose un consentement explicite pour les scripts , là où npm les exécute par défaut.\r\net proposent des lockfiles stricts () qui garantissent que ce qui est installé en CI correspond exactement à ce qui a été testé.\r\n\r\nLes registres alternatifs\r\n\r\nJSR (JavaScript Registry), lancé par les créateurs de Deno, est le seul vrai nouveau registre crédible. Il a été conçu en tirant les leçons des problèmes de npm : TypeScript natif, modules ECMAScript par défaut, pas de scripts d'install, scoring qualité automatique, compatible avec tous les runtimes (Node, Deno, Bun). Mais JSR est complémentaire, pas un remplaçant : il héberge des milliers de paquets, pas des millions. Pour la majorité des dépendances, on continuera de passer par npm.\r\n\r\nLes registres privés — Verdaccio, GitHub Packages, JFrog Artifactory, Sonatype Nexus — ne remplacent pas npm non plus. Ils servent de proxy filtrant : on continue de récupérer les paquets publics, mais à travers un cache d'entreprise où l'on peut bloquer une version, exiger une signature, refuser un mainteneur, ou interdire les paquets publiés depuis moins de X jours. C'est probablement le meilleur compromis disponible aujourd'hui pour une organisation.\r\n\r\nLe verdict\r\n\r\nAbandonner npm en 2026 reviendrait à abandonner JavaScript. La valeur de l'écosystème (2,5 millions de paquets) est trop importante pour qu'on en sorte. Le problème ne se résoudra pas par un changement d'outil ; il se résoudra par un changement de pratiques.\r\n\r\nChanger les pratiques : ce qui doit devenir réflexe\r\n\r\nL'enseignement de cette campagne, et des précédentes (Shai-Hulud, TeamPCP, l'attaque Trivy/KICS), tient en une phrase : la confiance par défaut est morte. Il faut traiter chaque dépendance comme du code hostile par défaut, et le pipeline CI/CD comme une zone de production.\r\n\r\nAu niveau du poste de développement\r\nActiver l'option (ou équivalent) pour différer l'installation des paquets fraîchement publiés.\r\nDésactiver les scripts par défaut, et n'autoriser que ceux explicitement validés.\r\nNe jamais stocker de jetons en clair dans ou les variables d'environnement persistantes. Préférer un gestionnaire de secrets (1Password CLI, , ).\r\nUtiliser des comptes npm séparés pour la publication, avec 2FA matérielle obligatoire.\r\n\r\nAu niveau du dépôt\r\nVerrouiller systématiquement les dépendances (, , ) et installer en mode strict (, ).\r\nMettre en place un audit automatique des dépendances à chaque PR (Socket, Snyk, GitHub Dependabot, ).\r\nPublier ses propres paquets avec provenance npm (signature liée au pipeline GitHub Actions), pour que les consommateurs puissent vérifier l'origine.\r\nTenir à jour un SBOM (Software Bill of Materials) pour savoir exactement ce qui tourne en production.\r\n\r\nAu niveau du CI/CD\r\n\r\nC'est probablement le chantier le plus important.\r\nCloisonner les jetons. Un jeton de publication npm ne doit jamais coexister avec un jeton AWS dans la même étape de pipeline. Un secret par étape, durée de vie minimale, scope minimal.\r\nPréférer les jetons à courte durée de vie (OIDC entre GitHub Actions et le cloud) plutôt que des clés statiques.\r\nAuditer les GitHub Actions tierces. Une action est l'équivalent d'un . Épingler par hash SHA (), pas par tag mutable.\r\nRestreindre les permissions du au strict minimum ( par défaut, ponctuel et justifié).\r\nSurveiller le comportement réseau des runners : un build qui contacte un domaine inconnu doit lever une alerte.\r\n\r\nAu niveau de l'organisation\r\nMettre en place un registre proxy (Verdaccio, Nexus, Artifactory) avec liste blanche/noire de paquets, et l'imposer comme unique source pour tous les projets.\r\nDéfinir une politique de dependency governance : qui peut introduire une nouvelle dépendance, sous quelles conditions, avec quel niveau d'audit.\r\nPrévoir un playbook de révocation : que faire dans l'heure qui suit la détection d'un paquet compromis (rotation de tous les jetons npm/GitHub/cloud, audit des artefacts publiés, communication).\r\n\r\nEn résumé\r\n\r\nNPM n'est pas cassé, il est tel qu'il a été conçu : ouvert, automatique, transitif. Ce qui a changé, c'est la valeur que les attaquants peuvent en extraire — secrets cloud, jetons CI/CD, accès aux pipelines — et la sophistication des campagnes, qui exploitent désormais l'auto-propagation pour atteindre une échelle virale.\r\n\r\nAucune alternative ne supprime le problème, parce que le problème n'est pas npm : c'est l'idée qu'on puisse exécuter en production du code écrit par des inconnus sans jamais le regarder. Le rôle du DevOps en 2026, c'est de bâtir l'infrastructure qui rend cette inspection systématique, économique et inévitable — registres proxy, lockfiles stricts, jetons éphémères, audits continus, isolation des étapes de build.\r\n\r\nOn ne fera pas confiance à moins de gens. On exigera juste que chaque maillon prouve, à chaque exécution, qu'il est bien celui qu'il prétend être."},{"uuid":"976fd7f0-e53d-44e2-a879-58194765f3cf","slug":"activer-les-mises-a-jour-automatiques-sur-debian-pour-une-gestion-simplifiee-des-correctifs-de-securite","title":"Activer les mises à jour automatiques sur Debian pour une gestion simplifiée des correctifs de sécurité","category":"linux","author":"cedric@abonnel.fr","cover":"cover.svg","published":true,"published_at":"2026-01-06 20:45","created_at":"2026-01-06 20:45:52","updated_at":"2026-05-14 07:54:59","tags":{"logiciels":["Debian"]},"plain":"Dans un environnement de serveur ou de poste de travail, maintenir un système à jour avec les derniers correctifs de sécurité est crucial pour limiter l'exposition aux vulnérabilités. Debian fournit pour cela le paquet , qui automatise l'application des correctifs sans intervention manuelle. Cet article décrit comment l'installer, le configurer pour ne traiter que les mises à jour de sécurité, vérifier qu'il est bien actif, et tester son fonctionnement. La progression va du chemin minimal (sections 1 à 3) vers les réglages avancés utiles en production (sections 4 et suivantes). Étapes pour activer les mises à jour automatiques 1. Installer les paquets nécessaires On installe (qui applique les mises à jour) et, optionnellement mais recommandé, (qui résume les changements appliqués et peut les envoyer par e-mail) : À noter : sur Debian 12 (Bookworm) et versions ultérieures, n'est plus installé par défaut, même avec un environnement de bureau. À l'installation, pose quelques questions débconf (mode de remise : , , ; adresse mail destinataire ; fréquence). La valeur par défaut () convient pour un poste de travail ; sur un serveur, choisir et indiquer l'adresse de l'administrateur, après s'être assuré qu'un MTA local (postfix, msmtp…) est en place. Pour reconfigurer ultérieurement : 2. Activer le scheduling : La configuration d' se fait via deux fichiers dans :\n: quand déclencher la mise à jour (activation du scheduling)\n: quoi mettre à jour (origines, blacklist, redémarrage, mail…) Le premier peut être généré automatiquement avec : Une unique question débconf apparaît — « Automatically download and install stable updates? » — répondez Oui. Cela crée avec le contenu suivant : Sans ce fichier, est installé mais ne s'exécute jamais automatiquement. 3. Vérifier les origines dans Éditez le fichier : Sur Debian, les origines autorisées sont définies dans le bloc . Par défaut, seules les mises à jour de sécurité sont actives. Vérifiez la présence des lignes suivantes, non commentées : (La seconde ligne couvre l'ancien format d'étiquetage des dépôts de sécurité ; il est prudent de conserver les deux.) Optionnel : pour appliquer aussi les mises à jour fonctionnelles (corrections de bugs non critiques), décommentez la ligne correspondant aux updates : À utiliser avec discernement sur un serveur de production : ces mises à jour ne sont pas urgentes du point de vue sécurité et peuvent introduire des changements de comportement. À ce stade, la configuration minimale est terminée : les mises à jour de sécurité Debian seront appliquées automatiquement. Les sections suivantes couvrent les réglages utiles pour un usage en production. 4. Tester la configuration Lancez une simulation pour vérifier ce qui serait installé sans rien modifier : (Le binaire s'appelle bien au singulier ; le pluriel fonctionne aussi grâce à un lien symbolique.) La sortie est verbeuse. Les lignes à repérer sont :\n: doit lister les origines configurées en section 3 (au moins ).\n: les paquets exclus (voir section 6).\nou : ce qui serait installé.\n: message normal si aucune mise à jour de sécurité n'est en attente. Si une origine attendue n'apparaît pas dans Allowed origins, la ligne correspondante dans est probablement encore commentée. 5. Planification (timers systemd) L'exécution est pilotée par deux timers systemd fournis par le paquet : (téléchargement) et (installation). Par défaut, l'installation se déclenche tous les jours autour de 6h avec un délai aléatoire d'une heure. Pour vérifier l'état des timers : Pour modifier l'heure d'installation, créez un override : Et placez-y : Puis rechargez : 6. Réglages utiles en production Toujours dans , quelques options méritent d'être activées : Si vous désactivez le redémarrage automatique (recommandé en production), il faut un mécanisme pour savoir quand un reboot devient nécessaire — sinon les mises à jour de noyau s'accumulent silencieusement et la machine reste vulnérable jusqu'au prochain redémarrage manuel. Trois pistes complémentaires :\nLe fichier est créé automatiquement par les paquets qui exigent un reboot. Un simple dans un script de monitoring ou un motd suffit à le signaler à la connexion.\nInstaller () : il identifie les services à redémarrer après la mise à jour d'une bibliothèque (libc, openssl…), ce qui évite souvent un reboot complet. La commande liste les actions à entreprendre.\nLe mail envoyé par mentionne explicitement les paquets installés ; un redémarrage de noyau y est visible. 7. Cas des dépôts tiers Le bloc par défaut ne couvre que les dépôts Debian officiels. Les paquets installés depuis des dépôts tiers (Docker, PostgreSQL upstream, Nodesource, dépôts maison…) ne seront pas mis à jour automatiquement, alors même qu'ils concentrent souvent les CVE critiques sur un serveur. Pour les inclure, il faut ajouter leur pattern à . Par exemple pour Docker : Pour identifier l'origine et l'archive d'un dépôt : Repérez les champs (origin) et (archive/suite) dans la sortie ; ce sont eux qui doivent correspondre à votre pattern. Activer un dépôt tiers en mise à jour automatique demande de la confiance dans la stabilité de ce dépôt — testez d'abord en . 8. Vérifier les logs Les actions effectuées sont journalisées dans : Le premier trace l'activité d' lui-même (origines, paquets pris en compte, succès/échec) ; le second contient la sortie complète de pour chaque paquet installé.\n-- En activant correctement configuré, les correctifs de sécurité Debian sont appliqués rapidement et sans intervention manuelle. Sur un serveur de production, il reste essentiel de blacklister les paquets critiques pour votre stack, de configurer une notification par mail, de surveiller si le redémarrage automatique est désactivé, et de penser explicitement à inclure vos dépôts tiers dans . Les mises à jour majeures (changement de version Debian) restent toujours à faire à la main."},{"uuid":"0e0b8d1d-3352-4ab7-bc70-7bc1f02ee485","slug":"imagemagick-sur-debian-pourquoi-convert-im6-et-ou-trouver-magick","title":"ImageMagick sur Debian : pourquoi `convert-im6` et où trouver `magick`","category":"linux","author":"cedric@abonnel.fr","cover":"cover.svg","published":true,"published_at":"2025-12-28 15:32","created_at":"2025-12-28 15:32:01","updated_at":"2026-05-12 00:29:00","tags":[],"plain":"Si tu as déjà installé ImageMagick sur un serveur Debian, tu es probablement tombé sur cette étrangeté : la commande historique est là, mais elle s'appelle . Et la commande moderne , présente partout ailleurs, semble manquer à l'appel — sauf si tu es sur Debian 13, où elle est revenue.\r\n\r\nLe sujet est un peu plus subtil qu'il n'y paraît, et beaucoup d'explications qui circulent sur le web sont fausses (notamment celle qui prétend que entrerait en conflit avec un binaire de — c'est un mythe). Voilà ce qui se passe réellement.\r\n\r\nUn peu de contexte sur ImageMagick\r\n\r\nImageMagick, c'est une suite d'outils en ligne de commande pour manipuler des images : conversion de formats, redimensionnement, compression, génération de vignettes, watermarks, lecture de métadonnées… Le genre d'outil qu'on retrouve aussi bien dans un script bash de cinq lignes que dans une chaîne de traitement industrielle ou un pipeline CI.\r\n\r\nHistoriquement, la suite est composée de plusieurs binaires distincts, chacun avec son rôle : pour la conversion, pour lire les métadonnées, pour le traitement par lot, pour combiner des images, pour les planches. C'est l'architecture d'ImageMagick 6, la version qui a régné en maître pendant une bonne quinzaine d'années.\r\n\r\nDepuis 2016, ImageMagick 7 est disponible. Le grand changement, c'est qu'il unifie tout derrière une seule commande : . Les anciennes commandes deviennent des sous-commandes (, , etc.), même si pour la rétrocompatibilité un binaire peut continuer à se comporter comme quand on l'appelle avec une syntaxe d'IM6.\r\n\r\nPourquoi le suffixe sur Debian\r\n\r\nC'est ici que beaucoup d'articles racontent n'importe quoi. La vraie raison n'a rien à voir avec un conflit avec — je l'ai vérifié, aucun paquet système ne fournit de commande . Tu peux le vérifier toi-même : ne renvoie rien qui vienne de util-linux.\r\n\r\nLa vraie raison est plus prosaïque. Pendant des années, Debian a voulu pouvoir packager IM6 et IM7 en parallèle dans la même distribution, pour permettre une transition en douceur. Le souci, c'est que les deux versions fournissent des binaires aux mêmes noms (, , …) avec des comportements légèrement différents. Impossible de les installer côte à côte sans renommer.\r\n\r\nLa solution adoptée par les mainteneurs Debian a été d'ajouter un suffixe explicite au nom de chaque binaire :\r\nles outils d'IM6 deviennent , , etc.\r\nles outils d'IM7 deviennent et compagnie\r\n\r\nLe indique la profondeur quantique du binaire (16 bits par canal, la valeur par défaut), et le / indique la version d'ImageMagick. Les noms classiques (, ) ne sont alors que des symlinks gérés par , qui pointent vers la version active. C'est le même mécanisme que pour , , ou à une époque.\r\n\r\nCe qui change entre Debian 11, 12 et 13\r\n\r\nC'est l'autre point que la plupart des articles ratent : la situation n'est pas la même selon la version de Debian.\r\n\r\nSur Debian 11 (bullseye) et 12 (bookworm), le paquet installe IM6 (version 6.9.11.60). Tu n'as que et ses copains, et n'existe pas dans les dépôts officiels (le paquet existe mais n'est pas le défaut). C'est cette situation que décrivent la plupart des tutoriels qui traînent sur le web.\r\n\r\nSur Debian 13 (trixie), sorti en août 2025, le défaut a basculé sur IM7 (version 7.1.1.43). La commande est disponible, et est désormais un symlink vers . Tu peux le vérifier :\r\n\r\n\r\n\r\nAutrement dit, sur Trixie, si tu écris , tu appelles en réalité IM7 sous un nom d'IM6. Ça fonctionne pour la plupart des usages, mais attention : IM7 est plus strict sur l'ordre des arguments en ligne de commande (), donc certains scripts anciens peuvent grogner.\r\n\r\nCorrespondance entre les deux versions\r\nImageMagick 6 (Debian 11/12) | ImageMagick 7 (Debian 13) |\r\n---------------------------- | ------------------------- |\r\n| |\r\n| |\r\n| |\r\n| |\r\n\r\nPour les cas simples, le comportement est identique. Une commande de redimensionnement classique passe sans modification :\r\n\r\n\r\n\r\nFaut-il s'inquiéter sur un serveur en production ?\r\n\r\nSi tu administres une machine Debian 12 ou plus ancienne, non. IM6 est toujours activement maintenu pour les CVE (les correctifs sont régulièrement backportés dans les paquets stable), et la plupart des scripts existants continueront de fonctionner. Le dans le nom du binaire est juste du marquage, pas une dépréciation.\r\n\r\nSi tu migres vers Debian 13, prévois un peu de temps pour relire tes scripts. Les pièges classiques :\r\nl'ordre des options qui devient plus strict ;\r\nquelques comportements de couleur et d'alpha qui ont changé entre les deux versions, notamment sur les opérations chaînées ;\r\nle fichier qui a déménagé : devient . Si tu avais assoupli les restrictions sur les PDF ou PostScript (un grand classique), il faut reporter la modification.\r\n\r\nPour un projet PHP comme les tiens, l'extension Imagick côté PHP est sensible à cette transition : la version compilée doit correspondre à la version d'IM installée, sinon échoue. Sur Trixie, c'est IM7 qu'il faut lier.\r\n\r\nEn pratique\r\n\r\nSur Debian 11/12, utilise , , etc. C'est la convention locale, pas une version dégradée. Si tu veux malgré tout, tu peux installer le paquet (présent dans les dépôts depuis bookworm) et basculer les alternatives manuellement, mais ce n'est presque jamais nécessaire.\r\n\r\nSur Debian 13, utilise directement. La commande reste disponible par compatibilité, mais elle pointe en réalité vers IM7 — autant utiliser le nom officiel.\r\n\r\nEt dans tous les cas, évite les alias globaux qui réécrivent : ça finit toujours par mordre quelqu'un, soit toi dans six mois, soit le prochain qui reprendra le serveur."}] |