Конвертировать: не разрешено `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
)
-
строка комментария
<!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
-
изменить линию
<policy domain="coder" rights="none" pattern="PDF" />
в
<policy domain="coder" rights="read|write" pattern="PDF" />
-
добавить строку
<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" />