# 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
profile sudo /{,usr/}{,s}bin/sudo  flags=(attach_disconnected,complain) {
  include <abstractions/base>
  include <abstractions/app-launcher-root>
  include <abstractions/app/sudo>

  capability chown,
  capability mknod,
  capability sys_ptrace,

  network inet dgram,
  network inet6 dgram,

  ptrace (read),

  signal (send,receive) peer=cockpit-bridge,
  signal (send) peer=@{systemd},
  signal (send) set=(cont,hup) peer=su,
  # signal (send) set=(winch),
  signal (send) set=(winch) peer=child-pager,
  signal (send) set=(winch) peer=journalctl,

  @{bin}/@{shells}                  rUx,
  @{lib}/**                         PUx,
  /opt/*/**                         PUx,
  /snap/snapd/@{int}@{bin}/snap    rPUx,

        /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,

  owner @{HOME}/.sudo_as_admin_successful rw,

  @{run}/ r,
  @{run}/systemd/sessions/* r,

  include if exists <local/sudo>
}
