The issue: CNTLM only works if started manually
Daemon does not executes properly (but service start command returns no error).
[root@server ~]# service cntlmd start
However cntml works fine when started from terminal with same configuration.
[root@server ~]# cntlm -c /etc/cntlm.conf
To debug, the service logs are in /var/log/messages
A first attempt…
In my case, the user executing the service is not root but cntlm
and it does not exists or cannot create the PID file.
- open
/etc/sysconfig/cntlmd
, look forRUNAS=cntlm
, and also the location of PID file. -
create the cntml user and the PID directory with correct rights.
[root@server ~]# adduser cntlm
[root@server ~]# mkdir /var/run/cntlm
[root@server ~]# chown cntlm /var/run/cntlm/
Restart the service… and all is fine… until i restart the server. After reboot I notice that the freshly created PID directtory /var/run/cntlm
has disappeared.
The reason is that /var/run
is of type tmpfs
and not persisted accross reboots !
A persistent solution
Enters tmpfiles.d…
We can use systemd-tmpfiles
(manual) to automate the creation or cleaning of directories at boot time.
See /usr/lib/tmpfiles.d/
for example of existing configs (and write to /etc/tmpfiles.d/*
override them).
Create an config for cntlm:
[root@server ~]# gvim /etc/tmpfiles.d/cntlmd.conf
#Type Path Mode UID GID Age Argument
d /var/run/cntlm 0755 cntlm cntlm - -
Test it manually before reboot.
systemd-tmpfiles --create /etc/tmpfiles.d/cntlmd.conf
References
The blog that pointed me to the right direction. Read the comments that offer the best solution: [https://blog.hqcodeshop.fi/archives/93-Handling-varrun-with-systemd.html]
[https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html]