转换:未授权的`aaaa` @ error/construct.c/ReadImage/453

jia*_*wei 274 imagemagick imagemagick-convert

我想通过convertImageMagick 创建一个验证码pic .

我遵循这个,但有一些问题.

输入在我的linux shell中:

convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png
Run Code Online (Sandbox Code Playgroud)

错误是:

转换:未授权adfgh@ error/construct.c/ReadImage/453.转换:缺少图像文件名./test.png@ error/convert.c/ConvertImageCommand/3015

我的ImageMagick:版本:6.7.2-7,我安装它yum install ImageMagick.

我很无能为力.有什么建议吗?

sNI*_*sss 396

我在php(v.7.1)中使用ImageMagick将PDF文件切片为图像.

首先我得到的错误如下:

异常类型:ImagickException

异常消息:未授权..... @ error/construct.c/ReadImage/412

经过一些变化,convert我开始变得像以下一样的错误:

异常类型:ImagickException

异常消息:无法创建临时文件.....权限被拒绝@ error/pdf.c/ReadPDFImage/465

我的修复:

在文件/etc/ImageMagick-6/policy.xml(或/etc/ImageMagick-6/policy.xml)

  1. 评论行

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
    
    Run Code Online (Sandbox Code Playgroud)
  2. 改变线

    <policy domain="coder" rights="none" pattern="PDF" />
    
    Run Code Online (Sandbox Code Playgroud)

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加行

    <policy domain="coder" rights="read|write" pattern="LABEL" />
    
    Run Code Online (Sandbox Code Playgroud)

