Конвертировать: не разрешено `aaaa` @error/составляют .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. convert: отсутствует имя файла изображения ./test.png @error/convert.c/ConvertImageCommand/3015

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

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

Ответ 1

Я использую 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).

Ответ 2

Я использую много раз 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".

Ответ 3

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

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

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

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

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

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

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

Ответ 4

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

CVE-2016-3714

ImageMagick поддерживает файлы ".svg/.mvg", что означает, что злоумышленники могут создавать код на языке сценариев, например MSL (Magick Scripting Language) и MVG (Magick Vector Graphics), загружать его на сервер, замаскированный под файл изображения, и принудительно программное обеспечение для запуска вредоносных команд на стороне сервера, как описано выше. Например, добавление следующих команд в файл и загрузка его на веб-сервер, который использует уязвимую версию ImageMagick, приведет к выполнению команды "ls -la" на сервере.

exploit.jpg:

push графический контекст просмотра 0 0 640 480 pop 'url (https://website.com/image.png "| ls" -la)' pop графический контекст

А также

Любая версия ниже 7.0.1-2 или 6.9.4-0 потенциально уязвима, и заинтересованные стороны должны как можно скорее обновить ее до последней версии ImageMagick.

Источник

Ответ 5

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

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

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

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

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

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

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

rights="none" 

в

rights="read | write" 

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

Ответ 7

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

Ответ 8

У меня также была ошибка error/constitute.c/ReadImage/453 при попытке конвертировать eps в gif с магией изображения. Я попробовал решение, предложенное sNICkerssss, но все еще имел ошибки (хотя и отличные от первого) e error/constitute.c/ReadImage/412 Что решило проблему, 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" />