如何确保 Rust 可执行文件 运行 具有 Linux 的根权限?

How can I ensure that a Rust executable is run with root permissions on Linux?

我想确保我的可执行文件是 运行,在 Linux 下具有 root 权限。我想到了这个:

use std::env;
use std::process::exit;

fn main() {
    match env::var("USER") {
        Err(e) => {
            println!("Something went wrong: {:?}", e);
            exit(2);
        }
        Ok(name) => {
            if name != "root" {
                println!("Must be root...");
                exit(1);
            }
        }
    }

    println!("ok!");
}

有没有更简洁/惯用的方法来做到这一点?我怎样才能访问有效用户 ID (EUID)?

我发现的(以及 libcryptsetup-rs 中使用的)是这样的:

use nix::unistd::Uid;

fn main() {
    if !Uid::effective().is_root() {
        panic!("You must run this executable with root permissions");
    }
}

是否panic!println!exit由程序员决定。