it-roy-ru.com

конвертировать: не авторизовано `aaaa` @ error/constitute.c/ReadImage/453

Я хочу создать картинку с изображением капчи с помощью convert из ImageMagick.

И я следую это , но есть некоторые проблемы.

Входные данные в моей оболочке Linux:

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

Ошибка:

конвертировать: не авторизовано adfgh @ error/constitute.c/ReadImage/453 . конвертировать: отсутствует изображение с именем файла ./test.png @ ошибка/convert.c/ConvertImageCommand/3015

Мой ImageMagick: Версия: 6.7.2-7, я устанавливаю его с yum install ImageMagick.

Я невежественен. Любой совет, пожалуйста?

200
jianwei

Я использую ImageMagick в php (v.7.1), чтобы нарезать файл PDF на изображения.

Сначала я получил такие ошибки, как:

Тип исключения: ImagickException

Сообщение об исключении: не авторизовано ..... @ error/constitute.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" />
    

Затем перезагрузите ваш веб-сервер (nginx, Apache).

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

и теперь все работает отлично.

У меня «ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28» На «Ubuntu 16.04.5 LTS».

105
Lv2eof

Существует файл /etc/ImageMagick/policy.xml, который устанавливается yum. Он запрещает почти все (в целях безопасности и защиты вашей системы от перегрузки вызовами ImageMagick).

Если вы получаете ошибку ReadImage, как указано выше, вы можете изменить строку на:

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

который должен решить проблему.

Файл содержит кучу документации, так что вы должны прочитать это. Например, если вам нужно больше разрешений, вы можете объединить их так:

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

... что предпочтительнее, чем удаление всех проверок прав доступа (то есть удаление или комментирование строки).

49
kristina

Ответ с наибольшим количеством голосов (у меня недостаточно репутации, чтобы добавить комментарий) предлагает закомментировать строку MVG, но имейте в виду следующее:

CVE-2016-3714

ImageMagick поддерживает файлы «.svg/.mvg», что означает, что злоумышленники могут создать код на языке сценариев, например, MSL (Magick Scripting Language) и MVG (Magick Vector Graphics), загрузите его на сервер замаскирован под файл образа и заставляет программное обеспечение запускать вредоносное ПО команды на стороне сервера, как описано выше. Например добавление следующие команды в файле и загрузка его на веб-сервер, который использует уязвимая версия ImageMagick приведет к выполнению команды "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.

Источник

21
Nikolay Ivanov

Если кому-то нужно сделать это одной командой после установки, запустите это!

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

После недавнего обновления в моей системе Ubuntu 16.04 я также начал получать эту ошибку при попытке запустить конвертирование файлов .ps для преобразования их в pdfs. 

Это исправление сработало для меня: 

В терминале запустить:

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

Это должно открыть файл policy.xml в текстовом редакторе gedit. Если это не так, ваша магия изображения может быть установлена ​​в другом месте. Тогда поменяй 

rights="none" 

в 

rights="read | write" 

для PDF, EPS и PS строк в нижней части файла. Сохраните и выйдите, и изображение снова должно сработать. 

14
Murray Hoggett

Просто удалите файл /etc/ImageMagick/policy.xml.

1
Jarda Pavlíček

У меня также была ошибка error/constitute.c/ReadImage/453 при попытке конвертировать eps в gif с магией изображения. Я попробовал решение, предложенное 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