[RESOLU] Debian 10 Buster - autoriser liseuse PDF dans apparmor

Bonjour à tous,

j’ai développé un logiciel python3, distribuable avec Pyinstaller pour être standalone, et qui doit permettre de lancer la visionneuse de fichier PDF (pdf créé par mon logiciel), sous Debian 10 Buster.
Mon problème est que le PDF ne s’ouvre pas depuis mon logiciel (mais sous l’environnement système Linux si), et j’obtiens une erreur :

evince: error while loading shared libraries: libsecret-1.so.0: failed to map segment from shared object

J’avais rencontré ce type de problème sous Debian 9 Strech, Mint 18/19, et Ubuntu, mais en paramétrant " apparmor ", le blocage était corrigé.
Voici sur quoi je me basais jusque là pour débloquer la situation :

root@brix:~# apparmor_status
apparmor module is loaded.
14 profiles are loaded.
14 profiles are in enforce mode.
/usr/bin/evince

Installing (apt-get install apparmor-utils) and applying the following workaround

root@brix:~# aa-complain /usr/bin/evince
Setting /usr/bin/evince to complain mode.

Running this again

root@brix:/etc# apparmor_status
apparmor module is loaded.
14 profiles are loaded.
11 profiles are in enforce mode.

Allows you to successfully launch Evince. More information https://help.ubuntu.com/community/AppArmor , including proper ways to modify the apparmor profile.

Mais sous Debian 10 Buster : point de commande " apparmor_status ", ni de " aa-complain " … pour appliquer la même recette qu’auparavant.

Je ne voudrais pas arrêter complètement “apparmor”, mais seulement le configurer pour qu’il laisse “evince” ouvrir mon PDF depuis mon logiciel.

Avez-vous une idée ?
Merci d’avance pour vos retours d’information.

apparmor est il bien activé ?

systemctl status apparmor
● apparmor.service - Load AppArmor profiles
   Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2019-07-18 06:12:13 CEST; 6h ago
     Docs: man:apparmor(7)
           https://gitlab.com/apparmor/apparmor/wikis/home/
  Process: 563 ExecStart=/lib/apparmor/apparmor.systemd reload (code=exited, status=0/SUCCESS)
 Main PID: 563 (code=exited, status=0/SUCCESS)

juil. 18 06:12:11 debian systemd[1]: Starting Load AppArmor profiles...
juil. 18 06:12:11 debian apparmor.systemd[563]: Failed to check for container: Input/output error
juil. 18 06:12:12 debian apparmor.systemd[563]: Restarting AppArmor
juil. 18 06:12:12 debian apparmor.systemd[563]: Reloading AppArmor profiles
juil. 18 06:12:13 debian apparmor.systemd[563]: Skipping profile in /etc/apparmor.d/disable: usr.bin.thunderbird
juil. 18 06:12:13 debian systemd[1]: Started Load AppArmor profiles.

les commandes se passent avec root

root@debian:~# aa-status
apparmor module is loaded.
52 profiles are loaded.
30 profiles are in enforce mode.
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince//sanitized_helper
   /usr/bin/man
   /usr/bin/pidgin
   /usr/bin/pidgin//sanitized_helper
   /usr/bin/totem
   /usr/bin/totem-audio-preview
   /usr/bin/totem-video-thumbnailer
   /usr/bin/totem//sanitized_helper
   /usr/lib/chromium-browser/chromium-browser//browser_java
   /usr/lib/chromium-browser/chromium-browser//browser_openjdk
   /usr/lib/chromium-browser/chromium-browser//sanitized_helper
   /usr/lib/cups/backend/cups-pdf
   /usr/lib/x86_64-linux-gnu/lightdm/lightdm-guest-session
   /usr/lib/x86_64-linux-gnu/lightdm/lightdm-guest-session//chromium
   /usr/sbin/apt-cacher-ng
   /usr/sbin/cups-browsed
   /usr/sbin/cupsd
   /usr/sbin/cupsd//third_party
   /usr/sbin/tcpdump
   libreoffice-senddoc
   libreoffice-soffice//gpg
   libreoffice-xpdfimport
   man_filter
   man_groff
   nvidia_modprobe
   nvidia_modprobe//kmod
22 profiles are in complain mode.
   /usr/bin/irssi
   /usr/lib/chromium-browser/chromium-browser
   /usr/lib/chromium-browser/chromium-browser//chromium_browser_sandbox
   /usr/lib/chromium-browser/chromium-browser//lsb_release
   /usr/lib/chromium-browser/chromium-browser//xdgsettings
   /usr/sbin/dnsmasq
   /usr/sbin/dnsmasq//libvirt_leaseshelper
   avahi-daemon
   identd
   klogd
   libreoffice-oopslash
   libreoffice-soffice
   mdnsd
   nmbd
   nscd
   ping
   smbd
   smbldap-useradd
   smbldap-useradd///etc/init.d/nscd
   syslog-ng
   syslogd
   traceroute
5 processes have profiles defined.
3 processes are in enforce mode.
   /usr/sbin/cups-browsed (630) 
   /usr/sbin/cupsd (815) 
   /usr/lib/cups/notifier/dbus (820) /usr/sbin/cupsd
