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