Skip to main content

AuditToken

Struct AuditToken 

Source
#[repr(transparent)]
pub struct AuditToken(pub audit_token_t);
Available on macOS only.
Expand description

A wrapper around an audit_token_t.

Tuple Fields§

§0: audit_token_t

Implementations§

Source§

impl AuditToken

Endpoint Security wrappers and test helpers

Source

pub fn from_pid(pid: pid_t) -> Result<Self, kern_return_t>

Available on crate feature audit_token_from_pid only.

Get the AuditToken for the given PID, if it exists.

Endpoint Security does not currently provide a way to get the audit tokens of processes already existing when first connecting a client. However, it is relatively easy to list the PIDs of the current processes. This function therefore enables to bridge this gap.

Errors from the underlying system calls are returned directly. Although it is almost certain that only the catch-all KERN_FAILURE (5) will ever be observed in practice, this should still be useful in order to emphasize that the unexpected case should be accounted for instead of just discarded, for example to then log.

§Implementation details

Currently this method is implemented following the method described here, with calls to task_name_for_pid and task_info(_, TASK_AUDIT_TOKEN, _, _) but the first function is marked as obsolete in the header containing it in macOS’s SDK.

Other possibilities could be task_for_pid() or task_inspect_for_pid(). For now, the current implementation is the most backwards and forwards compatible considering task_for_pid() now concretely requires SIP to be disabled, which thus makes it pretty much unusable. If you find a bug/need us to use a more recent method, please signal it.

Source

pub fn raw_token(&self) -> &audit_token_t

Raw underlying audit token.

Source

pub fn auid(&self) -> uid_t

The audit user ID.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Source

pub fn euid(&self) -> uid_t

The effective user ID.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Source

pub fn egid(&self) -> gid_t

The effective group ID.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Source

pub fn ruid(&self) -> uid_t

The real user ID.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Source

pub fn rgid(&self) -> gid_t

The real group ID.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Source

pub fn pid(&self) -> pid_t

The process ID.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Source

pub fn asid(&self) -> au_asid_t

The audit session ID.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Source

pub fn pidversion(&self) -> i32

The process ID version.

NOTE: Used to identify Mach tasks and senders of Mach messages as subjects of the audit system.

Trait Implementations§

Source§

impl Clone for AuditToken

Source§

fn clone(&self) -> AuditToken

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for AuditToken

Source§

impl Debug for AuditToken

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for AuditToken

Source§

impl Hash for AuditToken

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl LowerHex for AuditToken

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for AuditToken

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl UpperHex for AuditToken

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.