रूपांतरित करें: अधिकृत नहीं है `आआआ` @ त्रुटि / गठित / रीडमी / 453


309

मैं convertImageMagick से उपयोग करके एक कैप्चा चित्र बनाना चाहता हूं ।

और मैं का पालन करें इस , लेकिन कुछ समस्या नहीं है।

इनपुट मेरे लिनक्स शेल में:

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

त्रुटि है:

परिवर्तित: अधिकृत नहीं adfgh@ त्रुटि / गठन। / ReadImage / 453 कन्वर्ट: एक छवि फ़ाइल नाम ./test.png@ त्रुटि / Convert.c / ConvertImageCommand / 3015 लापता

मेरा ImageMagick: संस्करण: 6.7.2-7, मैं इसे स्थापित करता हूं yum install ImageMagick

मैं क्लूलेस हूं। किसी भी सलाह कृपया?


7
डबल चेक policy.xml। सुरक्षा विकल्प label:प्रोटोकॉल को रोक सकते हैं।
Emcconville

2
धन्यवाद! मैंने नीति। Xml को संशोधित किया है, इस लाइन पर टिप्पणी करें "<नीति डोमेन =" कोडर "अधिकार =" कोई नहीं "पैटर्न =" LAEBL ">"। यह वास्तव में कारगर है ! धन्यवाद !
जियांवेई

3
पॉलिसी कहां है। Xml?
अर्नोल्ड रोआ

3
/etc/ImageMagick/policy.xml
jianwei

6
/etc/ImageMagick-6/policy.xml
xerostomus

जवाबों:


445

नोट: इस और अन्य उत्तरों में समाधान में सुरक्षा उपायों को अक्षम करना शामिल है जो कि मनमाने कोड निष्पादन कमजोरियों को ठीक करने के लिए हैं। उदाहरण के लिए इस भूत-संबंधी से संबंधित और इस ubuntu से संबंधित घोषणा देखें। केवल इन समाधानों के साथ आगे बढ़ें यदि इनपुट convertकिसी विश्वसनीय स्रोत से आता है।

मैं छवियों के लिए पीडीएफ फाइल को स्लाइस करने के लिए php (v.7.1) में ImageMagick का उपयोग करता हूं।

पहले मुझे त्रुटियाँ मिलीं:

अपवाद प्रकार: ImagickException

अपवाद संदेश: अधिकृत नहीं है ..... @ त्रुटि / गठित / रीडमी / 412

कुछ बदलावों के बाद /etc/ImageMagick-6/policy.xmlमुझे इस तरह से क्षरण होने लगता है:

अपवाद प्रकार: ImagickException

अपवाद संदेश: अस्थायी फ़ाइल बनाने में असमर्थ ..... अनुमति अस्वीकृत @ त्रुटि / 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" />

फिर अपने वेब सर्वर (nginx, apache) को पुनरारंभ करें


54
यदि आपको 4 अक्टूबर 2018 से उबंटू बॉक्स पर इस समस्या का अनुभव हुआ तो यह स्वीकार्य उत्तर होना चाहिए। अन्य डिस्ट्रो से कोई अन्य समस्या?
लुकासब्र

12
मुझे यह समस्या अभी-अभी उबंटू 16.04 पर भी मिल रही है। क्या कुछ बदला? इसके अलावा मुझे LABEL लाइन को जोड़ने की आवश्यकता नहीं थी, बस पीडीएफ के अधिकारों को "कोई नहीं" से "पढ़ने" के लिए बदल दें।
ब्रायंट कोउ

4
मेरे Ubuntu 18.04.1 LTS बॉक्स में एक बहुत ही समान समस्या हल करता है
mhernandez

3
मेरे सर्वर में, policy.xmlफ़ाइल अंतिम बार सेप्ट 29 पर अपडेट की गई, लेकिन समस्याएं आज ही उत्पन्न होती हैं। मैं ubuntu सर्वर 14.04.5 का उपयोग कर रहा हूं, लेकिन ऑटो अपडेट सेट करें। उपयुक्त लॉग में, मुझे इस अपडेट के बारे में पता चला:imagemagick-common:amd64 (6.7.7.10-6ubuntu3.12, 6.7.7.10-6ubuntu3.13),
डोनी कुरनिया


161

मैं फ़ाइलों को फ़ाइलों में convertबदलने के लिए कई बार ImageMagic कमांड का उपयोग करता हूं ।*.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" है।


