URL: https://github.com/SSSD/sssd/pull/5407
Title: #5407: kcm: check socket path loaded from configuration

pbrezina commented:
"""
> > I have several comments to the code. However, I'm sorry, but I don't think 
> > this is correct way to solve it. This is not a problem of KCM only, but it 
> > affects all responders because all sockets are activated in 
> > `activate_unix_sockets()` so it should be also solved here. Obviously, if 
> > the socket path is invalid then `bind()` should fail, so the question is 
> > why it succeeds? I don't know, my guess is that systemd socket activation 
> > is somehow affecting it - maybe because it already created a socket for us 
> > and the socket name is defined in kcm.socket unit file instead of sssd.conf 
> > so the one in sssd.conf is ignored? Probably, because if socket is already 
> > created by systemd, SSSD just skips its creation: (from `set_unix_socket()`:
> 
> I think I'm missing something from your point. IIUC, sssd-kcm loads the 
> socket path from sssd.conf, whilst kcm.socket unit file loads it from its own 
> unit file configuration. If sssd.conf and unit file path are the same, then 
> both processes should fail because the path isn't valid. Otherwise, only 
> sssd-kcm should fail because sssd.conf socket path is invalid. As said, I 
> must be missing something because either sssd-kcm or kcm.socket unit file 
> should fail.

* If systemd is not available, SSSD will create the socket on its own. If the 
socket file cannot be created, it will end up with error (`bind()` will fail).
* If systemd is available, SSSD uses its extra features such as socket 
activation. Socket activation means that the socket is created by systemd 
(`ListenStream` option in sssd-kcm.socket) and when something writes to this 
socket systemd will start sssd-kcm. When sssd-kcm starts it checks if the 
socket is already created by systemd and binds to it, ignoring 
`kcm/socket_path` in sssd.conf. For this reason, it does not fail when 
`socket_path` is invalid - it does not use it and does not try to bind to it - 
it ignores it.

Therefore on systemd enabled systems, with socket activation (`systemctl enable 
sssd-kcm.socket`), `socket_path` is not used.

Does this make sense?

"""

See the full comment at 
https://github.com/SSSD/sssd/pull/5407#issuecomment-756115152
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org

Reply via email to