Hi,

Am 05.06.19 um 15:47 schrieb Nabile:

> Since I bought an AMD RX 590, I had to install the backported Linux kernel to
> make it work, which enabled the AppArmor service and broke the user interface.
> 
> The AppArmor profile for Thunderbird currently doesn't allow reading the
> ~/.local/share/fonts and ~/.local/share/themes folders, rendering the user
> interface unusable if custom fonts and themes are set (e.g. using Gnome Tweak
> Tool). Text is either completely invisible or show up as squares, and the UI 
> is
> mostly black with displaced controls which can be unclickable.

you probably found some niche case here.

@intrigeri, @Vincas
As I'm still not that experienced in AppArmor I like to get your
thinking about the solving of the problem.
I guess it's probaly more smart to add these folder to a more basic
layer in the AppArmor setup as other applications will suffer from this
constraint too.

> I have added two new lines to whitelist these folders and after reloading the
> AppArmor service, this completely fixed the regression.
> 
> (I am not sure if Thunderbird mainly uses GTK2, which only reads from
> ~/.themes, but since I symlinked ~/.themes to ~/.local/share/themes, it works
> on my configuration. For those who don't symlink ~/.themes, it may be 
> necessary
> to add a third whitelist for this folder, provided Thunderbird does use GTK2,
> of course.)
> 
> Thank you.
> 
> diff /etc/apparmor.d/usr.bin.thunderbird.bak
> /etc/apparmor.d/usr.bin.thunderbird
> 40a41,42
>>   owner @{HOME}/.local/share/fonts/** r,
>>   owner @{HOME}/.local/share/themes/** r,
> 
> 
> 
> -- System Information:
> Debian Release: 9.9
>   APT prefers stable-updates
>   APT policy: (500, 'stable-updates'), (500, 'stable')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
> 
> Kernel: Linux 4.19.0-0.bpo.4-amd64 (SMP w/4 CPU cores)
> Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), 
> LANGUAGE=en_GB.utf8 (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
> Init: systemd (via /run/systemd/system)
> 
> Versions of packages thunderbird depends on:
> ii  debianutils               4.8.1.1
> ii  fontconfig                2.11.0-6.7+b1
> ii  libatk1.0-0               2.22.0-1
> ii  libc6                     2.24-11+deb9u4
> ii  libcairo-gobject2         1.14.8-1
> ii  libcairo2                 1.14.8-1
> ii  libdbus-1-3               1.10.26-0+deb9u1
> ii  libdbus-glib-1-2          0.108-2
> ii  libevent-2.0-5            2.0.21-stable-3
> ii  libffi6                   3.2.1-6
> ii  libfontconfig1            2.11.0-6.7+b1
> ii  libfreetype6              2.6.3-3.2
> ii  libgcc1                   1:6.3.0-18+deb9u1
> ii  libgdk-pixbuf2.0-0        2.36.5-2+deb9u2
> ii  libglib2.0-0              2.50.3-2
> ii  libgtk-3-0                3.22.11-1
> ii  libgtk2.0-0               2.24.31-2
> ii  libjsoncpp1               1.7.4-3
> ii  libpango-1.0-0            1.40.5-1
> ii  libstartup-notification0  0.12-4+b2
> ii  libstdc++6                6.3.0-18+deb9u1
> ii  libvpx4                   1.6.1-3+deb9u1
> ii  libx11-6                  2:1.6.4-3+deb9u1
> ii  libx11-xcb1               2:1.6.4-3+deb9u1
> ii  libxcb-shm0               1.12-1
> ii  libxcb1                   1.12-1
> ii  libxext6                  2:1.3.3-1+b2
> ii  libxrender1               1:0.9.10-1
> ii  libxt6                    1:1.1.5-1
> ii  psmisc                    22.21-2.1+b2
> ii  x11-utils                 7.7+3+b1
> ii  zlib1g                    1:1.2.8.dfsg-5
> 
> Versions of packages thunderbird recommends:
> ii  hunspell-en-gb [hunspell-dictionary]  1:5.2.5-1
> ii  hunspell-en-us [hunspell-dictionary]  20070829-7
> ii  lightning                             1:60.7.0-1~deb9u1
> 
> Versions of packages thunderbird suggests:
> ii  apparmor          2.11.0-3+deb9u2
> pn  fonts-lyx         <none>
> ii  libgssapi-krb5-2  1.15-1+deb9u1
> 
> -- Configuration Files:
> /etc/apparmor.d/usr.bin.thunderbird changed:
> @{MOZ_LIBDIR}=/usr/lib/thunderbird
> profile thunderbird /usr/lib/thunderbird/thunderbird{,-bin} {
>   #include <abstractions/audio>
>   #include <abstractions/aspell>
>   #include <abstractions/cups-client>
>   # TODO: finetune this for required accesses
>   #include <abstractions/dbus>
>   #include <abstractions/dbus-accessibility>
>   #include <abstractions/dbus-session>
>   #include <abstractions/dconf>
>   #include <abstractions/gnome>
>   #include <abstractions/ibus>
>   #include <abstractions/nameservice>
>   #include <abstractions/nvidia>
>   #include <abstractions/p11-kit>
>   #include <abstractions/private-files>
>   #include <abstractions/ssl_certs>
>   #include <abstractions/ubuntu-browsers>
>   #include <abstractions/ubuntu-browsers.d/java>
>   #include <abstractions/ubuntu-helpers>
>   # Backported from the mesa abstraction, available in AppArmor >2.13
>   # System files
>   /dev/dri/ r, # libGLX_mesa.so calls drmGetDevice2()
>   # User files
>   owner @{HOME}/.cache/ w, # if user clears all caches
>   owner @{HOME}/.cache/mesa_shader_cache/ w,
>   owner @{HOME}/.cache/mesa_shader_cache/index rw,
>   owner @{HOME}/.cache/mesa_shader_cache/??/ w,
>   owner @{HOME}/.cache/mesa_shader_cache/??/* rw,
>   owner @{HOME}/.local/share/fonts/** r, # FIX: adds custom user fonts for 
> the UI, fixing invisible text with apparmor.
>   owner @{HOME}/.local/share/themes/** r, # FIX: adds custom user theme 
> support for the UI.
>   # End of backported mesa abstraction
>   # Backported from the dri-enumerate abstraction, available in AppArmor 2.13
>   
> /sys/devices/pci[0-9]*/**/{device,subsystem_device,subsystem_vendor,uevent,vendor}
>  r,
>   # Allow opening attachments
>   # TODO: create and use abstractions for opening various file formats
>   /{usr/local/,usr/,}bin/* Cx -> sanitized_helper,
>   /usr/lib/libreoffice/program/soffice Cxr -> sanitized_helper,
>   # Allow opening links
>   /usr/lib/@{multiarch}/glib-[0-9]*/gio-launch-desktop ix,
>   # For Xubuntu to launch the browser
>   /usr/bin/exo-open ixr,
>   /usr/lib/@{multiarch}/xfce4/exo-1/exo-helper-1 ixr,
>   /etc/xdg/xdg-xubuntu/xfce4/helpers.rc r,
>   /etc/xdg/xfce4/helpers.rc r,
>   # for crash reports?
>   ptrace (read,trace) peer=@{profile_name},
>   /usr/lib/thunderbird/thunderbird{,-bin} ixr,
>   # Pulseaudio
>   /usr/bin/pulseaudio Pixr,
>   owner @{HOME}/.{cache,config}/dconf/user rw,
>   owner @{HOME}/.cache/thumbnails/** r,
>   owner /run/user/[0-9]*/dconf/user rw,
>   owner @{HOME}/.config/gtk-3.0/bookmarks r,
>   deny owner @{HOME}/.local/share/gvfs-metadata/* r,
>   # potentially extremely sensitive files
>   audit deny @{HOME}/.gnupg/** mrwkl,
>   audit deny @{HOME}/.ssh/** mrwkl,
>   # rw access to HOME is useful when sending/receiving attachments
>   owner @{HOME}/[^.]** rw,
>   # other commonly used locations
>   /{data,media,mnt,srv}/** r,
>   owner /{data,media,mnt,srv}/** rw,
>   owner @{HOME}/.signature* r,
>   # Required for LVM setups
>   /sys/devices/virtual/block/dm-[0-9]*/uevent r,
>   # Addons (too lax for thunderbird)
>   ##include <abstractions/ubuntu-browsers.d/firefox>
>   # for networking
>   network inet stream,
>   network inet6 stream,
>   @{PROC}/[0-9]*/net/if_inet6 r,
>   @{PROC}/[0-9]*/net/ipv6_route r,
>   @{PROC}/[0-9]*/net/dev r,
>   @{PROC}/[0-9]*/net/wireless r,
>   @{PROC}/[0-9]*/net/arp r,
>   # should maybe be in abstractions
>   /etc/ r,
>   /etc/mime.types r,
>   /etc/mailcap r,
>   /etc/xdg/*buntu/applications/defaults.list    r, # for all derivatives
>   /etc/xfce4/defaults.list r,
>   /usr/share/xubuntu/applications/defaults.list r,
>   owner /dev/shm/org.chromium.* rw, # for Chromium IPC
>   owner @{HOME}/.cache/fontconfig/*.cache-* rwk,
>   owner @{HOME}/.local/share/applications/defaults.list r,
>   owner @{HOME}/.local/share/applications/mimeapps.list r,
>   owner @{HOME}/.local/share/applications/mimeinfo.cache r,
>   owner @{HOME}/.recently-used r,
>   /tmp/.X[0-9]*-lock r,
>   /etc/udev/udev.conf r,
>   # Doesn't seem to be required, but noisy. Maybe allow 'r' for 'b*' if 
> needed.
>   # Possibly move to an abstraction if anything else needs it.
>   deny /run/udev/data/** r,
>   /etc/timezone r,
>   /etc/wildmidi/wildmidi.cfg r,
>   # thunderbird specific
>   /etc/thunderbird/ r,
>   /etc/thunderbird/** r,
>   /etc/xul-ext/** r,
>   /etc/xulrunner-2.0*/ r,
>   /etc/xulrunner-2.0*/** r,
>   /etc/gre.d/ r,
>   /etc/gre.d/* r,
>   # noisy
>   deny @{MOZ_LIBDIR}/** w,
>   deny /usr/lib/thunderbird-addons/** w,
>   deny /usr/lib/xulrunner-addons/** w,
>   deny /usr/lib/xulrunner-*/components/*.tmp w,
>   deny /.suspended r,
>   deny /boot/initrd.img* r,
>   deny /boot/vmlinuz* r,
>   deny /var/cache/fontconfig/ w,
>   # noisy file dialog:
>   #
>   # TODO: remove these rules when file dialogs becomes "trusted helpers" that 
> can
>   # read anything, or ability to override `deny` rules is implemented [0].
>   #
>   # NOTE: modify `local/usr.bin.thunderbird` to add `deny` rules for cases not
>   # mentioned here when `DENIED` messages appear for dot files in kernel (or 
> audit)
>   # logs. If that case is believed to be common enough, please report bug 
> against
>   # package shipping this profile in order to extend this list.
>   #
>   # [0] https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/451422
>   deny @{HOME}/.KiCad r,
>   deny @{HOME}/.abbrev_defs r,
>   deny @{HOME}/.aspell.*.{prepl,pws} r,
>   deny @{HOME}/.bashrc r,
>   deny @{HOME}/.bash_logout r,
>   deny @{HOME}/.bbdb r,
>   deny @{HOME}/.caffrc r,
>   deny @{HOME}/.colordiffrc r,
>   deny @{HOME}/.cvpcb r,
>   deny @{HOME}/.cvspass r,
>   deny @{HOME}/.devscripts r,
>   deny @{HOME}/.directory r,
>   deny @{HOME}/.dpt.conf r,
>   deny @{HOME}/.dput.cf r,
>   deny @{HOME}/.dupload.conf r,
>   deny @{HOME}/.eeschema r,
>   deny @{HOME}/.emacs r,
>   deny @{HOME}/.emacs.bmk r,
>   deny @{HOME}/.emacs.desktop* r,
>   deny @{HOME}/.fehbg r,
>   deny @{HOME}/.forward r,
>   deny @{HOME}/.gbp.conf r,
>   deny @{HOME}/.gerbview r,
>   deny @{HOME}/.gitconfig r,
>   deny @{HOME}/.gitk r,
>   deny @{HOME}/.gtk-recordmydesktop r,
>   deny @{HOME}/.gtkrc-2.0 r,
>   deny @{HOME}/.i18n r,
>   deny @{HOME}/.ido.last r,
>   deny @{HOME}/.iftoprc r,
>   deny @{HOME}/.inputrc r,
>   deny @{HOME}/.jigdo-lite r,
>   deny @{HOME}/.kicad r,
>   deny @{HOME}/.kicad_common r,
>   deny @{HOME}/.lesshst r,
>   deny @{HOME}/.listadmin.ini r,
>   deny @{HOME}/.minicpanrc r,
>   deny @{HOME}/.mostrc r,
>   deny @{HOME}/.mrconfig r,
>   deny @{HOME}/.mrlog r,
>   deny @{HOME}/.mrtrust r,
>   deny @{HOME}/.my.cnf r,
>   deny @{HOME}/.newsrc-dribble r,
>   deny @{HOME}/.newsrc.eld r,
>   deny @{HOME}/.notmuch-config r,
>   deny @{HOME}/.offlineimaprc r,
>   deny @{HOME}/.pam_environment r,
>   deny @{HOME}/.pbuilderrc r,
>   deny @{HOME}/.pcbnew r,
>   deny @{HOME}/.perldb r,
>   deny @{HOME}/.perltidyrc r,
>   deny @{HOME}/.pgadmin3 r,
>   deny @{HOME}/.pgadmin_histoqueries r,
>   deny @{HOME}/.pgpass r,
>   deny @{HOME}/.python_history r,
>   deny @{HOME}/.pythonhist r,
>   deny @{HOME}/.quiltrc r,
>   deny @{HOME}/.reportbug-ng r,
>   deny @{HOME}/.reportbugrc r,
>   deny @{HOME}/.rnd r,
>   deny @{HOME}/.screenrc r,
>   deny @{HOME}/.selected_editor r,
>   deny @{HOME}/.steam/bin{32,64}/steam r, # through a symlink
>   deny @{HOME}/.steam/steam.pid r, # through a symlink
>   deny @{HOME}/.steam/ubuntu12_{32,64}/steam r, # through a symlink
>   deny @{HOME}/.sudo_as_admin_successful r,
>   deny @{HOME}/.swp r,
>   deny @{HOME}/.taskrc r,
>   deny @{HOME}/.tmux.conf r,
>   deny @{HOME}/.vboxclient-*.pid r,
>   deny @{HOME}/.vimrc r,
>   deny @{HOME}/.wget-hsts r,
>   deny @{HOME}/.xchm r,
>   deny @{HOME}/.xfce4-session.verbose-log* r,
>   deny @{HOME}/.xim.template r,
>   deny @{HOME}/.xinitrc.template r,
>   deny @{HOME}/.xinputrc r,
>   deny @{HOME}/.xscreensaver r,
>   deny @{HOME}/.xsession*errors* r,
>   deny @{HOME}/.xsessionrc r,
>   deny @{HOME}/.Xresources r,
>   deny @{HOME}/.Xsession r,
>   deny @{HOME}/.zcompdump r,
>   deny @{HOME}/.zlogout r,
>   deny @{HOME}/.zshrc r,
>   # TODO: investigate
>   deny /usr/bin/gconftool-2 x,
>   # Deny proprietary NVIDIA driver optimizations
>   # TODO: remove once it can be disabled via conditionals set up in nvidia 
> abstraction
>   deny /tmp/#[0-9][0-9][0-9][0-9][0-9][0-9][0-9] m,
>   deny /tmp/.gl?????? mrw,
>   deny @{HOME}/#[0-9][0-9][0-9][0-9][0-9][0-9][0-9]{,[0-9]} m,
>   deny @{HOME}/.nv/.gl?????? mrw,
>   owner @{PROC}/[0-9]*/mountinfo r,
>   owner @{PROC}/[0-9]*/stat r,
>   owner @{PROC}/[0-9]*/task/[0-9]*/stat r,
>   /sys/devices/pci[0-9]*/**/uevent r,
>   /sys/devices/pci*/**/config r,
>   /sys/devices/system/node/node[0-9]*/meminfo r,
>   /etc/mtab r,
>   /etc/fstab r,
>   # Needed for the crash reporter
>   owner @{PROC}/[0-9]*/environ r,
>   owner @{PROC}/[0-9]*/auxv r,
>   owner @{PROC}/[0-9]*/status r,
>   owner @{PROC}/[0-9]*/cmdline r,
>   /etc/lsb-release r,
>   /etc/ssl/openssl.cnf r,
>   /usr/lib/thunderbird/crashreporter ix,
>   /usr/bin/expr ix,
>   /sys/devices/system/cpu/ r,
>   /sys/devices/system/cpu/** r,
>   # about:memory
>   owner @{PROC}/[0-9]*/statm r,
>   owner @{PROC}/[0-9]*/smaps r,
>   # Needed for container to work in xul builds
>   /usr/lib/xulrunner-*/plugin-container ixr,
>   # allow access to documentation and other files the user may want to look
>   # at in /usr and /opt
>   /usr/ r,
>   /usr/** r,
>   /opt/ r,
>   /opt/** r,
>   # so browsing directories works
>   / r,
>   /**/ r,
>   # per-user thunderbird configuration
>   owner @{HOME}/.{icedove,thunderbird}/ rw,
>   owner @{HOME}/.{icedove,thunderbird}/** rw,
>   owner @{HOME}/.{icedove,thunderbird}/**/storage.sdb k,
>   owner @{HOME}/.{icedove,thunderbird}/**/*.{db,parentlock,sqlite}* k,
>   owner @{HOME}/.{icedove,thunderbird}/plugins/** rm,
>   owner @{HOME}/.{icedove,thunderbird}/**/plugins/** rm,
>   owner @{HOME}/.cache/thunderbird/ rw,
>   owner @{HOME}/.cache/thunderbird/** rw,
>   # system emails
>   owner /var/mail/* rwlk,
>   #
>   # Extensions
>   # /usr/share/.../extensions/... is already covered by '/usr/** r', above.
>   # Allow 'x' for downloaded extensions, but inherit policy for safety
>   owner @{HOME}/.{icedove,thunderbird}/**/extensions/** mixrw,
>   owner @{HOME}/.mozilla/ rw,
>   owner @{HOME}/.mozilla/extensions/          rw,
>   owner @{HOME}/.mozilla/extensions/**        mixr,
>   /usr/share/xul-ext/**/*.sqlite              rk,
>   /usr/lib/mozilla/plugins/*.so               rm,
>   /usr/lib/xul-ext/**/*.sqlite                rk,
>   /usr/lib/thunderbird-addons/extensions/**/*.sqlite rk,
>   deny @{MOZ_LIBDIR}/update.test w,
>   deny /usr/lib/mozilla/extensions/**/ w,
>   deny /usr/lib/xulrunner-addons/extensions/**/ w,
>   deny /usr/share/mozilla/extensions/**/ w,
>   deny /usr/share/mozilla/ w,
>   /usr/bin/gpg               Cx -> gpg,
>   /usr/bin/gpg2              Cx -> gpg,
>   /usr/bin/gpgconf           Cx -> gpg,
>   /usr/bin/gpg-connect-agent Cx -> gpg,
>   /usr/lib/gnupg/gpg-wks-client ix,
>   /{,usr/}bin/ps                   ix,
>   # TB tries to create this file but has no business doing so
>   deny @{HOME}/.gnupg/gpg-agent.conf w,
>   profile gpg {
>     #include <abstractions/base>
>     # Required to import keys from keyservers
>     #include <abstractions/nameservice>
>     #include <abstractions/p11-kit>
>     /usr/share/xul-ext/enigmail/chrome/** r,
>     # silence noise from enigmail 1.9+
>     deny owner @{HOME}/.{icedove,thunderbird}/*/.parentlock w,
>     deny owner @{HOME}/.{icedove,thunderbird}/*/panacea.dat w,
>     deny owner @{HOME}/.{icedove,thunderbird}/*/*.mab w,
>     deny owner @{HOME}/.{icedove,thunderbird}/**/*.msf w,
>     deny owner @{HOME}/.cache/thunderbird/**/_CACHE_* w,
>     # noise from inherited files
>     deny @{HOME}/.{icedove,thunderbird}/*/ImapMail/*/INBOX w,
>     deny /usr/{lib,share}/thunderbird/omni.ja r,
>     deny /usr/share/thunderbird/extensions/** r,
>     # For smartcards?
>     /dev/bus/usb/ r,
>     /dev/bus/usb/[0-9]*/ r,
>     /dev/bus/usb/[0-9]*/[0-9]* r,
>     # LDAP key servers
>     /etc/ldap/ldap.conf r,
>     /usr/bin/gpg mr,
>     /usr/bin/gpg2 mr,
>     /usr/bin/gpgconf mr,
>     /usr/bin/gpg-connect-agent mr,
>     /usr/lib/gnupg/gpgkeys_* ix,
>     /usr/lib/gnupg2/gpg2keys_* ix,
>     owner @{HOME}/.gnupg/ rw,
>     owner @{HOME}/.gnupg/gpg.conf r,
>     owner @{HOME}/.gnupg/random_seed rwk,
>     owner @{HOME}/.gnupg/pubring.{gpg,kbx}{,~} rw,
>     owner @{HOME}/.gnupg/secring.gpg rw,
>     owner @{HOME}/.gnupg/trustdb.gpg rw,
>     owner @{HOME}/.gnupg/tofu.db{,-journal} rwk,
>     owner @{HOME}/.gnupg/S.gpg-agent rw,
>     owner @{HOME}/.gnupg/S.dirmngr rw,
>     owner @{HOME}/.gnupg/*.{gpg,kbx}.{lock,tmp} rwl,
>     owner @{HOME}/.gnupg/.gpg-*.lock rwl,
>     owner @{HOME}/.gnupg/gnupg_spawn_*.lock rwl,
>     owner @{HOME}/.gnupg/.#*[0-9]  rw,
>     owner @{HOME}/.gnupg/.#*[0-9]x rwl,
>     owner @{HOME}/.gnupg/.#lk0x[0-9a-f]* rwl,
>     owner @{HOME}/.gnupg/.gpg-v[0-9]*-migrated rw,
>     owner @{HOME}/.gnupg/openpgp-revocs.d/{,[A-F0-9]*.rev} rw,
>     owner @{HOME}/** r,
>     owner @{PROC}/@{pids}/mountinfo r,
>     # For gpgconf
>     owner @{PROC}/@{pids}/fd/ r,
>     owner /run/user/[0-9]*/keyring-*/gpg rw,
>     # For encryption + signature
>     owner /tmp/gpgOutput.* rw,
>     # for inline pgp
>     owner /tmp/encfile rw,
>     owner /tmp/encfile-[0-9]* rw,
>     # for key import
>     owner /tmp/enigmail_import/.#lk0x[0-9a-f]*  rw,
>     owner /tmp/enigmail_import/.#lk0x[0-9a-f]*x rwl,
>     owner /tmp/enigmail_import/{keyring,trustdb}.lock rwl,
>     owner /tmp/enigmail_import/{keyring,trustdb}{,~,.tmp} rw,
>     /usr/bin/dirmngr ix,
>     owner @{PROC}/@{pids}/task/@{tid}/comm rw,
>     # for revocation certificate generation in the Enigmail setup wizard
>     owner @{HOME}/.{icedove,thunderbird}/*/0x[A-F0-9]*_rev.asc rw,
>     # for revocation certificate generation in the Enigmail key manager
>     owner @{HOME}/*0x[A-F0-9]**.asc rw,
>     # for signature generation
>     owner /tmp/nsemail.eml w,
>     owner /tmp/nsemail-[0-9]*.eml w,
>     # for signature verifications
>     owner /tmp/data.sig r,
>     owner /tmp/data-[0-9]*.sig r,
>     owner /tmp/gpg-[a-zA-Z0-9]*/S.gpg-agent rw,
>     /usr/share/sounds/** r,
>   }
>   # Site-specific additions and overrides. See local/README for details.
>   #include <local/usr.bin.thunderbird>
> }
> 
> 
> -- no debconf information
> 

-- 
Regards
Carsten Schoenert

Reply via email to