覆盖默认的ImageMagick policy.xml

use*_*354 10 xml imagemagick ubuntu-16.04

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

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

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

$dpkg -S /etc/ImageMagick-6/policy.xml 
imagemagick-common: /etc/ImageMagick-6/policy.xml
Run Code Online (Sandbox Code Playgroud)

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

$ cat ~/.config/ImageMagick/policy.xml
<policymap>
    <policy domain="coder" rights="read|write" pattern="PDF" />
</policymap>
Run Code Online (Sandbox Code Playgroud)

似乎,这个文件被发现并加载:

$ 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
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.

not authorized 提出异常.

如何强制ImageMagic更喜欢~/.config/ImageMagick/policy.xml设置与/etc/ImageMagick-6/policy.xml设置?或者我可以使用其他一些解决方案来允许PDF读写吗?

hrv*_*j3e 7

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

如果安装了ImageMagick ,则仅强制执行系统路径中的策略,否则如果很容易被覆盖,那么它就不是一个安全策略。在某些情况下,用户可以设置某些资源限制,但只能设置小于管理员设置的值(例如,管理员设置2GB的内存限制,用户可以设置1GB的限制,但不能设置3GB)。

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

更新(Ubuntu 18.04、2019-10、ImageMagick 6.9.7-4 Q16 x86_64、8:6.9.7.4+dfsg-16ubuntu6.7):

预先设置一条有效路径MAGICK_CONFIGURE_PATH

/my/path/policy.xml

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

MAGICK_CONFIGURE_PATH='/my/path/:/etc/ImageMagick-6/' identify -list policy
MAGICK_CONFIGURE_PATH='/my/path/:/etc/ImageMagick-6/' identify -list resource

Run Code Online (Sandbox Code Playgroud)

  • 我的版本是 6.9.11,虽然我可以添加到策略中,但我无法重新启用已禁用的功能。这是一个非常愚蠢的设计决策;如果我可以运行命令,我应该能够覆盖系统策略。在最好的情况下,用户拥有 root 访问权限并为系统上的每个人更改策略!如果这还不够可怕,那么还有另一种选择,那就是编译自己的 ImageMagic 来绕过这个问题,那么用户编译的版本很可能不会被更新或检查漏洞,从而导致潜在的额外风险。 (2认同)

小智 5

我和你一样有同样的问题。通过安全更新,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


Dra*_*rok 5

我花了几个小时来解决这个问题,终于找到了一个相对简单的解决方案。

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

  • 命令“MAGICK_CONFIGURE_PATH=$HOME/.config/ImageMagick mogrify -format png test.pdf”对我不起作用,仍然“未授权”。我的policy.xml与问题中的相同。我做错了什么?你能在你的答案中添加一个具体的例子吗? (2认同)