當壹個用戶登陸系統時,系統會將UID和EUID都賦值為/etc/passwd文件中的UID,壹般情況下2個ID是相同的,但是某些情況下會出現2個ID不同的情況。
gid和egid同理。
下面壹段C代碼將解釋區別:"printid.c"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
printf(" UID\t= %d\n", getuid());
printf(" EUID\t= %d\n", geteuid());
printf(" GID\t= %d\n", getgid());
printf(" EGID\t= %d\n", getegid());
return EXIT_SUCCESS;
}
編譯之:
aguo@linux-x9rc:~> gcc -o printid printid.c
執行:
aguo@linux-x9rc:~> ./printid
Real UID = 1000
Effective UID = 1000
Real GID = 100
Effective GID = 100
看看/etc/passwd裏uid和gid:
aguo@linux-x9rc:~> cat /etc/passwd | grep aguo | awk -F":" '{print "uid:"$3 "\tgid:"$4}'
uid:1000 gid:100