# vim:syntax=apparmor # ------------------------------------------------------------------ # # Copyright (C) 2020-2021 Mikhail Morfikov # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # ------------------------------------------------------------------ abi , include @{exec_path} = /{usr/,}bin/geany profile geany @{exec_path} { include include include include include include include # To edit system files as root. capability dac_read_search, capability dac_override, deny capability sys_nice, network inet stream, network inet6 stream, @{exec_path} mr, /{usr/,}bin/{,ba,da}sh rix, # For the sorting feature /{usr/,}bin/sort rix, # When geany is run as root, it wants to exec dbus-launch, and hence it creates the two following # root processes: # dbus-launch --autolaunch e0a30ad97cd6421c85247839ccef9db2 --binary-syntax --close-stderr # /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7 --session # # Should this be allowed? Geany works fine without this. #/{usr/,}bin/dbus-launch rCx -> dbus, #/{usr/,}bin/dbus-send rCx -> dbus, deny /{usr/,}bin/dbus-launch rx, deny /{usr/,}bin/dbus-send rx, owner @{PROC}/@{pid}/fd/ r, owner @{PROC}/@{pid}/mountinfo r, owner @{PROC}/@{pid}/mounts r, /usr/share/geany/{,**} r, owner @{HOME}/.config/geany/{,**} rw, owner /{run/,}user/[0-9]*/geany/geany_socket.[0-9a-f]* rw, # To read/write files in the system. The read permission is granted for all files, the write # permission only for the owner. Also, dirs like /dev/, /proc/, /sys/ are not included in # the list. / r, /boot/ r, /boot/** r, owner /boot/** rw, /etc/ r, /etc/** r, owner /etc/** rw, /efi/ r, /efi/** r, owner /efi/** rw, /home/ r, /home/** r, owner /home/** rw, /lost+found/ r, /lost+found/** r, owner /lost+found/** rw, /media/ r, /media/** r, owner /media/** rw, /mnt/ r, /mnt/** r, owner /mnt/** rw, /opt/ r, /opt/** r, owner /opt/** rw, /root/ r, /root/** r, owner /root/** rw, /run/ r, /run/** r, owner /run/** rw, /srv/ r, /srv/** r, owner /srv/** rw, /tmp/ r, /tmp/** r, owner /tmp/** rw, /usr/ r, /usr/** r, owner /usr/** rw, /var/ r, /var/** r, owner /var/** rw, profile dbus { include include /{usr/,}bin/dbus-launch mr, /{usr/,}bin/dbus-send mr, /{usr/,}bin/dbus-daemon rPUx, # for dbus-launch owner @{HOME}/.dbus/session-bus/[0-9a-f]*-[0-9] w, @{HOME}/.Xauthority r, } include if exists }