Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 确定运行当前进程的用户_C_Linux_Root - Fatal编程技术网

C 确定运行当前进程的用户

C 确定运行当前进程的用户,c,linux,root,C,Linux,Root,我只是想知道,我们如何确定当前进程是否以root用户身份运行。在google上搜索之后,我发现Linux有一个名为“current”的字段,我可以用它来确定谁在运行一个特定的进程。我试着用 current->uid == 0 然而,当我试图编译我的代码时,我得到了这个错误 struct task_structâ has no member named âuidâ 我做错什么了吗?此外,如果进程以root用户身份运行,uid是否始终等于零?感谢您提供了一个流程,它有3种用户ID: 1.实

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

current->uid == 0
然而,当我试图编译我的代码时,我得到了这个错误

struct task_structâ has no member named âuidâ

我做错什么了吗?此外,如果进程以root用户身份运行,uid是否始终等于零?感谢您提供了一个流程,它有3种用户ID:

1.实际用户ID

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

使用
getuid()
获取此用户ID

2.有效用户ID

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

使用
geteuid()
获取此ID

3.保存的设置用户ID

-->它通过
exec
函数从有效用户ID复制。没有函数来获取这个ID的当前值。至少,我不知道

所以


如果您的意思是以root用户身份运行,那么使用
geteuid()==0
更好,这正是我的观点。

当前->***变量只能从内核空间中看到。在用户空间中,您应该使用
getuid()
只要使用
getuid()==0
geteuid()==0
@wildplasser我明白了。ThxBTW:getuid()和geteuid()函数实际上是系统调用,用于检查当前->[e]uid字段(对于当前进程),并将其报告回用户进程。
how can we determine if the current process is running as root or not