1use crate::kernel::task::CapabilitySet;
2use crate::uapi::cred::{ROOT_GID, ROOT_UID};
3
4#[derive(Clone, Copy, Debug)]
6pub struct Credential {
7 pub uid: u32,
9 pub gid: u32,
11 pub euid: u32,
13 pub egid: u32,
15 pub suid: u32,
17 pub sgid: u32,
19 pub fsuid: u32,
21 pub fsgid: u32,
23
24 pub capabilities: CapabilitySet,
26}
27
28impl Credential {
29 pub const fn root() -> Self {
31 Self {
32 uid: ROOT_UID,
33 gid: ROOT_GID,
34 euid: ROOT_UID,
35 egid: ROOT_GID,
36 suid: ROOT_UID,
37 sgid: ROOT_GID,
38 fsuid: ROOT_UID,
39 fsgid: ROOT_GID,
40 capabilities: CapabilitySet::full(),
41 }
42 }
43
44 pub fn is_root(&self) -> bool {
46 self.euid == ROOT_UID
47 }
48}