
在 Linux 系统中,用户和组 ID 用于识别进程和文件的访问权限。每个进程都有与之关联的实际用户 ID、实际组 ID、有效用户 ID、有效组 ID 以及附属组 ID。

实际用户 ID (Real User ID, UID)
实际组 ID (Real Group ID, GID)
有效用户 ID (Effective User ID, EUID)
有效组 ID (Effective Group ID, EGID)
附属组 ID (Supplementary Group IDs)
以下代码演示如何获取并打印这些 ID:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <grp.h>
int main() {
uid_t uid = getuid();
gid_t gid = getgid();
uid_t euid = geteuid();
gid_t egid = getegid();
printf("Real User ID: %d\n", uid);
printf("Real Group ID: %d\n", gid);
printf("Effective User ID: %d\n", euid);
printf("Effective Group ID: %d\n", egid);
int ngroups = 10;
gid_t groups[10];
if (getgroups(ngroups, groups) == -1) {
perror("getgroups");
} else {
printf("Supplementary Group IDs: ");
for (int i = 0; i < ngroups; i++) {
printf("%d ", groups[i]);
}
printf("\n");
}
return 0;
}了解和正确使用这些 ID 是管理 Linux 系统权限的重要基础。实际用户 ID 和实际组 ID 标识了执行进程的用户和组,而有效用户 ID 和有效组 ID 决定了进程的权限。附属组 ID 则允许进程在多个组中进行操作,灵活性更高。总结一下这些ID的特点:
作者:不脱发的程序猿。原文:https://handsome-man.blog.csdn.net/article/details/140279797 。原文日期:2024-08-13。转载遵循 CC BY-SA 4.0,保留署名与来源。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。