今天会议的文字记录:
x@yz:~$ shutdown now
User nobody is logged in on ???.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl poweroff -i'.
我一直在使用shutdown now
,从未见过这样的东西。这是什么?有什么nobody
事吗???
?我是我的系统的唯一用户,从来没有搞乱过nobody
那里
编辑(根据评论):
x@yz:~$ ps -aux | grep nobody
nobody 2666 0.0 0.0 45408 132 ? Ss May 09 0:00 /lib/systemd/systemd --user
nobody 2667 0.0 0.0 163956 8 ? S May 09 0:00 (sd-pam)
x 11189 0.0 0.0 24480 1004 pts/0 S+ 02:50 0:00 grep --color=auto nobody
x@yz:~$ ps -U 65534
PID TTY TIME CMD
2666 ? 00:00:00 systemd
2667 ? 00:00:00 (sd-pam)
答案1
为了澄清这一切:-
1. 系统中没有nobody用户怎么进来的?
nobody 用户是在许多 Linux 和 Unix 发行版中全新安装时默认创建的伪用户
2. 谁是 nobody 用户?
”没有人“ 用户在系统上拥有最少的权限。它不拥有任何文件,不属于任何特权组,并且除了其他用户拥有的能力之外没有任何能力。没有人为用户分配 shell。
~$ sudo grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
3. nobody用户的目的是什么?
在早期的 Unix 和 Linux 发行版中,通常在无人用户下运行守护进程(例如 Web 服务器),以限制对系统其余部分的损害,因此,如果恶意用户获得了对此类守护进程的控制,他就不会访问任何文件或特权。
但问题是,当有多个守护进程以无人用户身份运行时,这就不再有意义了。这就是为什么今天这样的守护进程有自己的用户。
4. 无人用户如何登录您的系统?
您可能正在运行一些在无人用户下运行的服务/守护程序。服务的一些示例可以是:httpd、nfs、postfix 等
5. 您的系统上以无人用户身份运行的两个进程是什么?
- systemd --用户首次登录时启动的实例(在您的情况下是无人用户)
- (如果pam_systemd已启用),systemd 启动一个子进程“(sd-pam)”,该子进程使用“systemd-user”服务名称为用户打开 PAM 会话。
6. 为什么进程(systemd 和 sd-pam)仍然存在,即使在 nobody 用户下运行的服务不再运行?
好吧,这已被报告为一个错误,其中
Systemd-user 未正确关闭其 PAM 会话。
Systemd 无法正确关闭 pam 会话,因为 sd-pam 子进程在 pam_open_session() 之后删除权限。因此 pam_close_session() 以用户身份运行,而不是以 root 身份运行,这会破坏需要执行特权任务来清理会话的 PAM 模块。
有关此的更多信息:
https://github.com/systemd/systemd/issues/8598
https://github.com/systemd/systemd/issues/1350
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=803907;msg=5