然后重新启动您的Web服务器(nginx,apache).

  • 如果您在2018年10月4日之后在Ubuntu盒子上遇到此问题,这应该是可接受的答案.其他发行版的其他问题? (53认同)
  • 我今天刚刚在Ubuntu 16.04上遇到这个问题.有什么变化吗?此外,我不需要添加LABEL行,只需将PDF的权限从"none"更改为"read". (12认同)
  • 这是相关的更改日志:https://launchpad.net/ubuntu/+source/imagemagick/8 :6.7.7.10-6ubuntu3.13 (12认同)
  • 在我的Ubuntu 18.04.1 LTS框中解决了一个非常类似的问题 (4认同)
  • 在我的服务器中,`policy.xml`文件最后一次更新于9月29日,但问题就出现了.我正在使用ubuntu服务器14.04.5,但设置了自动更新.在apt log中,我发现了这个更新:`imagemagick-common:amd64(6.7.7.10-6ubuntu3.12,6.7.7.10-6ubuntu3.13),` (3认同)
  • 别忘了重启php-fpm以及`sudo systemctl restart php7.2-fpm`或者你有什么版本 (3认同)
  • 它对我有用.但我已经从@Nikolay Ivanov检查了CVE-2016-3714的答案,所以我从配置中删除了"MVG"评论,但仍然有效,因为我只使用Imagick进行PDF转换. (3认同)
  • 对于命令行用法,例如`convert 1.png 2.png out.pdf`,您唯一需要的更改是`&lt;policy domain =“ coder” rights =“ read | write” pattern =“ PDF” /&gt;。 (2认同)
  • 在ubuntu 18.04上,我只评论该行下的行:`<! - 禁用ghostscript格式类型 - >`并工作. (2认同)

小智 143

我使用ImageMagic convert命令多次将*.tif文件转换为*.pdf文件.

我不知道为什么但是今天我开始收到以下错误:

convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.
Run Code Online (Sandbox Code Playgroud)

发出命令后:

convert a.tif a.pdf
Run Code Online (Sandbox Code Playgroud)

阅读完上述答案后,我编辑了该文件 /etc/ImageMagick-6/policy.xml

并改变了这条线:

policy domain="coder" rights="none" pattern="PDF" 
Run Code Online (Sandbox Code Playgroud)

policy domain="coder" rights="read|write" pattern="PDF"
Run Code Online (Sandbox Code Playgroud)

现在一切正常.

我在"Ubuntu 16.04.5 LTS"上有"ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28".

  • 这是最小的正确答案 - sNICkerssss的答案在技术上是正确的,但命令行使用`convert`到PDF只需要一步. (5认同)
  • 不要这样 由于可能执行远程代码,此限制已作为安全措施引入(请参阅https://launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13)。因此正确的答案是:您应该使用另一个程序来执行此任务。 (4认同)

kri*_*ina 58

有一个/etc/ImageMagick/policy.xml由yum安装的文件.它几乎不允许所有内容(为了安全起见,保护您的系统不会因为ImageMagick调用而过载).

如果您收到上述ReadImage错误,可以将该行更改为:

<policy domain="coder" rights="read" pattern="LABEL" />
Run Code Online (Sandbox Code Playgroud)

这应该解决问题.

该文件中包含大量文档,因此您应该阅读它.例如,如果您需要更多权限,可以将它们组合为:

<policy domain="coder" rights="read|write" pattern="LABEL" />
Run Code Online (Sandbox Code Playgroud)

...最好删除所有权限检查(即删除或注释掉行).

  • 我发现这种对安全性不屑一顾的方法对于成千上万人浏览的问答网站来说非常不合适(该页面已被浏览了 10 万次,并且是此问题的顶部搜索结果) - 让我们在这里明确一点,有一个大规模的、公开的尝试来强调该漏洞的重要性,包括建立一个专门的网站来宣传它 (https://imagetragick.com/) - Marian 关于应寻求替代方案而不是绕过安全性的建议是有效的。我选择使用 GIMP。`poppler` 是 GhostScript 的替代品(`convert` 依赖它来将 PDF 页面光栅化为图像) (3认同)
  • 不要这样做。由于可能的远程代码执行(请参阅 https://launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13),已引入此限制作为安全措施。所以正确的答案是:你应该使用另一个程序来完成这个任务。 (2认同)
  • @Marian使用其他程序无济于事-OP特别询问了ImageMagick。响应应为“您应该知道自己在做什么,要自己承担风险,确保系统安全,这是为什么不应该这样做,以及如何做”。 (2认同)
  • OP(以及通过网络搜索来到这里的人,包括我)一直在使用 ImageMagick。所以当然,他们解决这个问题的第一次尝试是使用 ImageMagick 找到解决方案,因为这需要最少的更改。这并不意味着他们无条件地想要使用 ImageMagick。 (2认同)

Arm*_*men 26

如果有人需要在安装后使用一个命令执行此操作,请运行此命令!

sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml
Run Code Online (Sandbox Code Playgroud)

  • 更短:`sed -i's/\(<policy domain ="coder"rights = \)"none"\(pattern ="PDF"\ /> \)/\1"读取|写入"\ 2/g'的/ etc/ImageMagick的-6/policy.xml` (6认同)
  • 更简洁.并且sudo需要编辑/ etc中的文件`sudo sed -i'/ PDF/s/none/read | write /'/ etc/ImageMagick-6/policy.xml` (5认同)

Nik*_*nov 23

得票最多的答案(我没有足够的声誉在那里添加评论)建议评论出MVG线,但请记住:

CVE-2016-3714

ImageMagick支持".svg/.mvg"文件,这意味着攻击者可以使用脚本语言编写代码,例如MSL(Magick Scripting Language)和MVG(Magick Vector Graphics),将其上传到伪装成图像文件的服务器并强制执行如上所述,在服务器端运行恶意命令的软件.例如,在文件中添加以下命令并将其上载到使用易受攻击的ImageMagick版本的Web服务器将导致在服务器上运行命令"ls -la".

exploit.jpg:

push graphic-context viewbox 0 0 640 480填充'url(https://website.com/image.png "| ls"-la)'pop graphic-context

任何低于7.0.1-2或6.9.4-0的版本都可能存在漏洞,受影响的各方应尽快升级到最新的ImageMagick版本.

资源

  • 我没有评论出MVG和PDF - > JPG转换仍然有效.谢谢. (3认同)
  • 不可以。Ubuntu 是一个功能冻结发行版,不会向上游提供更新的版本。 (2认同)

小智 13

在我的Ubuntu 16.04系统最近更新后,我也尝试在.ps文件上运行转换以将它们转换为pdf时出现此错误.

这个修复对我有用:

在终端运行中:

sudo gedit /etc/ImageMagick-6/policy.xml
Run Code Online (Sandbox Code Playgroud)

这应该在gedit文本编辑器中打开policy.xml文件.如果没有,您的图像magick可能安装在不同的地方.然后改变

rights="none" 
Run Code Online (Sandbox Code Playgroud)

rights="read | write" 
Run Code Online (Sandbox Code Playgroud)

用于文件底部附近的PDF,EPS和PS行.保存并退出,然后图像magick应该再次工作.


Jar*_*ček 9

只需删除/etc/ImageMagick/policy.xml文件。

  • 这是在大量帖子中唯一有效的解决方案。我将其重命名为“policy-disabled.xml”。我想我会恢复它,直到我确定安全问题得到解决 (2认同)

小智 5

我在尝试将 pdf 转换为 jpg 时遇到此错误并使用以下方法解决了它: sudo vi /etc/ImageMagick*/policy.xml

改变:

策略域=“编码器”权限=“无”模式=“PDF”

到:

策略域=“编码器”权限=“读|写”模式=“PDF”

来源:http ://realtechtalk.com/ImageMagick_Convert_PDF_Not_Authorized-2217-articles