I thought I was done with this but not quite. Bacula doesn’t start after a
reboot. The reason is that the pid directory is deleted on reboot so the
startup scripts fail. The reason is that the startup scripts define the pid
files location to be "/var/run/bacula/".

/etc/init.d/bacula-*
...
PIDFILE=/var/run/bacula/${NAME}.${BPORT}.pid
…

/var/run/ is mounted in tmpfs but this filesystem is volatile so dropped on
shutdown and any directories manually created in it are not recreated on
boot. There is no check in the startup scripts that this directory exists
or to create it if it doesn’t.

One solution is to create a new file "/usr/lib/tmpfiles.d/bacula"
(root:root 755) containing a one-liner;

“d /var/run/bacula 2755 root root”

This will create the pid directory on boot. See man tmpfiles.d for details.
I got this tip from
https://serverfault.com/questions/74796/directory-in-var-run-gets-deleted-after-hard-reboot.
This is not quite enough since Bacula still needs to be manually started
from the startup scripts after reboot.

I added --with-systemd to the configure flags and rebuilt to install unit
files. It's also necessary to "make distclean" before the build to clean up
the configure and to do "sudo systemctl enable bacula*" afterwards. Bacula
now starts after reboot.


Best
Chris

On 12 Apr 2022, at 16:00, Martin Simmons <mar...@lispworks.com> wrote:

The bug tracker is at https://bugs.bacula.org.

Maybe the best fix is to use $(INSTALL_PROGRAM_ALL) for the tools instead of
$(INSTALL_PROGRAM)?

__Martin


On Tue, 12 Apr 2022 14:32:34 +0100, Chris Wilkinson said:


It seemed to me like a bug in the makefile. How should I report it? Or
perhaps one of the devs could pick it up?

dbcheck is also affected. This prevents the dir startup script from running.

It all seems to be working now with these changes made.

Chris.

On Tue, 12 Apr 2022, 11:37 am Martin Simmons, <mar...@lispworks.com> wrote:

That sounds like a bug.  The Makefile actually contains comments about
this,
so someone was thinking about it:

# Allow non-root execution of bsmtp for non-root Directors
install: $(INSTOOLS)
       @for tool in ${INSTOOLS} ; do \
          $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) $$tool
$(DESTDIR)$(sbindir)/$$tool ; \
       done
#       chattr +i $(DESTDIR)$(sbindir)/bsmtp
#       chmod 755 $(DESTDIR)$(sbindir)/bsmtp

__Martin


On Tue, 12 Apr 2022 10:10:38 +0100, Chris Wilkinson said:


Just a final note on this. I found that bsmtp was installed with

root:root

750 permissions. The effect of this was that emails were not sent,
presumably because dir runs as user bacula. There were no errors shown or
logged in any of the logs so it was tricky to track down. Once I changed
bsmtp to 755, mail began to work.

The other bacula utility programs are also installed as root:root, 750.

Regards
Chris Wilkinson

On Sat, 2 Apr 2022, 8:49 am Chris Wilkinson, <winstonia...@gmail.com>

wrote:


Scripts are installed in /etc/init.d but no unit files for systemd were
installed. Consequently, I can start everything with the

/usr/sbin/bacula

script but "systemctl start bacula-xxx.service" won't work. These

service

files seem to be in the source tar but don't get installed.

I had added user bacula to sudoers and as a member of the sudo group
whilst trying to debug this but that was dead end which I should undo

now.


Best
Chris


On Fri, 1 Apr 2022, 11:19 pm Martin Simmons, <mar...@lispworks.com>

wrote:


That looks OK, but how are you running the startup scripts?  You

mentioned

sudo before, but they should be run directly as root.

__Martin


On Fri, 1 Apr 2022 15:40:04 +0100, Chris Wilkinson said:


These are the ./configure flags I used. This puts the desired daemon
user/group in the startup scripts. I didn't find a --with option to

set

the

daemon executable permissions that defaults to 750.

#compile
cd $target/bacula-$ver
PREFIX=/usr/sbin
CFLAGS="-g -O2 -Wall" \
./configure \
 --bindir=/usr/bin \
 --sbindir=/usr/sbin \
 --docdir=/usr/html \
 --htmldir=/usr/html \
 --enable-smartalloc \
 --with-scriptdir=/etc/bacula/scripts \
 --with-working-dir=/var/lib/bacula \
 --with-pid-dir=/var/run/bacula \
 --with-logdir=/var/log/bacula \
 --with-postgresql \
 --with-archivedir=/mnt/usb \
 --with-job-email=root@localhost \
 --with-dump-email=root@localhost \
 --with-hostname=pi-b \
 --with-db-name=bacula \
 --with-db-user=bacula \
 --with-db-password=++++ \
 --with-dir-user=bacula \
 --with-dir-group=bacula \
 --with-fd-user=root \
 --with-fd-group=root \
 --with-sd-user=bacula \
 --with-sd-group=tape


Regards
Chris Wilkinson

On Fri, 1 Apr 2022, 12:47 pm Martin Simmons, <mar...@lispworks.com>

wrote:


On Fri, 1 Apr 2022 21:29:56 +1100, Gary R Schmidt said:


On 01/04/2022 21:13, Chris Wilkinson wrote:

I built this from source and found it would not run due to a

permissions

error with the daemons bacula-* and dbcheck. It seems the make

builds

them with permissions 750, root:root. I run the director as
bacula:bacula, the fd as root:root and sd as bacula:tape. User

bacula

is

a member of the sudo group. Changing the daemons and dbcheck

to

755

fixed this.

Does that suggest the make is in error or maybe my choices of

what

user

to run the daemons as is incorrect?

NOTE: I've not built on Raspian, but it looks like you've

missed the

"--with-XXX-user=" options to configure.


In particular, the permissions are designed for the daemons to be

started

as
root, with the -u and -g options controlling the user and group.

The

default
startup scripts do this using information from the configure.

__Martin


_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to