1
मैं ओपनस्यूज लीप 15.0 पर हूं और पीडीएफ पेजों की तुलना करने के लिए "तुलना" का उपयोग किया गया है, वही त्रुटि, 10 अक्टूबर 2018 को ओपनस्यूज द्वारा एक अपडेट के बाद भी । यहां बताए अनुसार लाइन बदलने के बाद, इसने काम किया।
केक्स

मैं Ubuntu Xenial 16.04 LTS पर हूं और अचानक मुझे अपाचे लॉग में वह त्रुटि दिखाई देने लगी। मैं पुष्टि करता हूं कि यहां बताई गई नीति को बदलने के बाद समस्या हल हो गई थी।
user2641103

5
यह न्यूनतम सही उत्तर है - sNICkerssss का उत्तर तकनीकी रूप से सही है, हालांकि convertपीडीएफ के कमांड-लाइन उपयोग के लिए केवल एक चरण की आवश्यकता है ।
davidA

1
यह 'समस्या' घोस्टस्क्रिप्ट कार्यक्षमता के लिए त्वरित और गंदे 'फिक्स' है, लंबे समय में हमें घोस्टस्क्रिप्ट (और संभावित इमेजमैजिक) के लिए प्रतिस्थापन ढूंढना चाहिए।
9ilsdx 9rvj 0lo

4
यह मत करो। यह प्रतिबंध संभव रिमोट कोड निष्पादन ( लॉन्चपैड.नेट / देखें / स्रोत /imagemagick/8:6.7.7.10-6ubuntu3.13 देखें ) के कारण सुरक्षा उपाय के रूप में पेश किया गया है । तो सही उत्तर है: आपको इस कार्य के लिए किसी अन्य प्रोग्राम का उपयोग करना चाहिए।
मैरियन

66

नोट: यह समाधान और कोई भी अन्य "नीति संपादित करें। Xml" समाधान ImageMagick में मनमाने कोड निष्पादन कमजोरियों के खिलाफ सुरक्षा उपायों को अक्षम करता है। यदि आपको इनपुट की प्रक्रिया करने की आवश्यकता है जिसे आप 100% नियंत्रित नहीं करते हैं, तो आपको एक अलग प्रोग्राम (इमेजमैजिक नहीं) का उपयोग करना चाहिए।

यदि आप अभी भी यहां हैं, तो आप उन चित्रों को संपादित करने का प्रयास कर रहे हैं, जिन पर आपका पूरा नियंत्रण है, पता सुरक्षित है और उपयोगकर्ताओं द्वारा संपादित नहीं किया जा सकता है।

एक /etc/ImageMagick/policy.xmlफ़ाइल है जो yum द्वारा स्थापित है। यह लगभग हर चीज को अस्वीकार कर देता है (सुरक्षा के लिए और अपने सिस्टम को ImageMagick कॉल के अतिभारित होने से बचाने के लिए)।

यदि आपको ReadImageऊपर के रूप में कोई त्रुटि मिल रही है , तो आप लाइन को इसमें बदल सकते हैं:

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

जिसे समस्या को ठीक करना चाहिए।

फ़ाइल में दस्तावेज का एक गुच्छा है, इसलिए आपको इसे पढ़ना चाहिए। उदाहरण के लिए, यदि आपको अधिक अनुमतियों की आवश्यकता है, तो आप उन्हें संयोजित कर सकते हैं जैसे:

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

... जो सभी अनुमतियों की जाँच को हटाने (यानी लाइन को हटाने या टिप्पणी करने) के लिए बेहतर है।


2
यह मत करो। यह प्रतिबंध संभव रिमोट कोड निष्पादन ( लॉन्चपैड.नेट / देखें / स्रोत /imagemagick/8:6.7.7.10-6ubuntu3.13 देखें ) के कारण सुरक्षा उपाय के रूप में पेश किया गया है । तो सही उत्तर है: आपको इस कार्य के लिए किसी अन्य प्रोग्राम का उपयोग करना चाहिए।
मैरियन

5
@ किसी अन्य प्रोग्राम का उपयोग करना उपयोगी नहीं है - OP ने विशेष रूप से ImageMagick के बारे में पूछा। प्रतिक्रिया होनी चाहिए "आपको पता होना चाहिए कि आप क्या कर रहे हैं, इसे अपने जोखिम पर करें, सुनिश्चित करें कि आप सिस्टम सुरक्षित हैं, यही कारण है कि आपको ऐसा नहीं करना चाहिए, और यहां यह है कि यह कैसे करना है"।
कोलोनुक

