确定运行当前进程的用户

时间:2013-08-09 20:52:35

标签: c linux root

我只是想知道,我们如何确定当前进程是否以root身份运行。在谷歌搜索后,我发现Linux有一个名为“当前”的字段,我可以用它来确定谁正在运行一个特定的进程。我尝试使用

current->uid == 0

但是,当我尝试编译我的代码时,我收到此错误

struct task_structâ has no member named âuidâ

我做错了吗?另外,如果进程以root身份运行,uid总是等于零,这是真的吗?感谢

1 个答案:

答案 0 :(得分:3)

对于某个流程,它有3种用户ID:

1.实际用户ID

- >大部分时间是我们是谁,登录的人,而根进程有一些方法来改变它。

使用getuid()获取此用户ID。

2.有效用户ID

- >此ID决定访问限制。 exce函数可以设置此ID,如果没有,则此用户ID与实际用户ID相同。

使用geteuid()获取此ID

3.Saved设置用户ID

- >它通过exec函数从有效用户ID复制。没有功能可以获得此ID的当前值。至少,我不知道。

所以

how can we determine if the current process is running as root or not

如果您的意思是 root,请使用geteuid() == 0更好,只是我的意见。