Skip to content

Commit 9fa71a8

Browse files
Gelbpunkttgross35
authored andcommitted
linux: Add EXEC_RESTRICT_FILE and EXEC_DENY_INTERACTIVE securebits
These were added in 6.14 with the following commit: torvalds/linux@a0623b2 Signed-off-by: Jens Reidel <adrian@travitia.xyz> (backport <#4545>) (cherry picked from commit 1a1efaf)
1 parent 7217b2b commit 9fa71a8

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

libc-test/build.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4735,6 +4735,16 @@ fn test_linux(target: &str) {
47354735
// FIXME(linux): Requires >= 6.6 kernel headers.
47364736
"PROC_EVENT_NONZERO_EXIT" => true,
47374737

4738+
// FIXME(linux): Requires >= 6.14 kernel headers.
4739+
"SECBIT_EXEC_DENY_INTERACTIVE"
4740+
| "SECBIT_EXEC_DENY_INTERACTIVE_LOCKED"
4741+
| "SECBIT_EXEC_RESTRICT_FILE"
4742+
| "SECBIT_EXEC_RESTRICT_FILE_LOCKED"
4743+
| "SECURE_ALL_UNPRIVILEGED" => true,
4744+
4745+
// FIXME(linux): Value changed in 6.14
4746+
"SECURE_ALL_BITS" | "SECURE_ALL_LOCKS" => true,
4747+
47384748
_ => false,
47394749
}
47404750
});

libc-test/semver/linux.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2776,6 +2776,10 @@ SCTP_STATUS
27762776
SCTP_STREAM_RESET_INCOMING
27772777
SCTP_STREAM_RESET_OUTGOING
27782778
SCTP_UNORDERED
2779+
SECBIT_EXEC_DENY_INTERACTIVE
2780+
SECBIT_EXEC_DENY_INTERACTIVE_LOCKED
2781+
SECBIT_EXEC_RESTRICT_FILE
2782+
SECBIT_EXEC_RESTRICT_FILE_LOCKED
27792783
SECBIT_KEEP_CAPS
27802784
SECBIT_KEEP_CAPS_LOCKED
27812785
SECBIT_NOROOT
@@ -2815,6 +2819,7 @@ SECCOMP_USER_NOTIF_FLAG_CONTINUE
28152819
SECUREBITS_DEFAULT
28162820
SECURE_ALL_BITS
28172821
SECURE_ALL_LOCKS
2822+
SECURE_ALL_UNPRIVILEGED
28182823
SEEK_DATA
28192824
SEEK_HOLE
28202825
SELFMAG

src/unix/linux_like/linux/mod.rs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4782,11 +4782,31 @@ pub const SECBIT_NO_CAP_AMBIENT_RAISE: c_int = issecure_mask(SECURE_NO_CAP_AMBIE
47824782
pub const SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED: c_int =
47834783
issecure_mask(SECURE_NO_CAP_AMBIENT_RAISE_LOCKED);
47844784

4785+
const SECURE_EXEC_RESTRICT_FILE: c_int = 8;
4786+
const SECURE_EXEC_RESTRICT_FILE_LOCKED: c_int = 9;
4787+
4788+
pub const SECBIT_EXEC_RESTRICT_FILE: c_int = issecure_mask(SECURE_EXEC_RESTRICT_FILE);
4789+
pub const SECBIT_EXEC_RESTRICT_FILE_LOCKED: c_int = issecure_mask(SECURE_EXEC_RESTRICT_FILE_LOCKED);
4790+
4791+
const SECURE_EXEC_DENY_INTERACTIVE: c_int = 10;
4792+
const SECURE_EXEC_DENY_INTERACTIVE_LOCKED: c_int = 11;
4793+
4794+
pub const SECBIT_EXEC_DENY_INTERACTIVE: c_int = issecure_mask(SECURE_EXEC_DENY_INTERACTIVE);
4795+
pub const SECBIT_EXEC_DENY_INTERACTIVE_LOCKED: c_int =
4796+
issecure_mask(SECURE_EXEC_DENY_INTERACTIVE_LOCKED);
4797+
47854798
pub const SECUREBITS_DEFAULT: c_int = 0x00000000;
4786-
pub const SECURE_ALL_BITS: c_int =
4787-
SECBIT_NOROOT | SECBIT_NO_SETUID_FIXUP | SECBIT_KEEP_CAPS | SECBIT_NO_CAP_AMBIENT_RAISE;
4799+
pub const SECURE_ALL_BITS: c_int = SECBIT_NOROOT
4800+
| SECBIT_NO_SETUID_FIXUP
4801+
| SECBIT_KEEP_CAPS
4802+
| SECBIT_NO_CAP_AMBIENT_RAISE
4803+
| SECBIT_EXEC_RESTRICT_FILE
4804+
| SECBIT_EXEC_DENY_INTERACTIVE;
47884805
pub const SECURE_ALL_LOCKS: c_int = SECURE_ALL_BITS << 1;
47894806

4807+
pub const SECURE_ALL_UNPRIVILEGED: c_int =
4808+
issecure_mask(SECURE_EXEC_RESTRICT_FILE) | issecure_mask(SECURE_EXEC_DENY_INTERACTIVE);
4809+
47904810
const fn issecure_mask(x: c_int) -> c_int {
47914811
1 << x
47924812
}

0 commit comments

Comments
 (0)