2
ओपी (और मेरे सहित वेब खोज द्वारा यहां आने वाले लोग) अब तक ImageMagick का उपयोग कर रहे हैं; इसलिए, इस मुद्दे को सुलझाने में उनका पहला प्रयास ImageMagick का उपयोग करके एक समाधान ढूंढना है, क्योंकि इसमें कम से कम परिवर्तनों की आवश्यकता होती है। इसका मतलब यह नहीं है कि वे बिना शर्त ImageMagick का उपयोग करना चाहते हैं।
मैरियन

3
मुझे सुरक्षा और सुरक्षा के मामले में हजारों लोगों द्वारा देखी गई क्यू एंड ए साइट के लिए यह अनुपयुक्त दृष्टिकोण बहुत अच्छा लगता है (यह पृष्ठ 100k बार देखा गया है और इस समस्या के लिए शीर्ष खोज परिणाम है) - और चलो यहाँ स्पष्ट है, तनाव के लिए एक बड़ा और मुखर प्रयास था इस भेद्यता के महत्व को, इसे ( publicetragick.com ) प्रचारित करने के लिए स्थापित एक समर्पित साइट सहित - मैरिएन का सुझाव है कि बाईपास की गई सुरक्षा के बजाय विकल्प मांगा जाना चाहिए। मैंने इसके बजाय GIMP का उपयोग करना चुना। popplerघोस्टस्क्रिप्ट का एक विकल्प है (जो convertछवियों के लिए पीडीएफ पृष्ठों को रेखापुंज करने के लिए निर्भर करता है)
लुई मैडॉक्स

1
क्या अस्थायी रूप से सुरक्षा नीति को अक्षम करने के लिए कमांड लाइन विकल्प नहीं है? तब हम इसका उपयोग उन विशिष्ट पीडीएफ फाइलों के लिए कर सकते थे, जिन पर हमें भरोसा है।
HRJ

27

यदि किसी को इसे इंस्टॉल करने के बाद एक कमांड के साथ करने की आवश्यकता है, तो इसे चलाएं!

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

6
शॉर्टर:sed -i 's/\(<policy domain="coder" rights=\)"none" \(pattern="PDF" \/>\)/\1"read|write"\2/g' /etc/ImageMagick-6/policy.xml
लेफ्टरेंबाउट

5
अधिक संक्षिप्त। और सुडो को अंदर / आदि एक फाइल को संपादित करने की आवश्यकता है sudo sed -i '/PDF/s/none/read|write/' /etc/ImageMagick-6/policy.xml
नावेद


24

उच्चतम वोटों के साथ जवाब (मुझे टिप्पणी जोड़ने के लिए पर्याप्त प्रतिष्ठा नहीं है) एमवीजी लाइन पर टिप्पणी करने का सुझाव देता है, लेकिन इस पर ध्यान दें:

CVE-2016-3714

ImageMagick ".svg / .mvg" फाइलों का समर्थन करता है, जिसका अर्थ है कि हमलावर एक स्क्रिप्टिंग भाषा में कोड क्राफ्ट कर सकते हैं, जैसे MSL (मैजिक स्क्रिप्टिंग लैंग्वेज) और MVG (मैजिक वेक्टर ग्राफिक्स), इसे एक इमेज फाइल के रूप में प्रयोग किए जाने वाले सर्वर पर अपलोड करें और बल दें जैसा कि ऊपर वर्णित सर्वर साइड पर दुर्भावनापूर्ण आदेश चलाने के लिए सॉफ़्टवेयर। उदाहरण के लिए एक फाइल में निम्नलिखित कमांड्स को जोड़ना और एक वेबसर्वर पर अपलोड करना जो एक कमजोर इमेजमैजिक संस्करण का उपयोग करता है, जिसके परिणामस्वरूप सर्वर पर कमांड "ls -la" रन होगा।

exploit.jpg:

धक्का ग्राफिक-संदर्भ दृश्य बॉक्स 0 0 640 480 'url ( https://website.com/image.png "| ls" -la)' पॉप ग्राफिक-संदर्भ

तथा

7.0.1-2 या 6.9.4-0 से नीचे का कोई भी संस्करण संभावित रूप से असुरक्षित है और प्रभावित दलों को जितनी जल्दी हो सके नवीनतम ImageMagick संस्करण में अपग्रेड करना चाहिए।

