如何读取内核空间中uid关联的gid列表?

时间:2015-10-09 11:56:47

标签: c linux linux-kernel linux-device-driver embedded-linux

我有一个Linux内核驱动程序,可以根据gid进行一些身份验证。驱动程序将输入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

有可能吗?

1 个答案:

答案 0 :(得分:2)

  

我有一个Linux内核驱动程序,可以根据gid进行一些身份验证。驱动程序将输入uid作为输入。现在我需要获得该用户关联的所有gid。

这在内核中是不可能的,甚至是有意义的。

UID和GID之间的关系由用户空间管理。具有给定UID的流程通常具有/etc/group指定的GID,但可能具有不同的GID集,具体取决于它的启动方式。

如果您需要根据GID进行身份验证(这听起来有点可疑,但我会让它滑动),您需要查看与您尝试进行身份验证的特定进程相关联的GID列表。没有办法从UID回复那些信息。