我只是想知道,我们如何确定当前进程是否以 root 身份运行。在 google 上搜索后,我发现 Linux 有一个名为“current”的字段,我可以使用它来确定谁在运行特定进程。我尝试使用
current->uid == 0
但是,当我尝试编译我的代码时,我得到了这个错误
struct task_structâ has no member named âuidâ
我做错什么了吗?另外,如果进程以 root 身份运行,uid 总是等于 0,是真的吗?谢谢
对于一个进程,它有 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
更好,这只是我的看法。