会话中的第一个进程pam_systemd
称为Leader
。例如它可以被杀死loginctl --kill-who=leader kill-session SESSION_ID
。
pam_systemd
将领导者置于会话范围单元中。有趣的是,如果这是 systemd 服务的主进程,则意味着该进程离开该服务的 cgroup; systemd 明确支持这一点。然而,领导者也可以选择逃避会话范围。
User=root
PAMName=i-wanna-be-a-systemd-logind-session
ExecStart=/usr/bin/systemd-run --scope --unit=not-a-session.scope sleep 600
这应该留下一个(sd-pam)
在会话范围内调用的子进程,该子进程在父进程终止时运行 pam_session_close() 。因此会话范围单元将保持活动状态。
我认为对于非特权用户来说这也应该是可能的systemd-run --user --scope
。
如果用户没有明确提出有关Leader
例如 with 的请求loginctl
,这些恶作剧还有什么意义吗?我真正想知道的是这是否会破坏某些东西。
该Leader
值是否真的有什么用途,还是主要用于显示目的?是否有任何已知的支持理由或用例loginctl --kill-who=leader kill-session SESSION_ID
可以阐明这个问题?