# vim:syntax=apparmor # Author: Kees Cook # Jamie Strandboge #include /usr/bin/evince { #include #include #include #include #include #include #include #include #include #include #include #include #include #include # Terminals for using console applications. These abstractions should ideally # have 'ix' to restrict access to what only evince is allowed to do #include # By default, we won't support launching a terminal program in Xterm or # KDE's konsole. It opens up too many unnecessary files for most users. # People who need this functionality can uncomment the following: ##include ##include /usr/bin/evince rmPx, /usr/bin/evince-previewer Px, /usr/bin/yelp Cx -> sanitized_helper, /usr/bin/bug-buddy px, # 'Show Containing Folder' (LP: #1022962) /usr/bin/nautilus Cx -> sanitized_helper, # Gnome /usr/bin/pcmanfm Cx -> sanitized_helper, # LXDE /usr/bin/krusader Cx -> sanitized_helper, # KDE /usr/bin/thunar Cx -> sanitized_helper, # XFCE /usr/bin/nemo Cx -> sanitized_helper, # Cinnamon # 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 text attachments /usr/bin/gedit ixr, # For Send to /usr/bin/nautilus-sendto Cx -> sanitized_helper, # allow directory listings (ie 'r' on directories) so browsing via the file # dialog works / r, /**/ r, # This is need for saving files in your home directory without an extension. # Changing this to '@{HOME}/** r' makes it require an extension and more # secure (but with 'rw', we still have abstractions/private-files-strict in # effect). owner @{HOME}/** rw, owner /media/** rw, owner @{HOME}/.local/share/gvfs-metadata/** l, owner /{,var/}run/user/*/gvfs-metadata/** l, owner @{HOME}/.gnome2/evince/* rwl, owner @{HOME}/.gnome2/accels/ rw, owner @{HOME}/.gnome2/accelsevince rw, owner @{HOME}/.gnome2/accels/evince rw, # Maybe add to an abstraction? /etc/dconf/** r, owner @{HOME}/.cache/dconf/user rw, owner @{HOME}/.config/dconf/user r, owner /{,var/}run/user/*/dconf/ w, owner /{,var/}run/user/*/dconf/user rw, owner /{,var/}run/user/*/dconf-service/keyfile/ w, owner /{,var/}run/user/*/dconf-service/keyfile/user rw, owner /{,var/}run/user/*/at-spi2-*/ rw, owner /{,var/}run/user/*/at-spi2-*/** rw, # from http://live.gnome.org/Evince/SupportedDocumentFormats. Allow # read and write for all supported file formats /**.[bB][mM][pP] rw, /**.[dD][jJ][vV][uU] rw, /**.[dD][vV][iI] rw, /**.[gG][iI][fF] rw, /**.[jJ][pP][gG] rw, /**.[jJ][pP][eE][gG] rw, /**.[oO][dD][pP] rw, /**.[fFpP][dD][fF] rw, /**.[pP][nN][mM] rw, /**.[pP][nN][gG] rw, /**.[pP][sS] rw, /**.[eE][pP][sS] rw, /**.[tT][iI][fF] rw, /**.[tT][iI][fF][fF] rw, /**.[xX][pP][mM] rw, /**.[gG][zZ] rw, /**.[bB][zZ]2 rw, /**.[cC][bB][rRzZ7] rw, /**.[xX][zZ] rw, # evince creates a temporary stream file like '.goutputstream-XXXXXX' in the # directory a file is saved. This allows that behavior. owner /**/.goutputstream-* w, } /usr/bin/evince-previewer { #include #include #include #include #include #include #include #include #include #include #include #include #include #include # Terminals for using console applications. These abstractions should ideally # have 'ix' to restrict access to what only evince is allowed to do #include # By default, we won't support launching a terminal program in Xterm or # KDE's konsole. It opens up too many unnecessary files for most users. # People who need this functionality can uncomment the following: ##include /usr/bin/evince-previewer mr, /usr/bin/yelp Cx -> sanitized_helper, /usr/bin/bug-buddy px, # Lenient, but remember we still have abstractions/private-files-strict in # effect). Write is needed for 'print to file' from the previewer. @{HOME}/ r, @{HOME}/** rw, # Maybe add to an abstraction? owner /{,var/}run/user/*/dconf/ w, owner /{,var/}run/user/*/dconf/user rw, } /usr/bin/evince-thumbnailer { #include #include # The thumbnailer doesn't need access to everything in the nameservice # abstraction. Allow reading of /etc/passwd and /etc/group, but suppress # logging denial of nsswitch.conf. /etc/passwd r, /etc/group r, deny /etc/nsswitch.conf r, # TCP/UDP network access for NFS network inet stream, network inet6 stream, network inet dgram, network inet6 dgram, /usr/bin/evince-thumbnailer mr, # Lenient, but remember we still have abstractions/private-files-strict in # effect). @{HOME}/ r, owner @{HOME}/** rw, owner /media/** rw, }