summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/Bcfg2/Server/Core.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Server/Core.py b/src/lib/Bcfg2/Server/Core.py
index 144d226fe..0f32387d2 100644
--- a/src/lib/Bcfg2/Server/Core.py
+++ b/src/lib/Bcfg2/Server/Core.py
@@ -495,6 +495,18 @@ class BaseCore(object):
""" run the server core. note that it is the responsibility of
the server core implementation to call shutdown() """
if self.setup['daemon']:
+ # if we're dropping privs, then the pidfile is likely
+ # /var/run/bcfg2-server/bcfg2-server.pid or similar.
+ # since some OSes clean directories out of /var/run on
+ # reboot, we need to ensure that the directory containing
+ # the pidfile exists and has the appropriate permissions
+ piddir = os.path.dirname(self.setup['daemon'])
+ if not os.path.exists(piddir):
+ os.makedirs(piddir)
+ os.chown(piddir,
+ self.setup['daemon_uid'],
+ self.setup['daemon_gid'])
+ os.chmod(piddir, 420) # 0644
self._daemonize()
self._run()