Политика безопасности ImageMagick 'PDF' блокирует конвертацию


176

Кажется, политика безопасности Imagemagick не позволяет мне выполнять это преобразование из pdf в png. Преобразование других расширений, кажется, работает, но не из PDF. Я не менял никаких настроек imagemagick с тех пор, как установил его ... Я использую Arch Linux, если ОС имеет значение.

user@machine $ convert -density 300 -depth 8 -quality 90 input.pdf output.png
convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert: no images defined `output.png' @ error/convert.c/ConvertImageCommand/3288.

Ответы:


214

Ну я добавил

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

как раз перед тем </policymap>в /etc/ImageMagick-7/policy.xmlи что делает его работу еще раз, но не уверен , что о последствиях безопасности этого.


3
Я считаю, что политика PDF была добавлена ​​из-за ошибки в Ghostscript, которая, по моему мнению, теперь исправлена. Так что, если вы используете текущий Ghostscript, тогда у вас должно получиться предоставить эту политику правам на чтение и запись.
fmw42

31
Я нашел строку <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />и просто раскомментировал ее, чтобы она заработала.
Якоб-р

8
Уязвимость в системе безопасности, которая привела к тому, что дистрибутивы реализуют политику, упоминается здесь: kb.cert.org/vuls/id/332928
Джейсон Сифкен,

17
@ jakob-r: Полагаю, вы это закомментировали ... ;-)
AstroFloyd

1
Убедитесь, что ghostscript обновлен kb.cert.org/vuls/id/332928
ykay говорит восстановить Monica

99

Как указано в некоторых комментариях, вам нужно отредактировать политики ImageMagick в /etc/ImageMagick-7/policy.xml. В частности, в ArchLinux на момент написания (01/01/2019) следующая строка не закомментирована:

<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />

Просто оберните это между <!--и -->прокомментируйте это, и преобразование PDF должно работать снова.


1
убедитесь, что ghostscript обновлен kb.cert.org/vuls/id/332928
ykay говорит восстановить Monica

6
Какой смысл этой функциональности? Чтобы пользователи не могли создавать PDF-файлы?
Ограниченное искупление

6
Частично да. Поскольку ImageMagick часто используется веб-сайтами для обработки загруженных файлов - а PDF относится к одному из форматов файлов, который может в основном содержать любой исполняемый код - любой, у кого есть разрешения на загрузку, может выполнить любую задачу, к которой имеет доступ ваш веб-пользователь. То же самое, если кто-то обманывает вас и переводит вредоносный PDF-файл в любой другой формат.
Два

28

Для меня в моей системе archlinux строка уже была без комментариев. Мне пришлось заменить «нет» на «читать | написать», чтобы это работало.


убедитесь, что ghostscript обновлен kb.cert.org/vuls/id/332928
ykay говорит восстановить Monica

тем же. Я в курсе, кстати.
Юкашима Хуксей

26

Это связано с уязвимостью безопасности, которая была устранена в Ghostscript 9.24 ( источник ). Если у вас более новая версия, вам больше не нужен этот обходной путь. На Ubuntu 19.10 с Ghostscript 6 это означает:

  1. Убедитесь, что у вас Ghostscript ≥9.24:

    gs --version
    
  2. Если да, просто удалите весь следующий раздел из /etc/ImageMagick-6/policy.xml:

    <!-- disable ghostscript format types -->
    <policy domain="coder" rights="none" pattern="PS" />
    <policy domain="coder" rights="none" pattern="PS2" />
    <policy domain="coder" rights="none" pattern="PS3" />
    <policy domain="coder" rights="none" pattern="EPS" />
    <policy domain="coder" rights="none" pattern="PDF" />
    <policy domain="coder" rights="none" pattern="XPS" />
    

Единственное исправление, которое работало для меня на Ubuntu 19.04 с GS 9.26.
ManuelTS

3
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmlработал нормально для меня.
Ричард Кифер

1
Работал на Ubuntu 20.04
Алекс К.

21

для меня на Arch Linux я должен был прокомментировать:

  <policy domain="delegate" rights="none" pattern="gs" />

В моей системе было два файла policy.xml: /etc/ImageMagick-6/policy.xmlи /etc/ImageMagick-7/policy.xml. Позаботьтесь, чтобы отредактировать правильный!
SylvainB

4

В Ubuntu 19.10 я сделал это в /etc/ImageMagick-6/policy.xml

раскомментируйте это

<policy domain="module" rights="read | write" pattern="{PS,PDF,XPS}" />

и прокомментируй это

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

После этого эта команда работает без ошибок

convert -thumbnail x300 -background white -alpha remove sample.pdf sample.png 

0

Я столкнулся с этой проблемой с nextcloud, который не смог создать эскизы для файлов PDF.

Однако ни один из предложенных шагов не решил бы проблему для меня.

В конце концов я нашел причину: принятый ответ сработал, но мне пришлось также перезапустить php-fpm после редактирования файла policy.xml:

 sudo systemctl restart php7.2-fpm.service
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.