我有一个基于 gid 进行身份验证的 Linux 内核驱动程序。驱动程序将获得 uid 作为输入。现在我需要获取此用户关联的所有 gid。
例如:
$ id
uid=1313(tuser) gid=1313(tuser) groups=1313(tuser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),124(sambashare)
如果驱动程序获得 1313 作为 uid,我需要读取所有 gid,即 1313,4,24,27,30,46,124
这可能吗?
最佳答案
I've a Linux kernel driver which do some authentication based on gid. The driver will get uid as input. Now I need to get all gid this user is associated.
这在内核中是不可能的,甚至是没有意义的。
UID 和 GID 之间的关系由用户空间管理。具有给定 UID 的进程通常具有 /etc/group
指定的 GID,但可能具有一组不同的 GID,具体取决于它的启动方式。
如果您需要根据 GID 进行身份验证(这听起来有点可疑,但我会放过它),您需要查看与您尝试进行身份验证的特定进程关联的 GID 列表。无法从 UID 返回该信息。
关于c - 如何读取内核空间中关联的 uid 的 gids 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037680/