web-dev-qa-db-fra.com

convert: non autorisé `aaaa` @ error/constit.c/ReadImage/453

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?

200
jianwei

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)

  1. ligne de commentaire

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
    
  2. changer de ligne

    <policy domain="coder" rights="none" pattern="PDF" />
    

    à

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
  3. ajouter une ligne

    <policy domain="coder" rights="read|write" pattern="LABEL" />
    

Puis redémarrez votre serveur Web (nginx, Apache).

314
sNICkerssss

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".

105
Lv2eof

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).

49
kristina

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.

La source

21
Nikolay Ivanov

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
18
Armen

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. 

14
Murray Hoggett

Supprimez simplement le fichier /etc/ImageMagick/policy.xml.

1
Jarda Pavlíček

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" />
0
lambertmular