如何确保 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
由程序员决定。
我想确保我的可执行文件是 运行,在 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
由程序员决定。