#[non_exhaustive]#[repr(u64)]pub enum AccessFs {
Show 16 variants
Execute = 1,
WriteFile = 2,
ReadFile = 4,
ReadDir = 8,
RemoveDir = 16,
RemoveFile = 32,
MakeChar = 64,
MakeDir = 128,
MakeReg = 256,
MakeSock = 512,
MakeFifo = 1_024,
MakeBlock = 2_048,
MakeSym = 4_096,
Refer = 8_192,
Truncate = 16_384,
IoctlDev = 32_768,
}
Expand description
File system access right.
Each variant of AccessFs
is an access right
for the file system.
A set of access rights can be created with BitFlags<AccessFs>
.
§Example
use landlock::{ABI, Access, AccessFs, BitFlags, make_bitflags};
let exec = AccessFs::Execute;
let exec_set: BitFlags<AccessFs> = exec.into();
let file_content = make_bitflags!(AccessFs::{Execute | WriteFile | ReadFile});
let fs_v1 = AccessFs::from_all(ABI::V1);
let without_exec = fs_v1 & !AccessFs::Execute;
assert_eq!(fs_v1 | AccessFs::Refer, AccessFs::from_all(ABI::V2));
§Warning
To avoid unknown restrictions don’t use BitFlags::<AccessFs>::all()
nor BitFlags::ALL
,
but use a version you tested and vetted instead,
for instance AccessFs::from_all(ABI::V1)
.
Direct use of the BitFlags
API is deprecated.
See ABI
for the rationale and help to test it.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Execute = 1
Execute a file.
WriteFile = 2
Open a file with write access.
ReadFile = 4
Open a file with read access.
ReadDir = 8
Open a directory or list its content.
RemoveDir = 16
Remove an empty directory or rename one.
RemoveFile = 32
Unlink (or rename) a file.
MakeChar = 64
Create (or rename or link) a character device.
MakeDir = 128
Create (or rename) a directory.
MakeReg = 256
Create (or rename or link) a regular file.
MakeSock = 512
Create (or rename or link) a UNIX domain socket.
MakeFifo = 1_024
Create (or rename or link) a named pipe.
MakeBlock = 2_048
Create (or rename or link) a block device.
MakeSym = 4_096
Create (or rename or link) a symbolic link.
Refer = 8_192
Link or rename a file from or to a different directory.
Truncate = 16_384
Truncate a file with truncate(2)
, ftruncate(2)
, creat(2)
, or open(2)
with O_TRUNC
.
IoctlDev = 32_768
Send IOCL commands to a device file.
Implementations§
source§impl AccessFs
impl AccessFs
sourcepub fn from_read(abi: ABI) -> BitFlags<Self>
pub fn from_read(abi: ABI) -> BitFlags<Self>
Gets the access rights identified as read-only according to a specific ABI.
Exclusive with from_write()
.
sourcepub fn from_write(abi: ABI) -> BitFlags<Self>
pub fn from_write(abi: ABI) -> BitFlags<Self>
Gets the access rights identified as write-only according to a specific ABI.
Exclusive with from_read()
.
Trait Implementations§
source§impl Access for AccessFs
impl Access for AccessFs
source§fn from_all(abi: ABI) -> BitFlags<Self>
fn from_all(abi: ABI) -> BitFlags<Self>
Union of from_read()
and from_write()
.
source§impl BitFlag for AccessFs
impl BitFlag for AccessFs
§fn empty() -> BitFlags<Self>
fn empty() -> BitFlags<Self>
BitFlags
with no flags set (in other words, with a value of 0). Read more§fn from_bits(bits: Self::Numeric) -> Result<BitFlags<Self>, FromBitsError<Self>>
fn from_bits(bits: Self::Numeric) -> Result<BitFlags<Self>, FromBitsError<Self>>
BitFlags
if the raw value provided does not contain
any illegal flags. Read more§fn from_bits_truncate(bits: Self::Numeric) -> BitFlags<Self>
fn from_bits_truncate(bits: Self::Numeric) -> BitFlags<Self>
BitFlags
from an underlying bitwise value. If any
invalid bits are set, ignore them. Read more§unsafe fn from_bits_unchecked(bits: Self::Numeric) -> BitFlags<Self>
unsafe fn from_bits_unchecked(bits: Self::Numeric) -> BitFlags<Self>
BitFlags
unsafely, without checking if the bits form
a valid bit pattern for the type. Read moresource§impl PartialEq for AccessFs
impl PartialEq for AccessFs
source§impl RawBitFlags for AccessFs
impl RawBitFlags for AccessFs
source§const EMPTY: Self::Numeric = {transmute(0x0000000000000000): <fs::AccessFs as enumflags2::_internal::RawBitFlags>::Numeric}
const EMPTY: Self::Numeric = {transmute(0x0000000000000000): <fs::AccessFs as enumflags2::_internal::RawBitFlags>::Numeric}
source§const DEFAULT: Self::Numeric = {transmute(0x0000000000000000): <fs::AccessFs as enumflags2::_internal::RawBitFlags>::Numeric}
const DEFAULT: Self::Numeric = {transmute(0x0000000000000000): <fs::AccessFs as enumflags2::_internal::RawBitFlags>::Numeric}
source§const ALL_BITS: Self::Numeric = {transmute(0x000000000000ffff): <fs::AccessFs as enumflags2::_internal::RawBitFlags>::Numeric}
const ALL_BITS: Self::Numeric = {transmute(0x000000000000ffff): <fs::AccessFs as enumflags2::_internal::RawBitFlags>::Numeric}
source§const BITFLAGS_TYPE_NAME: &'static str = "BitFlags<AccessFs>"
const BITFLAGS_TYPE_NAME: &'static str = "BitFlags<AccessFs>"
impl Copy for AccessFs
impl Eq for AccessFs
impl<F> Rule<AccessFs> for PathBeneath<F>where
F: AsFd,
impl StructuralPartialEq for AccessFs
Auto Trait Implementations§
impl Freeze for AccessFs
impl RefUnwindSafe for AccessFs
impl Send for AccessFs
impl Sync for AccessFs
impl Unpin for AccessFs
impl UnwindSafe for AccessFs
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: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)