Accueil > INFORMATIQUE > Linux/Ubuntu > Evince n’enregistre pas les fichiers, message “Permission refusée”

Evince n’enregistre pas les fichiers, message “Permission refusée”

Comment enregistrer un fichier PDF avec Evince sur un partage monté de façon non conventionnelle

samedi 23 septembre 2017, par thierrybo

Je ne sais pas si vous vous rappelez, mais depuis 2006, date où j’ai commencé à utiliser Ubuntu, le système utilisé pour accéder aux ressources réseaux depuis Nautilus ("Fichiers") a changé. On a eu GnomeVFS jusqu’en 2008, ensuite GVFS, et durant cette période, si on utilisait Nautilus pour monter un partage sur un NAS par exemple, la syntaxe "réelle" du point de montage a changé plusieurs fois. Aujourd’hui, quand on clique sur un dossier partagé, le point de montage est par exemple /run/user/1000/gvfs/smb-share:server=192.168.1.253,share=documents.

Récemment je me suis aperçu que Evince ("Visionneur de documents") qui permet de lire des fichiers pdf sous Gnome permettait maintenant de les annoter (surlignage, notes). Je ne sais pas si j’étais passé à côté et que ces fonctions existaient depuis longtemps, toujours est-il que je suis un utilisateur "frénétique" des outils d’annotations de PDF depuis au moins 15 ans. J’enregistre des pages web intéressantes en pdf et j’utilise les outils de commentaires et annotations pour n’imprimer aucun papier.

Comme Evince ne permettait pas de le faire, j’utilisai un shareware Windows que j’avais acheté et qui fonctionne étonnement bien sous Wine, PDF-XChange Viewer.

Malheureusement en rapport avec le début de l’article, un changement de Nautilus dans la façon d’accéder aux partages réseaux depuis 2 ou 3 ans a provoqué l’impossibilité d’enregistrer tout document depuis PDF-XChange Viewer. Et plus généralementt aucune application ouverte utilisant Wine ne pouvait plus être ré-enregistrée sur le NAS. Pour moi cela venait du fait que le chemin utilisé par Wine pour accéder au NAS utilisait la syntaxe vue plus haut "/run/user/1000/gvfs/smb-share:server=192.168.1.253,share=documents", même si le fichier PDF était accédé depuis Nautilus qui "masque" le chemin complet. Et cette syntaxe devait être trop compliquée ou trop longue.

Pourtant, il suffisait de l’enregistrer sous un nouveau nom, et la ça passait, bizarre ! Donc c’est ce que j’ai fait pendant deux ans, enregistrer mes modifications sous un nouveau nom, supprimer l’original, renommer le nouveau fichier avec le nom original ! Vraiment pénible.

Une solution aurait pu être de monter le NAS au démarrage de façon statique dans fstab, mais dans mon cas le nas n’est pas allumé 24 heures sur 24. Et puis je suis tombé sur autofs, et là, magie. Si vous voulez l’installer il y a un bon article sur Le blog de Guillaume. L’intérêt d’un tel montage, c’est qu’on revient sur du pur classique linux, avec un vrai chemin de montage dans /mnt/ ou /cifs/ ou /misc/. Depuis les programmes que j’utilise sous Wine peuvent enfin enregistrer les modifications faites dans le fichier ouvert normalement.

Fin de l’histoire alors ? Eh bien non. Quand j’ai découvert qu’Evince pouvait aussi faire du surlignage et des annotations, je n’étais pas encore passé à autofs. Et après le passage à autofs, patatra, impossible de réenregistrer un pdf modifié sur lui même avec Evince, exactement le problème que j’avais avant avec PDX-XChange Viewer !! Un comble, un programme natif Linux qui fonctionne moins bien sous Linux qu’un programme Windows tournant sous Wine.

Après quelques recherches, il se trouve que le coupable est AppArmor. Extrait de Wikipédia :

AppArmor (Application Armor) est un logiciel de sécurité pour Linux édité sous Licence publique générale GNU.

AppArmor permet à l’administrateur système d’associer à chaque programme un profil de sécurité qui restreint ses accès au système d’exploitation.

En clair, c’est un système de sécurité non pas basé sur les fichiers mais sur les applications. Cela permet de limiter l’accès de chaque application aux ressources, qu’elles soient locales ou distantes. Dans Ubuntu, il y a quelques applications qui sont concernées, dont Evince. Il y a trois solutions possible :

  • La solution bourrin, désinstaller AppArmor. C’est sûr je ne serais plus embêté, mais cette application fait partie intégrante d’Ubuntu et enlever de la sécurité n’est pas une bonne idée de façon générale.
  • Passer Evince en mode « complain ». Le mode strict (mode par défaut) applique les règles (c’est à dire qu’il bloque effectivement) et rapporte les tentatives de violation, alors que le mode relâché se contente d’enregistrer dans les journaux système les appels système qui auraient été bloqués, sans les bloquer réellement ).
  • Trouver "pourquoi" AppArmor bloque Evince, et essayer de le corriger.

C’est la troisième méthode que j’ai choisie. Chaque application gérée par Apparmor est régie par un « profil » qui précise les ressources auxquelles elle a accès. Il se trouve que l’ensemble des applications gérées par AppArmor se base sur une variable HOMEDIRS qui contient une liste de répertoires considérés comme étant des répertoires personnels où les applications peuvent écrire. L’accès au répertoire réseau de façon classique par Nautilus (montés dans var/run/user ..) est autorisé nativement, mais pas ceux montés par autofs. Il suffit donc d’ajouter à la variable HOMEDIRS le chemin du point de montage de son NAS.

Pour cela il faut ajouter un fichier texte dans le répertoire /etc/apparmor.d/tunables/home.d/ contenant une ligne présentée par exemple comme ceci :

@{HOMEDIRS}+=/mnt/Documents/

Tous les fichiers dans ce répertoire seront lus. Ce fichier peut-être créé manuellement, cependant la méthode conseillée est la suivante :

sudo dpkg-reconfigure apparmor

Vous ajoutez votre où vos répertoires autorisés et il seront ajoutés au fichier déjà existant etc/apparmor.d/tunables/home.d/ubuntu

Et voilà !

Répondre à cet article | RétroLiens :0


Répondre à cet article