首页 > 解决方案 > 如何使用`setcap`来增加`cargo test`生成的可执行文件的权限?

问题描述

我正在用 Rust/C 编写一个性能分析工具。

我在 Rust 中使用系统调用perf_event_open,并编写了一个测试。测试是这样的:

#[test]
fn syscall_test() {
    let event = &mut perf_event_attr {
        type_: perf_type_id_PERF_TYPE_HARDWARE,
        size: std::mem::size_of::<perf_event_attr>() as u32,
        // something to consider fixing, for now leave it alone.
        config: perf_hw_id_PERF_COUNT_HW_INSTRUCTIONS as u64,
        ..Default::default()
    };
    event.set_disabled(1);
    event.set_exclude_kernel(1);
    event.set_exclude_hv(1);
    let fd: isize = perf_event_open(&event, 0, -1, -1, 0);
    assert_ne!(fd, -1, "Testing for failure");
}

如何增加测试可执行文件的权限?如果没有为可执行文件设置 CAP_PERFMON 或 CAP_SYS_ADMIN,则 perf_event_open 将始终返回 -1。

标签: crustperflinux-capabilities

解决方案


推荐阅读