在运行时使用root执行程序 我有一个C++程序,它需要root权限来执行一些函数。如果我在su模式下运行编译后的代码 linux-c5b6:/home/suman #

在运行时使用root执行程序 我有一个C++程序,它需要root权限来执行一些函数。如果我在su模式下运行编译后的代码 linux-c5b6:/home/suman #,c++,linux,C++,Linux,它满足我的要求,但在运行时,我想检查我的进程是否具有root权限。如果没有,它将从用户那里获取su密码并运行我的代码以获得正确的结果。您可以检查当前的UID shell环境变量,只有root用户的UID=0 或者,更好的方法是直接使用系统密码库函数查询当前用户并检查其UID。geteuid(2)系统调用将返回运行程序的用户的有效用户ID: if (geteuid() == 0) { // running as root } else { // not running as roo

它满足我的要求,但在运行时,我想检查我的进程是否具有root权限。如果没有,它将从用户那里获取su密码并运行我的代码以获得正确的结果。

您可以检查当前的UID shell环境变量,只有root用户的UID=0

或者,更好的方法是直接使用系统密码库函数查询当前用户并检查其UID。

geteuid(2)系统调用将返回运行程序的用户的有效用户ID:

if (geteuid() == 0) {
    // running as root
} else {
    // not running as root
}

与其让程序向用户询问根密码,我建议它退出时显示一条错误消息,并指示用户使用
sudo

重新运行程序。您是对的,但我已经尝试过了,但我看到了一个软件,在启动该软件时,它会检查它是否具有su权限,如果不是,那么从用户那里获取su密码,并在su模式下执行程序。我想实现同样的事情。我知道,我只是认为这通常是一个非常糟糕的主意。该系统提供了一个丰富的框架,用于授予用户升级权限。使用它总比试图彻底改造它要好。