【发布时间】:2013-08-11 21:43:01
【问题描述】:
我只是想知道,我们如何确定当前进程是否以 root 身份运行。在 google 上搜索后,我发现 Linux 有一个名为“current”的字段,我可以使用它来确定谁在运行特定进程。我尝试使用
current->uid == 0
但是,当我尝试编译我的代码时,我得到了这个错误
struct task_structâ has no member named âuidâ
我做错了吗?另外,如果进程以 root 身份运行,uid 总是等于 0,是真的吗?谢谢
【问题讨论】:
-
current->***变量仅在内核空间可见。在用户空间中,您应该使用getuid() -
只需使用
getuid() == 0或geteuid() == 0。 -
@wildplasser 啊,我明白了。谢谢
-
顺便说一句:getuid() 和 geteuid() 函数实际上是检查 current->[e]uid 字段(针对当前进程)并将它们报告给用户进程的系统调用。