[package]
edition = "2024"
rust-version = "1.93.0"
name = "rootasrole"
version = "4.0.3"
authors = ["Eddie Billoir <lechatp@outlook.fr>"]
build = false
exclude = [
"sudoers-reader/*",
"book/*",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "dosr"
description = "A better alternative to sudo(-rs)/su"
homepage = "https://lechatp.github.io/RootAsRole/"
readme = "README.md"
keywords = [
"sudo",
"capabilities",
"rbac",
"linux",
"security",
]
categories = [
"command-line-utilities",
"os::linux-apis",
"config",
]
license = "LGPL-3.0-or-later"
repository = "https://github.com/LeChatP/RootAsRole"
[package.metadata.clippy]
allow-unwrap-in-tests = true
[badges.maintenance]
status = "actively-maintained"
[features]
editor = [
"dep:landlock",
"dep:libseccomp",
"dep:pest",
"dep:pest_derive",
"dep:indexmap",
"dep:konst",
]
finder = [
"plugins",
"timeout",
"pcre2",
"glob",
"landlock",
"rootasrole-core/finder",
"dep:nonstick2",
"dep:libpam-sys",
"dep:indexmap",
]
fuzzing = []
glob = ["rootasrole-core/glob"]
hashchecker = [
"dep:hex",
"dep:sha2",
]
hierarchy = []
landlock = [
"dep:landlock",
"dep:bitflags",
"dep:glob",
]
pcre2 = [
"dep:pcre2",
"rootasrole-core/pcre2",
]
plugins = [
"hashchecker",
"ssd",
"hierarchy",
]
ssd = []
timeout = []
[[bin]]
name = "chsr"
path = "src/chsr/main.rs"
required-features = ["editor"]
[[bin]]
name = "dosr"
path = "src/dosr/main.rs"
required-features = ["finder"]
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
required-features = ["finder"]
[dependencies.bitflags]
version = ">=2.9, <2.14"
optional = true
default-features = false
[dependencies.bon]
version = "3"
default-features = false
[dependencies.capctl]
version = "0.2"
features = ["serde"]
default-features = false
[dependencies.cbor4ii]
version = "1.2"
features = [
"serde",
"serde1",
"use_std",
]
default-features = false
[dependencies.const_format]
version = "0.2"
default-features = false
[dependencies.glob]
version = "0.3"
optional = true
default-features = false
[dependencies.hex]
version = "0.4"
features = ["alloc"]
optional = true
default-features = false
[dependencies.indexmap]
version = "2.14"
features = ["std"]
optional = true
default-features = false
[dependencies.jiff]
version = "0.2"
features = ["std"]
default-features = false
[dependencies.konst]
version = "0.4"
features = [
"parsing_proc",
"iter",
]
optional = true
default-features = false
[dependencies.landlock]
version = "0.4"
optional = true
[dependencies.libc]
version = "0.2"
features = ["std"]
default-features = false
[dependencies.libpam-sys]
version = "0.2"
optional = true
default-features = false
[dependencies.libseccomp]
version = "0.4"
optional = true
[dependencies.log]
version = "0.4"
features = ["std"]
default-features = false
[dependencies.nix]
version = ">=0.30, <0.32"
features = [
"user",
"process",
"signal",
"fs",
"time",
]
[dependencies.nonstick2]
version = "0.1"
optional = true
[dependencies.pcre2]
version = "0.2"
optional = true
default-features = false
[dependencies.pest]
version = "2.9"
features = ["std"]
optional = true
default-features = false
[dependencies.pest_derive]
version = "2.9"
features = ["std"]
optional = true
default-features = false
[dependencies.rootasrole-core]
version = "4.0.2"
[dependencies.rootasrole-exec]
version = "4.0.2"
[dependencies.serde]
version = "1.0"
features = [
"std",
"rc",
"derive",
]
default-features = false
[dependencies.serde_json]
version = "1.0"
features = ["std"]
default-features = false
[dependencies.sha2]
version = "0.11"
optional = true
default-features = false
[dependencies.shell-words]
version = "1.1"
features = ["std"]
default-features = false
[dev-dependencies.env_logger]
version = "0.11"
default-features = false
[dev-dependencies.log]
version = "0.4"
features = ["std"]
default-features = false
[dev-dependencies.test-log]
version = "0.2"
default-features = false
[lints.clippy.nursery]
level = "warn"
priority = 1
[lints.clippy.pedantic]
level = "warn"
priority = 1
[lints.clippy.should_implement_trait]
level = "allow"
priority = 2
[lints.clippy.similar_names]
level = "allow"
priority = 2
[lints.clippy.undocumented_unsafe_blocks]
level = "warn"
priority = 2
[lints.clippy.unwrap_used]
level = "deny"
priority = 2
[lints.rust]
unexpected_cfgs = "allow"
[profile.profiling]
opt-level = 1
lto = false
debug = 2
inherits = "release"
strip = "none"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = "symbols"