我正在进行一些Linux模块开发,只能使用内核可用库,并且我想获得与我的模块交互的用户的用户名,也就是他们的“whoami”。我的模块实际上是封装在系统调用周围的...我可以从内核空间中的current->pid获取pid。是否有任何方法,例如使用pid来跟踪拥有该pid的用户?还是有另一种更简单的方法?
谢谢
谢谢
/etc/passwd
文件。接下来需要使用 file_operations 读取文件内容:struct file * file = filp_open(...);
file->f_op->read(file, ...);
读取文件内容可能有助于将UID ->用户名
进行翻译。
/etc/passwd
中时才起作用。但是映射也可以来自NIS、NIS+、LDAP等。 - Hristo Iliev
task_struct
中有一些字段保存所有者信息(UID、GID、有效 UID、有效 GID 等),但仅以数字 ID 的形式存在。所有 ID/名称解析服务都由libc
在用户空间中实现,称为命名服务开关(NSS)。据我所知,内核没有执行解析的例程,因为内核只使用 ID(类似于它仅使用数字 IP 地址)。 - Hristo Iliev