स्रोत


3
मैंने MVG और PDF पर टिप्पणी नहीं की -> JPG रूपांतरण अभी भी काम कर रहा है। धन्यवाद।
रिमु एटकिंसन

1
6.7.7-10 नवीनतम संस्करण की तरह दिखता है , जो 9/28/2018 को जारी किया गया)। मैं क्या खो रहा हूँ? $convert --version Version: ImageMagick 6.7.7-10 2018-09-28 Q16 http://www.imagemagick.org
हैप्सट्रान

नया संस्करण है imagemagick.org/script/download.php संभवतः आपका लिनक्स वितरण पुराने का उपयोग करता है। उबंटू 16.04 वर्तमान में 6.8.9-9 का उपयोग करता है
निकोले इवानोव

1
अच्छा है, इसलिए उबंटू टीम के लिए उचित समाधान नए संस्करण में इमेजमैगिक को अपडेट करना होगा, न कि मौजूदा को तोड़ने के लिए।
9ilsdx 9rvj 0lo

2
नहीं। उबंटू एक फीचर-फ्रीज वितरण है और यह नए रिलीज के साथ अपस्ट्रीम नहीं करेगा।
बुओ-रेन लिन

19

अपने उबंटू 16.04 सिस्टम पर हाल ही में अपडेट के बाद, मैंने भी यह त्रुटि तब शुरू की है जब उन्हें .dfs में बदलने के लिए .ps फाइलों पर कन्वर्ट करने की कोशिश की जा रही है।

इस फिक्स ने मेरे लिए काम किया:

एक टर्मिनल रन में:

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

यह gedit टेक्स्ट एडिटर में policy.xml फ़ाइल खोलना चाहिए। यदि ऐसा नहीं होता है, तो आपकी छवि मैजिक एक अलग स्थान पर स्थापित हो सकती है। फिर बदलो

rights="none" 

सेवा

rights="read | write" 

फ़ाइल के नीचे पीडीएफ, ईपीएस और पीएस लाइनों के लिए। सहेजें और बाहर निकलें, और छवि मैजिक को फिर से काम करना चाहिए।



इसने उबंटू 18.04 ImageMagick 6.9.7-4 पर मदद की। धन्यवाद।
और

11

बस /etc/ImageMagick/policy.xml फ़ाइल हटाएं।


1
सरल अभी तक सही। मैंने ऐसा इसलिए किया क्योंकि यह परीक्षण ट्रैविस पर विफल हो रहा है
डैन रे ओकिंडो

1
यह एकमात्र समाधान है जो टन के पदों से काम करता है। मैंने इसका नाम बदल दिया policy-disabled.xml। मुझे लगता है कि मैं इसे तब तक बहाल कर दूंगा जब तक कि मैं निश्चित नहीं हूं कि सुरक्षा मुद्दों को संबोधित किया जाता है
ग्रूवेनटेकर

और बृहस्पति नोटबुक के मामले में अपना कर्नेल पुनः आरंभ करने के बाद
निकोल डगलस

2

यहाँ कई सुझावों को पढ़ने और विचारों के संयोजन के बाद, मेरे लिए /etc/ImageMagick-6/policy.xml में परिवर्तन आवश्यक थे:

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

... अधिकार = "कोई नहीं" ने मदद नहीं की। ... पैटर्न = "LABEL" neccessary नहीं था। हालाँकि मैं बड़ी पीएनजी फाइलों के साथ काम नहीं करता (केवल ~ 1 एमबी) मेमोरी सीमा में कुछ बदलाव भी आवश्यक थे:

<policy domain="resource" name="memory" value="2GiB"/>

(256Mib के बजाय), और

<policy domain="resource" name="area" value="2GB"/>

(128 एमबी के बजाय)


2

जब pdf को jpg में बदलने की कोशिश की जा रही थी तो मुझे यह त्रुटि आई और इस विधि का उपयोग करके इसे हल किया: sudo vi /etc/ImageMagick*/policy.xml

परिवर्तन:

नीति डोमेन = "कोडर" अधिकार = "कोई नहीं" पैटर्न = "पीडीएफ"

सेवा:

नीति डोमेन = "कोडर" अधिकार = "पढ़ो। लिखो" पैटर्न = "पीडीएफ"

