1

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

current->uid == 0

但是,当我尝试编译我的代码时,我得到了这个错误

struct task_structâ has no member named âuidâ

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

4

1 回答 1

3

对于一个进程,它有 3 种用户 ID:

1.实际用户ID

--> 大多数时候我们是谁,登录的人,而 root 进程有一些方法可以改变它。

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

2.有效用户ID

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

用于geteuid()获取此 ID

3.保存设置用户ID

--> 按exec功能从有效用户 ID 中复制。没有获取此ID当前值的功能。至少,我不知道。

所以

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

如果您的意思是以root身份运行,使用geteuid() == 0更好,这只是我的看法。

于 2013-08-10T02:27:29.517 回答