#[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.
§Note
Certain operations (such as std::fs::write
) may also require AccessFs::Truncate
since ABI::V3
.
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 more