Політика безпеки 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

30
Я знайшов рядок <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />і просто прокоментував це, щоб він працював.
jakob-r


17
@ jakob-r: Я думаю, ви це прокоментували ... ;-)
AstroFloyd

1
Переконайтеся , що Ghostscript оновлюється kb.cert.org/vuls/id/332928
ykay говорить відновило Моніка

98

Як зазначено в деяких коментарях, вам потрібно відредагувати політику ImageMagick в /etc/ImageMagick-7/policy.xml. Більш конкретно, в ArchLinux на момент написання (01.05.2019) наступний рядок коментований:

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

Просто перегорніть його між собою <!--та -->прокоментуйте, і перетворення в PDF має працювати знову.


1
переконайтесь, що ghostscript оновлено kb.cert.org/vuls/id/332928
гаразд каже, Відновіть Моніку

6
У чому сенс цієї функціональності? Щоб користувачі не могли створювати PDF-файли?
Обмежене спокутування

6
Частково так. Оскільки ImageMagick часто використовується на веб-сайтах для обробки завантажених файлів - і PDF є одним з форматів файлів, який в основному може містити будь-який виконуваний код - кожен, хто має дозволи на завантаження, може інакше виконати будь-яке завдання, до якого користувач Інтернету має доступ. Те саме, якщо хтось обманув вас особисто перетворити шкідливий PDF в будь-який інший формат.
TwoD


25

Це пов’язано з вразливістю безпеки, на яку йшлося в 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.