web-dev-qa-db-fra.com

remplacer la stratégie ImageMagick par défaut.xml

J'utilise ImageMagick sur ubuntu-16.04 pour convertir un fichier pdf en image png.

Récemment, la conversion a cessé de fonctionner, car le package imagemagick-common ajoutée <policy domain="coder" rights="none" pattern="PDF" /> au fichier policy.xml dans /etc/ImageMagick-6/policy.xml

Je ne veux pas changer /etc/ImageMagick-6/policy.xml pour activer le PDF, car ce fichier appartient au package et une autre mise à jour pourrait à nouveau réécrire ce fichier

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

Je crée un fichier de configuration dans le répertoire personnel

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

Il semble que ce fichier a été trouvé et chargé:

$ 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

Mais ça n'aide pas.

not authorized l'exception est levée.

Comment forcer ImageMagic à préférer ~/.config/ImageMagick/policy.xml paramètres vs /etc/ImageMagick-6/policy.xml réglage? Ou puis-je utiliser une autre solution pour permettre PDF lire | écrire?

10
user6403354

J'ai le même problème que vous. Par une mise à jour de sécurité, ImageMagick interdit désormais le traitement PDF par défaut. La vulnérabilité sous-jacente dans ghostscript ( https://www.kb.cert.org/vuls/id/332928 =) est déjà corrigé mais la configuration par défaut n'est pas encore changée.

J'ai fait quelques expériences avec ~/.config/ImageMagick/policy.xml et a découvert que cette configuration est réellement utilisée et fonctionne. MAIS vous ne pouvez pas autoriser les choses qui sont désactivées globalement. Vous ne pouvez ajouter que des restrictions supplémentaires aux processus de vos utilisateurs.

Alors mes suggestions:

  1. ajuste le /etc/ImageMagick-6/policy.xml
  2. attendez que les responsables du package décident de réactiver la fonctionnalité par défaut

MISE À JOUR:

Lorsque vous utilisez # 1, vous devez vous assurer de ne pas interrompre vos mises à jour automatiques. Cela vous aidera peut-être à trouver une solution: https://unix.stackexchange.com/questions/138751/unattended-upgrades-and-modified-configuration-files

5
Martin Sommer

J'ai passé quelques heures à travailler dessus et j'ai finalement trouvé une solution relativement simple.

Vous devez dire à ImageMagick de charger votre fichier de configuration avec une priorité plus élevée que celle par défaut, ce que vous pouvez faire en définissant le MAGICK_CONFIGURE_PATH variable d'environnement dans le répertoire de votre policy.xml est dans.

3
Drarok

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

Si ImageMagick est installé , seule la stratégie dans le chemin d'accès système est appliquée, sinon ce ne serait pas vraiment une stratégie de sécurité si elle pouvait facilement être remplacée. Dans certains cas, l'utilisateur peut définir certaines limites de ressources mais uniquement @ une valeur inférieure à celle définie par l'administrateur (par exemple, l'administrateur définit une limite de mémoire de 2 Go, l'utilisateur peut définir une limite de 1 Go mais pas de 3 Go).

ImageMagick a une option de construction désinstallée . Avec cette option de construction, ImageMagick permettra à la politique de sécurité d'être remplacée par n'importe quelle politique dans les chemins que vous mentionnez dans votre message.

Mise à jour (Ubuntu 18.04, 2019-10, ImageMagick 6.9.7-4 Q16 x86_64, 8: 6.9.7.4 + dfsg-16ubuntu6.7):

Ajout d'un chemin d'accès à MAGICK_CONFIGURE_PATH travaux.

/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

1
hrvoj3e