स्रोत: http://realtechtalk.com/ImageMagick_Convert_PDF_Not_Authorized-2217-articles


2

यदि आपको एक ही टूल के माध्यम से रेखापुंज फ़ाइलों और PDF / PS / EPS को संभालने की आवश्यकता नहीं है, तो ImageMagick की सुरक्षा को ढीला न करें।

इसके बजाय, अपने वेब अनुप्रयोगों के लिए अपनी रक्षा को गहराई से बनाए रखें, जांचें कि आपकी घोस्टस्क्रिप्ट को सभी ज्ञात -dSAFERकमजोरियों के लिए पैच किया गया है और फिर इसे सीधे लागू करें।

gs -dSAFER -r300 -sDEVICE=png16m -o document-%03d.png document.pdf
  • -dSAFER आप विरासत-संगतता से बाहर निकलते हैं "रन पोस्टस्क्रिप्ट एक ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा" मोड के रूप में बाहरी दुनिया के साथ बातचीत करने की पूर्ण अनुमति देगा।
  • -r300 300 के लिए वांछित DPI सेट करता है (डिफ़ॉल्ट 72 है)
  • -sDEVICEआउटपुट प्रारूप निर्दिष्ट करता है ( अन्य विकल्पों के लिए मैनुअल के उपकरण अनुभाग देखें )।
  • -o के लिए एक आशुलिपि है -dBATCH -dNOPAUSE -sOutputFile=
  • घोस्टस्क्रिप्ट मैनुअल का यह खंड मल्टी-फाइल फाइलन आउटपुट के लिए कुछ उदाहरण स्वरूप देता है लेकिन, वास्तविक वाक्यविन्यास परिभाषा के लिए, यह आपको सी प्रिंटफ (3) फ़ंक्शन के लिए दस्तावेज़ में इंगित करता है।

यदि आप ईपीएस फ़ाइलों को प्रदान कर रहे हैं, -dEPSCropतो इसे जोड़ें ताकि यह आपके आउटपुट को पृष्ठ आकार में न बदल सके और -sDEVICE=pngalphaपारदर्शी पृष्ठभूमि प्राप्त कर सके।


एक सुरक्षित समाधान के लिए धन्यवाद। मुझे यकीन है कि मैं कभी भी GhostScript कमांड लाइन के विकल्पों को याद रख पाऊंगा! :)
संकट लुइगो

@CrisLuengo मैं भी नहीं होगा। इसलिए मैंने इसे कई Google परिणामों पर पोस्ट किया, क्योंकि मुझे पता चला कि यह प्रश्न का एक अच्छा जवाब था। : P
ssokolow

1
मुझे -r600 -dDownScaleFactor=4150 डीपीआई लेकिन बेहतर एंटी-अलियासिंग के साथ फाइल बनाने के लिए अच्छे परिणाम मिले ।
जॉन कोल

0

मुझे भी त्रुटि हुई error/constitute.c/ReadImage/453 जब एक ईपीएस को छवि मैजिक के साथ जीआईएफ में बदलने की कोशिश कर रहा था । मैंने sNICkerssss द्वारा प्रस्तावित समाधान की कोशिश की, लेकिन फिर भी त्रुटियां थीं (हालांकि पहले वाले से अलग) ई 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" />

1
यह वास्तव में सवाल का जवाब नहीं देता है। यदि आपका कोई अलग प्रश्न है, तो आप प्रश्न पूछकर क्लिक करके पूछ सकते हैं । पर्याप्त प्रतिष्ठा होने पर आप इस प्रश्न पर अधिक ध्यान आकर्षित करने के लिए एक इनाम भी जोड़ सकते हैं । - समीक्षा से
सायरन

सलाह के लिये धन्यवाद। मैंने इस बीच अपना जवाब संपादित किया। वैसे भी मुझे वास्तव में लगा कि यह sNICkerssss उत्तर पर एक टिप्पणी होनी चाहिए थी, लेकिन जब से मैं इसे जोड़ नहीं सकता, तो मुझे लगा सबसे अच्छा तरीका है
lambertmular

@ सायरन यह एक उत्तर है, गरीब माना जाता है क्योंकि यह अन्य उत्तरों से कॉपी करता है।
9ilsdx 9rvj 0lo

@ 9ilsdx9rvj0lo मेरी टिप्पणी संपादन से पहले की थी। stackoverflow.com/posts/52700739/revisions
सिरेंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.