Je veux créer une image captcha en utilisant convert
à partir d'ImageMagick.
Et je suis cela , mais il y a un problème.
Entrée dans mon shell linux:
convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png
L'erreur est:
convertir: non autorisé
adfgh
@ error/constit.c/ReadImage/453 . convertir: manque un fichier image./test.png
@ error/convert.c/ConvertImageCommand/3015
Mon ImageMagick: Version: 6.7.2-7, je l’installe avec yum install ImageMagick
.
Je suis désemparé. Un conseil s'il vous plaît?
J'utilise ImageMagick en php (v.7.1) pour découper un fichier PDF en images.
D'abord j'ai eu des erreurs comme:
Type d'exception: ImagickException
Message d'exception: non autorisé ..... @ error/constit.c/ReadImage/412
Après quelques changements dans /etc/ImageMagick-6/policy.xml
, je commence à avoir des erreurs comme:
Type d'exception: ImagickException
Message d'exception: impossible de créer un fichier temporaire ..... Autorisation refusée @ error/pdf.c/ReadPDFImage/465
Mon correctif :
Dans le fichier /etc/ImageMagick-6/policy.xml
(ou /etc/ImageMagick/policy.xml
)
ligne de commentaire
<!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
changer de ligne
<policy domain="coder" rights="none" pattern="PDF" />
à
<policy domain="coder" rights="read|write" pattern="PDF" />
ajouter une ligne
<policy domain="coder" rights="read|write" pattern="LABEL" />
Puis redémarrez votre serveur Web (nginx, Apache).
J'utilise plusieurs fois la commande ImageMagic convert
pour convertir les fichiers *.tif
en fichiers *.pdf
.
Je ne sais pas pourquoi mais aujourd'hui j'ai commencé à recevoir l'erreur suivante:
convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.
Après avoir émis la commande:
convert a.tif a.pdf
Après avoir lu les réponses ci-dessus, j'ai édité le fichier /etc/ImageMagick-6/policy.xml
et changé la ligne:
policy domain="coder" rights="none" pattern="PDF"
à
policy domain="coder" rights="read|write" pattern="PDF"
et maintenant tout fonctionne bien.
J'ai "ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28" .__ sur "Ubuntu 16.04.5 LTS".
Il y a un fichier /etc/ImageMagick/policy.xml
qui est installé par yum. Il interdit presque tout (pour des raisons de sécurité et pour protéger votre système des appels ImageMagick surchargés).
Si vous obtenez une erreur ReadImage
comme ci-dessus, vous pouvez modifier la ligne en:
<policy domain="coder" rights="read" pattern="LABEL" />
qui devrait résoudre le problème.
Le fichier contient de la documentation, vous devriez donc le lire. Par exemple, si vous avez besoin de plus d'autorisations, vous pouvez les combiner comme suit:
<policy domain="coder" rights="read|write" pattern="LABEL" />
... qui est préférable à la suppression de toutes les vérifications d’autorisations (c'est-à-dire la suppression ou la mise en commentaire de la ligne).
La réponse avec le plus grand nombre de votes (je n'ai pas assez de réputation pour ajouter un commentaire) suggère de commenter la ligne MVG, mais tenez compte de ceci:
CVE-2016-3714
ImageMagick prend en charge les fichiers ".svg/.mvg", ce qui signifie que les attaquants peuvent utiliser code de l'artisanat dans un langage de script, par exemple MSL (Magick Scripting Language) et MVG (Magick Vector Graphics), téléchargez-le sur un serveur déguisé en fichier image et oblige le logiciel à exécuter un programme malveillant commandes côté serveur, comme décrit ci-dessus. Par exemple, ajouter le les commandes suivantes dans un fichier et le télécharger sur un serveur Web qui utilise une version vulnérable d'ImageMagick entraînera l'exécution de la commande "ls -la" sur le serveur.
exploit.jpg:
Poussez la vue graphique-contexte 0 0 640 480 remplir 'url ( https://website.com/image.png "| ls" -la)' pop graphic-context
Et
Toute version inférieure à 7.0.1-2 ou 6.9.4-0 est potentiellement vulnérable et les parties concernées doivent mettre à niveau le plus tôt possible Version d'ImageMagick.
Si quelqu'un a besoin de le faire avec une commande après l'installation, lancez ceci!
sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml
Après une mise à jour récente sur mon système Ubuntu 16.04, j'ai également commencé à avoir cette erreur lorsque j'essayais de convertir des fichiers .ps pour les convertir en fichiers PDF.
Ce correctif a fonctionné pour moi:
Dans un terminal:
Sudo gedit /etc/ImageMagick-6/policy.xml
Cela devrait ouvrir le fichier policy.xml dans l’éditeur de texte gedit. Si ce n'est pas le cas, votre image magick pourrait être installée à un endroit différent. Puis changer
rights="none"
à
rights="read | write"
pour les lignes PDF, EPS et PS vers le bas du fichier. Enregistrez et quittez, et l'image magick devrait alors fonctionner à nouveau.
Supprimez simplement le fichier /etc/ImageMagick/policy.xml.
J'ai aussi eu l'erreur error/constitute.c/ReadImage/453
en essayant de convertir un eps en gif avec magick d'image. J'ai essayé la solution proposée par sNICkerssss mais il y avait toujours des erreurs (bien que différentes de la première) et error/constitute.c/ReadImage/412
Ce qui a résolu le problème était de mettre read
à d'autres entrées
<policy domain="coder" rights="read" pattern="PS" />
<policy domain="coder" rights="read" pattern="EPS" />
<policy domain="coder" rights="read" pattern="PDF" />
<policy domain="coder" rights="read" pattern="XPS" />
<policy domain="coder" rights="read|write" pattern="LABEL" />