pub enum InstalledProfileState {
Matches,
Drifted {
installed_sha256: String,
},
Absent,
Unreadable {
error: String,
},
}Expand description
How /etc/apparmor.d/mur-sealed on this host compares to the profile this build ships.
A file-level finding and deliberately nothing more. AppArmor loads profiles from the kernel’s
own policy cache, not from this path at call time, so a file can be edited without
apparmor_parser -r ever running and a profile can be loaded from a file that has since been
deleted. UsernsGrant is the behavioural answer and stays the source of truth; this only
tells an operator whether the bytes on disk are the bytes murmur ships.
Variants§
Matches
The installed file hashes to SEALED_APPARMOR_PROFILE_SHA256.
Drifted
The file is present and hashes to something else — an older revision, or an edited copy.
Operator customisation belongs in /etc/apparmor.d/local/mur-sealed, which both shipped
profiles include if exists and which is not hashed here.
Absent
No file at SEALED_APPARMOR_PROFILE_PATH. Expected on a host without AppArmor, and on a
checkout build using scripts/install-dev-apparmor.sh, which writes its own separate file.
Unreadable
The path exists and could not be read — a permission or I/O error, kept apart from
Self::Absent so “I could not look” never reads as “it is not there”.
Trait Implementations§
Source§impl Clone for InstalledProfileState
impl Clone for InstalledProfileState
Source§impl Debug for InstalledProfileState
impl Debug for InstalledProfileState
impl Eq for InstalledProfileState
Source§impl PartialEq for InstalledProfileState
impl PartialEq for InstalledProfileState
impl StructuralPartialEq for InstalledProfileState
Auto Trait Implementations§
impl Forget for InstalledProfileState
impl Freeze for InstalledProfileState
impl Move for InstalledProfileState
impl RefUnwindSafe for InstalledProfileState
impl Send for InstalledProfileState
impl Sync for InstalledProfileState
impl Unpin for InstalledProfileState
impl UnsafeUnpin for InstalledProfileState
impl UnwindSafe for InstalledProfileState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more