# apparmor.d - Full set of apparmor profiles
# Copyright (C) 2019-2022 Mikhail Morfikov
# Copyright (C) 2021-2024 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only

abi <abi/4.0>,

include <tunables/global>

@{exec_path} = @{bin}/sudo
@{att} = /att/sudo/
profile sudo /{,usr/}bin/sudo  flags=(attach_disconnected,attach_disconnected.path=@{att},complain) {
  include <abstractions/attached/base>
  include <abstractions/app-launcher-root>
  include <abstractions/app/sudo>

  capability chown,
  capability fowner,
  capability mknod,
  capability sys_ptrace,

  network inet dgram,
  network inet6 dgram,

  ptrace read,

  signal send set=(winch, hup, term),

  @{bin}/@{shells}                  rux,
  @{lib}/**                         pux,
  /opt/*/**                         pux,
  /snap/snapd/@{int}@{bin}/snap    rpux,
  @{user_share_dirs}/pipx/venvs/*/bin/* rpux,

  /etc/default/locale r,

        /var/db/sudo/lectured/ r,
  owner /var/db/sudo/lectured/@{uid} rw,
  owner /var/lib/extrausers/shadow r,

        /var/lib/sudo/lectured/ r,
  owner /var/lib/sudo/lectured/@{uid} rw,

  @{run}/ r,
  @{run}/systemd/sessions/* r,
  @{run}/systemd/sessions/?@{int}.ref rw,

  @{sys}/fs/cgroup/*.slice{,/*.slice}/*.service/cgroup.procs r,

  include if exists <local/sudo>
}

# vim:syntax=apparmor
