Я пытаюсь изменить ядро Linux, и мне нужно получить идентификатор пользователя и идентификатор группы процессов из task_struct
и pid_namespace
. Хотя я искал их определения в исходном коде, я не мог найти глобальных переменных или функций (может быть, мне не хватает из-за отсутствия комментариев в кодах), чтобы получить к ним доступ.Получение идентификатора пользователя и идентификатора группы процессов из task_struct и pid_namespace
Есть ли способ получить их внутри пространства ядра, так как я не могу использовать функции пользовательского пространства, такие как getuid()
и т. Д.?
спасибо. Если вы знаете, можете ли вы ответить за pid_namespace? – user5508821
Из моего быстрого прочтения (и я никоим образом не являюсь разработчиком ядра), похоже, что в пространствах имен PID есть какие-либо пользователи или группы, связанные с ними. См. Http://lwn.net/Articles/531419/ –
Фактически я меняю fs/proc/base.c функцию has_pid_permission. По умолчанию они использовали pid-> hide_pid, pid-> pid_gid (pid - указатель на pid_namespace). Я думал, что pid_namespace - это специальная структура для процесса для хранения только своих значений pid, поэтому она должна содержать pgid, uid и т. Д. Я прав? Хотя у него есть pid_gid (группа потоков или группа процессов не такая уверенная), hide_pid, last_pid (?) Переменные, у нее нет никакой переменной типа uid. Фактически, что я хочу сделать, просто сравните текущий процесс с задачей. Я думал, что функция делает то же самое. – user5508821