Bug#989317: systemd kill background processes after user logs out (#825394 regression)
Matt Corallo
dbsdsfdog at mattcorallo.com
Tue Jun 1 16:26:22 BST 2021
> Is your sshd configured to use PAM?
Yes, "UsePAM yes" is in the sshd_config (I don't believe I've changed that, it appears to be the default?).
> So, you log in via ssh, then start a (second) sshd process (inside a lxc container) via the above command?
That is correct, yes.
> Would be great to have a set a commands which allows us reproduce the problem.
The above command paste should basically do it, eg install lxc, then `lxc-create --name fuzzer -t download` to create a
(debian) container, then install sshd inside of it via apt, then run the `systemd-run --user -p "Delegate=yes"
--unit=fuzzer -- lxc-start --name fuzzer -- /usr/sbin/sshd -D` command to spawn it, then log out of the ssh session
which spawned it. There's likely some network configuration which needs to happen in between but I don't know off-hand
how to set it up without public IPs for things.
> Once you started the process, can you create a systemd-cgls output and attach it to this bug report.
Relevant bits post-spawn:
Control group /:
-.slice
├─user.slice
│ └─user-1000.slice
│ ├─user at 1000.service
│ │ ├─app.slice
│ │ │ └─run-rc291ab200158464d9b477a247d01a095.service
│ │ │ ├─lxc.payload.fuzzer
│ │ │ │ └─12319 /usr/sbin/sshd -D
│ │ │ └─lxc.monitor.fuzzer
│ │ │ └─12313 [lxc monitor] /home/matt/.local/share/lxc fuzzer
│ │ └─init.scope
│ │ ├─1164 /lib/systemd/systemd --user
│ │ └─1165 (sd-pam)
│ ├─session-24.scope
│ │ ├─12207 sshd: matt [priv]
│ │ ├─12213 sshd: matt at pts/0
│ │ ├─12214 -bash
│ │ └─12374 systemd-cgls
│ └─session-1.scope
│ ├─1192 SCREEN
│ └─1193 /bin/bash
On 6/1/21 11:20, Michael Biebl wrote:
> Am 01.06.2021 um 17:18 schrieb Michael Biebl:
>> Am 01.06.2021 um 16:24 schrieb Matt Corallo:
>>> No, the shell is spawned from sshd (and almost nothing else running on the host).
>>>
>>> On 6/1/21 04:22, Michael Biebl wrote:
>>>> Control: tags -1 + moreinfo
>>>>
>>>> Am 01.06.2021 um 02:37 schrieb Matt Corallo:
>>>>> After upgrading to bullseye on a test machine, spawning an lxc container with systemd-run[1] still kills the lxc
>>>>> container after the spawning shell is closed (and the user logs out). No only does the lxc container eventually get
>>>>> killed, but systemd refuses any further login for the user while it waits for the lxc container to die (something
>>>>> like maybe 30 seconds for a simple lxc container running an sshd service), making it appear the system has hung.
>>>>>
>>>>> This doesn't appear to be resolved by the options suggested in the man page for systemd-run like `loginctl
>>>>> enable-linger` or `KillUserProcesses=no` (which appears to still be the default).
>>>>>
>>>>> Matt
>>>>>
>>>>> [1] eg systemd-run --user -p "Delegate=yes" --unit=fuzzer -- lxc-start --name fuzzer -- /usr/sbin/sshd -D
>>
>> So, you log in via ssh, then start a (second) sshd process (inside a lxc container) via the above command?
>
> Would be great to have a set a commands which allows us reproduce the problem.
>
More information about the Pkg-systemd-maintainers
mailing list