web-dev-qa-db-ja.com

変換:権限がない `aaaa` @ error/configure.c/ReadImage/453

ImageMagickのconvertを使ってキャプチャ画像を作りたい。

そして私は これ に従いますが、いくつか問題があります。

私のLinuxシェルで入力:

convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png

エラーは次のとおりです。

変換:権限がありませんadfgh @ error/configure.c/ReadImage/453。 convert:画像ファイル名がありません./test.png @ error/convert.c/ConvertImageCommand/3015

私のImageMagick:バージョン:6.7.2-7、私はyum install ImageMagickでそれをインストールします。

私は無知です。何かアドバイスがありますか?

242
jianwei

注:これと他の答えの解決策は任意のコード実行の脆弱性を修正するためにある安全対策を無効にすることを含みます。例えば このゴーストスクリプト関連このubuntu関連 の発表をご覧ください。 convertへの入力が信頼できるソースからのものである場合にのみ、これらの解決策を進めてください。

Php(v.7.1)でImageMagickを使用してPDFファイルを画像にスライスしています。

最初に私はのようなエラーを得ました:

例外の種類:ImagickException

例外メッセージ:権限がありません..... @ error/configure.c/ReadImage/412

/etc/ImageMagick-6/policy.xmlにいくつかの変更を加えた後、私は以下のようなエラーが出始めます。

例外の種類:ImagickException

例外メッセージ:一時ファイルを作成できません.....アクセス許可が@ error/pdf.c/ReadPDFImage/465で拒否されました

私の修正

ファイル/etc/ImageMagick-6/policy.xml(または/etc/ImageMagick/policy.xml)内

  1. コメント行

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
    
  2. 改行

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

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
  3. 行を追加

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

その後、 Webサーバーを再起動します (nginx、Apache)。

357
sNICkerssss

私は何回もImageMagicのconvertコマンドを使って*.tifファイルを*.pdfファイルに変換します。

理由はわかりませんが、今日は次のようなエラーが表示され始めました。

convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.

コマンド発行後:

convert a.tif a.pdf

上記の答えを読んだ後、私はファイル/etc/ImageMagick-6/policy.xmlを編集しました

そして行を変更しました:

policy domain="coder" rights="none" pattern="PDF" 

policy domain="coder" rights="read|write" pattern="PDF"

そして今、すべてうまくいきます。

"Ubuntu 16.04.5 LTS"に "ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28"があります。

125
Lv2eof

Yumによってインストールされる/etc/ImageMagick/policy.xmlファイルがあります。これはほとんどすべてのことを許可しません(セキュリティとImageMagick呼び出しでシステムが過負荷になるのを防ぐため)。

上記のようにReadImageエラーが発生した場合は、その行を次のように変更できます。

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

これで問題は解決するはずです。

ファイルにはたくさんのドキュメントが含まれているので、それを読むべきです。たとえば、より多くの権限が必要な場合は、次のようにそれらを組み合わせることができます。

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

...これは、すべての許可チェックを削除する(つまり、その行を削除またはコメントアウトする)よりも望ましい方法です。

50
kristina

最高得票数の回答(ここにコメントを追加するのに十分な評判がありません)は、MVGの行をコメントアウトすることを示唆していますが、これに留意してください。

CVE-2016-3714

ImageMagickは ".svg/.mvg"ファイルをサポートしています。つまり、攻撃者はスクリプト言語でコードを作成することができます。 MSL(Magick Scripting Language)とMVG(Magick Vector Graphics)は、それをイメージファイルに偽装したサーバーにアップロードし、上記のようにサーバー側でソフトウェアに悪意のあるコマンドを実行させます。たとえば、ファイルに次のコマンドを追加し、脆弱なImageMagickバージョンを使用するWebサーバーにアップロードすると、サーバー上でコマンド "ls -la"が実行されます。

exploit.jpg:

グラフィックコンテキストビューボックスをプッシュ0 0 640 480 'url( https://website.com/image.png "| ls" -la)' popグラフィックコンテキストを入力

そして

7.0.1-2または6.9.4-0より下のバージョンは潜在的に脆弱であり、影響を受ける関係者はできるだけ早く最新のImageMagickバージョンにアップグレードするべきです。

出典

22
Nikolay Ivanov

誰かがインストール後に1つのコマンドでそれをする必要があるなら、これを実行してください!

sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml
20
Armen

私のUbuntu 16.04システムを最近アップデートした後、.psファイルでconvertを実行してそれらをpdfsに変換しようとしたときにも、このエラーが発生し始めました。

この修正は私のために働いた:

ターミナルランで:

Sudo gedit /etc/ImageMagick-6/policy.xml

これにより、geditテキストエディタでpolicy.xmlファイルが開きます。もしそうでなければ、あなたのimage magickは別の場所にインストールされているかもしれません。それから変更

rights="none" 

rights="read | write" 

ファイルの下部近くにあるPDF、EPS、およびPS行の場合。保存して終了すると、image magickは再び動作するはずです。

13
Murray Hoggett

/etc/ImageMagick/policy.xmlファイルを削除するだけです。

4

また、イメージマジックを使用してepsをgifに変換しようとすると、エラーerror/constitute.c/ReadImage/453が発生しました。 sNICkerssssによって提案された解決策を試しましたが、まだエラーがありました(最初のものとは異なります)e error/constitute.c/ReadImage/412問題を解決したのは、readを他のエントリに入れることでした

 <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