diff --git a/Makefile.am b/Makefile.am index be2adb993..4f29b67ea 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,10 +21,12 @@ EXTRA_DIST = \ # Yes, you are correct. This is a HACK! install-data-hook: ( cd $(DESTDIR)$(sysconfdir); chown $(webuser):$(webgroup) $(sysconf_DATA); chmod 600 $(sysconf_DATA) ) - ( if ! test -e $(ZM_RUNDIR); then mkdir -p $(ZM_RUNDIR); fi; chown $(webuser):$(webgroup) $(ZM_RUNDIR); chmod u+w $(ZM_RUNDIR) ) - ( if ! test -e $(ZM_TMPDIR); then mkdir -p $(ZM_TMPDIR); fi; chown $(webuser):$(webgroup) $(ZM_TMPDIR); chmod u+w $(ZM_TMPDIR) ) - ( if ! test -e $(ZM_LOGDIR); then mkdir -p $(ZM_LOGDIR); fi; chown $(webuser):$(webgroup) $(ZM_LOGDIR); chmod u+w $(ZM_LOGDIR) ) + ( if ! test -e $(ZM_RUNDIR); then mkdir -p $(ZM_RUNDIR); fi; if test "$(ZM_RUNDIR)" != "/var/run"; then chown $(webuser):$(webgroup) $(ZM_RUNDIR); chmod u+w $(ZM_RUNDIR); fi ) + ( if ! test -e $(ZM_TMPDIR); then mkdir -m 700 -p $(ZM_TMPDIR); fi; if test "$(ZM_TMPDIR)" != "/tmp"; then chown $(webuser):$(webgroup) $(ZM_TMPDIR); chmod u+w $(ZM_TMPDIR); fi ) + ( if ! test -e $(ZM_LOGDIR); then mkdir -p $(ZM_LOGDIR); fi; if test "$(ZM_LOGDIR)" != "/var/log"; then chown $(webuser):$(webgroup) $(ZM_LOGDIR); chmod u+w $(ZM_LOGDIR); fi ) uninstall-hook: @-( cd $(DESTDIR)$(webdir); rm -rf events graphics images sounds temp ) - @-( rm -rf $(ZM_RUNDIR) $(ZM_TMPDIR) $(ZM_LOGDIR) ) + @-( if test "$(ZM_RUNDIR)" != "/var/run"; then rm -rf $(ZM_RUNDIR); fi ) + @-( if test "$(ZM_TMPDIR)" != "/tmp"; then rm -rf $(ZM_TMPDIR); fi ) + @-( if test "$(ZM_LOGDIR)" != "/var/log"; then rm -rf $(ZM_LOGDIR); fi ) diff --git a/Makefile.in b/Makefile.in index ee0b6a2ba..ef182fa2f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -815,13 +815,15 @@ uninstall-am: uninstall-sysconfDATA # Yes, you are correct. This is a HACK! install-data-hook: ( cd $(DESTDIR)$(sysconfdir); chown $(webuser):$(webgroup) $(sysconf_DATA); chmod 600 $(sysconf_DATA) ) - ( if ! test -e $(ZM_RUNDIR); then mkdir -p $(ZM_RUNDIR); fi; chown $(webuser):$(webgroup) $(ZM_RUNDIR); chmod u+w $(ZM_RUNDIR) ) - ( if ! test -e $(ZM_TMPDIR); then mkdir -p $(ZM_TMPDIR); fi; chown $(webuser):$(webgroup) $(ZM_TMPDIR); chmod u+w $(ZM_TMPDIR) ) - ( if ! test -e $(ZM_LOGDIR); then mkdir -p $(ZM_LOGDIR); fi; chown $(webuser):$(webgroup) $(ZM_LOGDIR); chmod u+w $(ZM_LOGDIR) ) + ( if ! test -e $(ZM_RUNDIR); then mkdir -p $(ZM_RUNDIR); fi; if test "$(ZM_RUNDIR)" != "/var/run"; then chown $(webuser):$(webgroup) $(ZM_RUNDIR); chmod u+w $(ZM_RUNDIR); fi ) + ( if ! test -e $(ZM_TMPDIR); then mkdir -m 700 -p $(ZM_TMPDIR); fi; if test "$(ZM_TMPDIR)" != "/tmp"; then chown $(webuser):$(webgroup) $(ZM_TMPDIR); chmod u+w $(ZM_TMPDIR); fi ) + ( if ! test -e $(ZM_LOGDIR); then mkdir -p $(ZM_LOGDIR); fi; if test "$(ZM_LOGDIR)" != "/var/log"; then chown $(webuser):$(webgroup) $(ZM_LOGDIR); chmod u+w $(ZM_LOGDIR); fi ) uninstall-hook: @-( cd $(DESTDIR)$(webdir); rm -rf events graphics images sounds temp ) - @-( rm -rf $(ZM_RUNDIR) $(ZM_TMPDIR) $(ZM_LOGDIR) ) + @-( if test "$(ZM_RUNDIR)" != "/var/run"; then rm -rf $(ZM_RUNDIR); fi ) + @-( if test "$(ZM_TMPDIR)" != "/tmp"; then rm -rf $(ZM_TMPDIR); fi ) + @-( if test "$(ZM_LOGDIR)" != "/var/log"; then rm -rf $(ZM_LOGDIR); fi ) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/scripts/zmpkg.pl.in b/scripts/zmpkg.pl.in index e1e37d144..248fbbe59 100644 --- a/scripts/zmpkg.pl.in +++ b/scripts/zmpkg.pl.in @@ -155,6 +155,19 @@ if ( $command =~ /^(?:start|restart)$/ ) if ( $status eq "stopped" ) { + # Recreate the temporary directory if it's been wiped + if ( !-e "@ZM_TMPDIR@" ) + { + Debug( "Recreating temporary dirrectory '@ZM_TMPDIR@'" ); + mkdir( "@ZM_TMPDIR@", 0700 ) or Fatal( "Can't create missing temporary directory '@ZM_TMPDIR@': $!" ); + my ( $runName ) = getpwuid( $> ); + if ( $runName ne ZM_WEB_USER ) + { + # Not running as web user, so should be root in whch case chown the temporary directory + my ( $webName, $webPass, $webUid, $webGid ) = getpwnam( ZM_WEB_USER ) or Fatal( "Can't get user details for web user '".ZM_WEB_USER."': $!" ); + chown( $webUid, $webGid, "@ZM_TMPDIR@" ) or Fatal( "Can't change ownership of temporary directory '@ZM_TMPDIR@' to '".ZM_WEB_USER.":".ZM_WEB_GROUP."': $!" ); + } + } zmMemTidy(); runCommand( "zmfix" ); runCommand( "zmdc.pl startup" );