我使用 ubuntu 18.04 设置了一个新的 VPS,包括 virtualmin/usermin。在 auth.log 中,我看到很多
su[12936]: Successful su for domain by root
su[12936]: + ??? root:domain
systemd-logind[148]: New session c315 of user domain .
su[12936]: pam_unix(su:session): session opened for user domain by (uid=0)
su[12936]: pam_unix(su:session): session closed for user domain
在系统日志中,我看到很多
systemd[1]: Started Session c314 of user domain.
systemd[1]: Started Session c315 of user domain.
domain 是我在VPS中定义的虚拟服务器的用户。c314/c315每次增加1…以前每2-3分钟出现一次,现在是每5分钟出现一次。
在互联网上阅读有关此问题的信息时,所有的“解决方案”都是如何从日志中删除此日志,但没有任何内容首先解释所有这些打开/关闭会话是什么。
此外,运行时loginctl list-sessions
这些会话会累积在“active=yes”和“state=closing”模式下,并且永远不会从列表中消失。目前有 95 个这样的会话。
我的 VPS 发生了什么事?谁打开/关闭会话这么多次?为什么?此外,为什么这些会话从未从会话列表中消失?
谢谢
更新
loginctl session-status c315
c315 - domain (1000)
Since: Sat 2020-02-08 20:27:08 UTC; 23h ago
Leader: 12936
TTY: ???
Remote: user root
Service: su; type tty; class user
State: closing
Unit: session-c315.scope
Unit user-1000.slice (/user.slice/user-1000.slice):
└─session-2691929.scope
├─19035 sshd: domain [priv]
├─19051 sshd: domain@pts/0
├─19052 -bash
├─20124 sudo systemd-cgls -u user-1000.slice
├─20125 systemd-cgls -u user-1000.slice
└─20126 pager
答案1
pam_unix会话正常退出,如日志中所示。会话数量的增加是systemd-logind会话由于某种原因保持打开状态,即使它们不包含任何进程。
您可以尝试的一种解决方法是强制systemd-logindKillUserProcesses
当会话领导者退出时,终止所有会话进程。您可以通过修改 中的和KillOnlyUsers
设置来实现/etc/systemd/logind.conf
:
KillUserProcesses=yes
KillOnlyUsers=domain
并重新启动systemd-logind
:
systemctl restart systemd-logind
但是,这并不能回答这个问题:由于会话范围是空的,为什么会话不能自行关闭。
编辑:关于pam_unix和systemd-logind会议:
- pam_unix会话由添加到或删除的小记录组成
/var/run/utmp
。您可以使用w
或列出它们who
, - systemd-logind会话更加繁重,如pam_systemd 的手册页. 悬垂systemd-logind消耗更多资源。它们列有
loginctl list-sessions
自从你确定了可能的罪魁祸首(在这个答案的评论中),你可以应用另一种解决方法:替换
@include common-session
与/etc/pam.d/su
:
@include common-session-noninteractive
不包含pam_systemd修改PAM
文件时,应采取通常的预防措施:保留根shell 处于活动状态(例如sudo -i
),直到您测试新的配置,以防您破坏某些东西。