Fixed
Details
Details
Assignee
Scott Cantor
Scott CantorReporter
Markus Kuhn
Markus KuhnOriginal estimate
1d
Components
Fix versions
Affects versions
Created December 20, 2011 at 6:40 PM
Updated August 7, 2012 at 1:05 AM
Resolved June 4, 2012 at 6:58 PM
Problem: shibd tries to create files and sockets in /var/run/shibboleth. This directory is created once when the RPM is installed, but in openSUSE Linux 12.1 /var/run (as well as /var/lock) is now mounted on tmpfs, and therefore emptied automatically at each reboot.
How to reproduce:
Install shibboleth-2.4.3-3.1.i586.rpm
"/etc/init.d/shibd start" works fine
reboot
"/etc/init.d/shibd start" fails with
2011-12-19 17:58:20 ERROR Shibboleth.Listener : socket call resulted in error (2): no message
2011-12-19 17:58:20 CRIT Shibboleth.Listener : failed to bind to socket.
in /var/log/shibboleth/shibd.log.
Suggested fix/workaround: Add the line
[ -d /var/run/shibboleth ] || mkdir /var/run/shibboleth
to /etc/init.d/shibd, or equivalent, to recreate (as root) that directory each
time before starting shibd, if necessary.
See also: http://blog.stastnarodina.com/honza-en/spot/shibboleth-ubuntu/
Related considerations:
According to
http://www.pathname.com/fhs/pub/fhs-2.3.html#THEVARHIERARCHY
the directory /var/run is only meant for information related to
currently running processes, which by definition can be discarded
at each reboot, such as pids and sockets. For more long-term state,
please consider using /var/cache or /var/lib instead.
The above error message in /var/log/shibboleth/shibd.log could be
improved by actually stating what went wrong in terms of file path
and errno (here: ENOTDIR), e.g. "bind() cannot create
/var/run/shibboleth/shibd.sock: not a directory"