电子产业一站式赋能平台

PCB联盟网

搜索
查看: 197|回复: 0
收起左侧

Linux用户ID和组ID

[复制链接]

679

主题

679

帖子

2524

积分

三级会员

Rank: 3Rank: 3

积分
2524
发表于 2024-7-19 12:04:00 | 显示全部楼层 |阅读模式

3jhvxjetgmt64020125.gif

3jhvxjetgmt64020125.gif

点击上方蓝色字体,关注我们

实际用户 ID (Real User ID, UID)
  • 定义:实际用户 ID 是启动进程的用户的 ID。
  • 作用:标识执行该进程的用户。
  • 获取:使用 getuid() 函数可以获取实际用户 ID。

    实际组 ID (Real Group ID, GID)
  • 定义:实际组 ID 是启动进程的用户组的 ID。
  • 作用:标识执行该进程的用户组。
  • 获取:使用 getgid() 函数可以获取实际组 ID。

    有效用户 ID (Effective User ID, EUID)
  • 定义:有效用户 ID 用于控制进程对文件系统资源的访问权限。
  • 作用:决定进程的访问权限。例如,具有 root 权限的进程可以通过将 EUID 设置为 0 来获得特权操作的权限。
  • 获取:使用 geteuid() 函数可以获取有效用户 ID。

    有效组 ID (Effective Group ID, EGID)
  • 定义:有效组 ID 用于控制进程对文件系统资源的访问权限。
  • 作用:与有效用户 ID 类似,决定进程在组级别上的访问权限。
  • 获取:使用 getegid() 函数可以获取有效组 ID。

    附属组 ID (Supplementary Group IDs)
  • 定义:附属组 ID 是用户所属的其他组的 ID 列表,除了实际组 ID 和有效组 ID 之外。
  • 作用:允许进程获得多个组的权限,从而可以访问更多的资源。
  • 获取:使用 getgroups() 函数可以获取附属组 ID 列表。

    以下代码演示如何获取并打印这些 ID:

  • #include #include #include #include
    int main() {    uid_t uid = getuid();    gid_t gid = getgid();    uid_t euid = geteuid();    gid_t egid = getegid();        printf("Real User ID: %d
    ", uid);    printf("Real Group ID: %d
    ", gid);    printf("Effective User ID: %d
    ", euid);    printf("Effective Group ID: %d
    ", 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             printf("%d ", groups);        }        printf("
    ");    }
        return 0;}

    了解和正确使用这些 ID 是管理 Linux 系统权限的重要基础。实际用户 ID 和实际组 ID 标识了执行进程的用户和组,而有效用户 ID 和有效组 ID 决定了进程的权限。附属组 ID 则允许进程在多个组中进行操作,灵活性更高。

    总结一下这些ID的特点:
  • 实际用户 ID (UID)实际组 ID (GID) 标识了进程的拥有者,即谁启动了这个进程。它们通常不会改变。
  • 有效用户 ID (EUID)有效组 ID (EGID) 用于访问权限控制,决定了进程对系统资源的访问权限。这些 ID 可以在程序运行过程中改变(例如,通过 setuid 系统调用)。
  • 附属组 ID 列出了用户所属的所有其他组,这些组可以给予用户额外的权限。


    rcml1v1l2zt64020225.jpg

    rcml1v1l2zt64020225.jpg

    teuxfjr4ygd64020325.gif

    teuxfjr4ygd64020325.gif

    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表