2 processes are in complain mode.
   /usr/sbin/dnsmasq (749) 
   /usr/sbin/dnsmasq (877) 
0 processes are unconfined but have a profile defined.

Nb si un profil gene le fonctionnement tu peux aussi le desactiver
http://manpages.ubuntu.com/manpages/xenial/man8/aa-disable.8.html

Merci grandtoubab :

redge@debian10:~$ su
Mot de passe : 
root@debian10:/home/redge# systemctl status apparmor
● apparmor.service - Load AppArmor profiles
   Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2019-07-18 13:08:48 CEST; 1min 45s ago
     Docs: man:apparmor(7)
           https://gitlab.com/apparmor/apparmor/wikis/home/
  Process: 265 ExecStart=/lib/apparmor/apparmor.systemd reload (code=exited, status=0/SUCCESS)
 Main PID: 265 (code=exited, status=0/SUCCESS)

juil. 18 13:08:44 debian10 systemd[1]: Starting Load AppArmor profiles...
juil. 18 13:08:44 debian10 apparmor.systemd[265]: Restarting AppArmor
juil. 18 13:08:44 debian10 apparmor.systemd[265]: Reloading AppArmor profiles
juil. 18 13:08:48 debian10 apparmor.systemd[265]: Skipping profile in /etc/apparmor.d/disable: usr.bin.thunderbird
juil. 18 13:08:48 debian10 systemd[1]: Started Load AppArmor profiles.
root@debian10:/home/redge# aa-status
bash: aa-status : commande introuvable
root@debian10:/home/redge#

Pas de commande aa-status :confused:

en fait aa-status fait partie du paquet apparmor, tu ne dois pas avoir les bons droits root, tu as ceux de ton utilisateur /home/redge

root@debian:~# ls -alrt /usr/sbin/aa-status
-rwxr-xr-x 1 root root 8839 mars  30 14:23 /usr/sbin/aa-status
root@debian:~# 

utilise

su -

Je ne te suis pas très bien :
si tu regardes bien mon post précédent, tu peux voir que j’ai bien lancé la commande " su " avant de faire le " systemctl status apparmor ", et que j’étais en “root” aussi pour faire le " aa-status " …

Sinon, quand je lance le " ls -alrt /usr/sbin/aa-status ", j’ai bien le même résultat que toi.

Donc, je ne comprends pas ce que je fais de travers… Qu’en penses tu ?
J’étais bien en " root ", non ?
Puisque :

root@debian10:/home/redge# aa-status
bash: aa-status : commande introuvable

root@debian10:/home/redge# apt list --installed | grep appar
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
apparmor-profiles-extra/stable,now 1.26 all  [installé]
pparmor-profiles/stable,now 2.13.2-10 all  [installé]
apparmor-utils/stable,now 2.13.2-10 amd64  [installé]
apparmor/stable,now 2.13.2-10 amd64  [installé]
libapparmor1/stable,now 2.13.2-10 amd64  [installé]
python3-apparmor/stable,now 2.13.2-10 amd64  [installé, automatique]
python3-libapparmor/stable,now 2.13.2-10 amd64  [installé, automatique]

il me manquait " apparmor-easyprof ", alors je l’ai installé, et rebooté. Maintenant j’ai bien :

root@debian10:/home/redge# apt list --installed | grep appar
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
apparmor-easyprof/stable,now 2.13.2-10 all  [installé]
apparmor-profiles-extra/stable,now 1.26 all  [installé]
apparmor-profiles/stable,now 2.13.2-10 all  [installé]
apparmor-utils/stable,now 2.13.2-10 amd64  [installé]
apparmor/stable,now 2.13.2-10 amd64  [installé]
libapparmor1/stable,now 2.13.2-10 amd64  [installé]
python3-apparmor/stable,now 2.13.2-10 amd64  [installé, automatique]
python3-libapparmor/stable,now 2.13.2-10 amd64  [installé, automatique]

Mais j’ai toujours :

root@debian10:/home/redge# aa-status
bash: aa-status : commande introuvable
root@debian10:/home/redge#

Je n’ai que ces 3 commandes avec " aa" :

root@debian10:/home/redge# aa-e
aa-easyprof  aa-enabled   aa-exec      
root@debian10:/home/redge#

Je ne les ai pas toutes, notamment " aa-status " …

pour etre root avec les droits de root complet il faut utiliser

su -

en français
su suivi d’un tiret
https://manpages.debian.org/stretch/login/su.1.fr.html

$ su -
Mot de passe : 
root@debian:~# env | grep -i path
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@debian:~# 

Tu as tout à fait raison… milles excuses.
Je n’avais pas compris la difference entre " su " et " su - " …

Effectivement, j’ai pu utiliser le " aa-complain /usr/bin/evince ", et ma fonction d’affichage de PDF généré par mon logiciel n’est plus bloquée.

(pour ma défense, j’utilise différentes distributions Linux, et je n’avais pas encore remarqué que Debian avait cette particularité… honte à moi)

Grand merci grandtoubad :fist: