Rust 中如何确定进程的有效用户 ID?

Ten*_*ken 4 linux permissions rust

在 Linux 和其他 POSIX 系统上,程序可以在另一个用户(即euid)的身份下执行。通常,您会打电话geteuid给朋友来可靠地确定进程的当前身份。然而,我无法找到一种仅使用 rust 的标准库来确定这些身份的可靠方法。

我发现唯一接近的是std::os::unix::MetadataExt

目前是否可以euid使用 Rust 的标准库来确定进程(和其他 ID)?我缺少什么功能或特征吗?

Séb*_*uld 7

这将依赖于特定于操作系统的依赖项,因为对于您可以为其构建 Rust 代码的大多数目标来说,这个概念并不存在(或者做您认为会做的事情!)。特别是,您会在libc板条箱中找到它,顾名思义,它是一个非常小的包装纸libc

命名std::os空间通常仅限于获取 、 和 模块的进程和 FS 功能的std::process最低std::thread限度std::fs。因此,它不会在那里。MetadataExt出于类似的原因,它的目的是针对文件系统的使用。

正如您所料,调用本身毫无想象力地是geteuid.

这是不安全的extern导入,因此您必须将其包装在一个unsafe块中。