在运行时期间使用root执行程序

时间:2013-12-09 20:36:37

标签: c++ linux

我有一个C ++程序需要root权限才能执行某些功能。如果我在su模式下运行我的编译代码,如

linux-c5b6:/home/suman #

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

2 个答案:

答案 0 :(得分:2)

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

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

我建议不要让程序询问用户root密码,而是建议退出并显示错误消息并指示用户使用sudo重新运行该程序。

答案 1 :(得分:0)

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

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