覆盖默认的ImageMagick policy.xml

时间:2018-10-08 13:11:49

标签: xml imagemagick ubuntu-16.04

我在ubuntu-16.04上使用ImageMagick将pdf文件转换为png图像。

最近,转换停止了,因为软件包imagemagick-common已将<policy domain="coder" rights="none" pattern="PDF" />添加到/etc/ImageMagick-6/policy.xml中的policy.xml文件中

我不想更改/etc/ImageMagick-6/policy.xml来启用PDF,因为此文件属于软件包,而另一个更新可能会再次重写此文件

$dpkg -S /etc/ImageMagick-6/policy.xml 
imagemagick-common: /etc/ImageMagick-6/policy.xml

我在主目录中创建配置文件

$ cat ~/.config/ImageMagick/policy.xml
<policymap>
    <policy domain="coder" rights="read|write" pattern="PDF" />
</policymap>

似乎已找到并加载了该文件:

$ identify -list policy
Path: /etc/ImageMagick-6/policy.xml
...
Policy: Coder
    rights: None 
    pattern: PDF
...
Path: /home/vasiliy/.config/ImageMagick/policy.xml
Policy: Coder
    rights: Read Write 
    pattern: PDF

但这没有帮助。

not authorized引发异常。

如何强制ImageMagic首选~/.config/ImageMagick/policy.xml设置而非/etc/ImageMagick-6/policy.xml设置?或者我可以使用其他解决方案来允许PDF读写吗?

5 个答案:

答案 0 :(得分:3)

我和您一样遇到同样的问题。通过安全更新,ImageMagick现在默认情况下禁止PDF处理。 ghostscript(https://www.kb.cert.org/vuls/id/332928)中的底层漏洞已得到修复,但默认配置尚未更改。

我对~/.config/ImageMagick/policy.xml做了一些实验,发现该配置实际上已使用并可以正常工作。但是您不能允许全局禁用的功能。您只能对用户流程添加更多限制。

所以我的建议:

  1. 调整/etc/ImageMagick-6/policy.xml
  2. 等待,直到软件包维护者决定默认情况下再次激活该功能

更新:

使用#1时,请确保不要中断自动更新。也许这可以帮助您找到解决方案:https://unix.stackexchange.com/questions/138751/unattended-upgrades-and-modified-configuration-files

答案 1 :(得分:3)

我花了几个小时进行这项工作,终于找到了一个相对简单的解决方案。

您必须告诉ImageMagick优先于默认配置加载配置文件,这可以通过将MAGICK_CONFIGURE_PATH环境变量设置为policy.xml所在的目录来实现。

答案 2 :(得分:0)

https://github.com/ImageMagick/ImageMagick/issues/1342#issuecomment-429494152

  

如果Imageemick已安装 ,则仅强制执行系统路径中的策略,否则,如果可以轻松覆盖它,那么它就不会成为安全策略。在某些情况下,用户可以设置某些资源限制,但只能设置@小于管理员设置的值(例如,管理员将内存限制设置为2GB,用户可以将限制设置为1GB,但不能设置3GB)。

     

ImageMagick具有未安装构建选项。使用该生成选项,ImageMagick将允许您在帖子中提到的路径中的任何策略覆盖安全策略。

答案 3 :(得分:0)

我在为moodle插件添加php扩展时遇到了这个问题。这是我的修复: 我在 /etc/ImageMagick-6/policy.xml

中改变了这个
<policy domain="coder" rights="none" pattern="PDF" />

到这里

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

答案 4 :(得分:0)

对于 Windows 操作系统:

Under Windows, ImageMagick searches for these configuration files in the 
following order, and loads them if found:

$MAGICK_CONFIGURE_PATH
<windows registry>
$PREFIX/config
$USERPROFILE/.config/ImageMagick
<client path>

因此您可以在 cmd.exe 中运行下一个命令以打开环境变量编辑器:

START "" "%SystemRoot%\System32\rundll32.exe" "%SystemRoot%\System32\sysdm.cpl",EditEnvironmentVariables

然后单击“新建按钮”之一并输入:

Variable Name: MAGICK_CONFIGURE_PATH
Variable Value: PATH\TO\THE\INSTALL\DIR\ROOT ( It may be something like this C:\Program Files\ImageMagick)

然后重新启动任何打开的 cmd.exe 窗口以更新变量并进行测试!