一些 /proc/pid/loginuid 中的 UID 看起来很奇怪。

11

我正在分析Unix/Linux中的procfs,但一些进程的loginuid非常奇怪。一些pid的loginuid是一个很大的数字:4294967295。它们是守护进程或系统事件还是有什么问题?

# cat /proc/11071/loginuid
4294967295

1
4294967295是32位整数的最大值,但这并不能解释为什么您会看到loginuids。 - Michael Berkowski
那不是重点。 - Oni1
1
在我自己的 Fedora Linux 机器上检查了一些使用 32 位 int 最大 loginuids 的进程,它们是内核进程 [kworker/u16:26] - Michael Berkowski
5
这是一段关于审计守护进程的说明:“审计守护进程可以启用内核中的审计功能。在内核中打开审计功能之前运行的任何进程都将获得登录用户 ID 4294967295。”详见:http://people.redhat.com/sgrubb/audit/audit-faq.txt - Michael Berkowski
我不知道 auditd 是一个进程获得 loginuid 4294967295 的唯一原因,但这是我找到的唯一事情... - Michael Berkowski
2个回答

18

4294967295只是(无符号长整型)-1。-1表示未设置loginuid。对于没有由任何登录进程产生的进程(例如守护程序),这是正常行为。 loginuid默认为-1;pam_loginuid模块在您登录时(在tty/in DM/via ssh中)将其更改为您的用户ID,并且此值由子进程保留。


3

我正在挖掘信息,但我卡在这里了,我有信息要分享。

  1. 内核支持

loginuid支持需要使用已编译CONFIG_AUDITSYSCALL的内核。

检查方法如下:

zgrep CONFIG_AUDITSYSCALL /boot/config* /proc/config.gz

  1. 内核漏洞

目前,我可以检查两个CentOS主机。 它们都使用64位内核,并已编译CONFIG_AUDITSYSCALL=y

我以一个普通用户的身份登录bash。

CentOS 5.11,内核版本为2.6.18-419.el5

cat /proc/$$/loginuid

4294967295

CentOS 6.10,内核版本为2.6.32-754.28.1.el6

cat /proc/$$/loginuid

503


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接