apparmor.d/apparmor.d/profiles-a-f/borg
2021-09-26 18:12:30 +01:00

128 lines
2.7 KiB
Text

# apparmor.d - Full set of apparmor profiles
# Copyright (C) 2020-2021 Mikhail Morfikov
# 2021 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only
abi <abi/3.0>,
include <tunables/global>
@{BACKUP_DIR} = @{MOUNTS}/Arti/backup-*
@{exec_path} = /{usr/,}bin/borg
profile borg @{exec_path} {
include <abstractions/base>
include <abstractions/python>
# For reading files of other users as root
capability dac_read_search,
# Needed to mount backup files
capability sys_admin,
#
capability fowner,
network inet dgram,
network inet6 dgram,
@{exec_path} r,
/{usr/,}bin/python3.[0-9]* r,
/{usr/,}bin/uname rix,
/{usr/,}bin/cat rix,
/{usr/,}{s,}bin/ldconfig rix,
/{usr/,}bin/{,@{multiarch}-}ld.bfd rix,
/{usr/,}bin/pass rPUx,
/{usr/,}bin/ssh rPx,
/{usr/,}bin/ccache rCx -> ccache,
/{usr/,}bin/fusermount{,3} rCx -> fusermount,
mount fstype=fuse -> @{MOUNTS}/*/,
mount fstype=fuse -> @{MOUNTS}/*/*/,
umount @{MOUNTS}/*/,
umount @{MOUNTS}/*/*/,
/dev/fuse rw,
owner @{PROC}/@{pid}/fd/ r,
@{PROC}/sys/kernel/random/boot_id r,
@{run}/systemd/userdb/ r,
owner @{user_cache_dirs}/ rw,
owner @{user_cache_dirs}/borg/ rw,
owner @{user_cache_dirs}/borg/** rw,
owner @{user_config_dirs}/borg/ rw,
owner @{user_config_dirs}/borg/** rw,
# If /tmp/ isn't accessible, then /var/tmp/ is used.
owner /tmp/* rw,
owner /tmp/tmp*/ rw,
owner /tmp/tmp*/idx rw,
owner /tmp/borg-cache-*/ rw,
owner /tmp/borg-cache-*/* rw,
owner /var/tmp/* rw,
owner /var/tmp/tmp*/ rw,
owner /var/tmp/tmp*/idx rw,
# Dirs that can be backed up
/ r,
/boot/{,**} r,
/efi/{,**} r,
/etc/{,**} r,
/home/{,**} r,
@{MOUNTS}/{,**} r,
/opt/{,**} r,
/root/{,**} r,
/srv/{,**} r,
/usr/{,**} r,
/var/{,**} r,
# The backup dirs
owner @{BACKUP_DIR}/ r,
owner @{BACKUP_DIR}/** rwkl -> @{BACKUP_DIR}/**,
# For exporting the key
owner /**/key w,
profile ccache {
include <abstractions/base>
/{usr/,}bin/ccache mr,
/{usr/,}lib/llvm-[0-9]*/bin/clang rix,
/{usr/,}bin/{,@{multiarch}-}gcc-[0-9]* rix,
/{usr/,}bin/{,@{multiarch}-}g++-[0-9]* rix,
/media/ccache/*/** rw,
/etc/debian_version r,
}
profile fusermount {
include <abstractions/base>
include <abstractions/nameservice-strict>
# To mount anything:
capability sys_admin,
/{usr/,}bin/fusermount{,3} mr,
/etc/fuse.conf r,
umount @{MOUNTS}/*/,
umount @{MOUNTS}/*/*/,
@{PROC}/@{pids}/mounts r,
/dev/fuse rw,
}
include if exists <usr/borg.d>
include if exists <local/borg>
}