1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-17 08:01:36 +00:00

o) Upgrade to version 1.32f

o) Now bacula runs with dropped down permissions as user bacula

   -> Please reserve UID 910 for this user
This commit is contained in:
Lars Koeller 2004-01-05 19:25:01 +00:00
parent 8df9b7b5ef
commit 5a79459e6e
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=97392
18 changed files with 344 additions and 66 deletions

View File

@ -6,7 +6,7 @@
#
PORTNAME= bacula
PORTVERSION= 1.32c
PORTVERSION= 1.32f
#PORTREVISION= 1
CATEGORIES= sysutils
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
@ -15,11 +15,23 @@ MASTER_SITE_SUBDIR= bacula
MAINTAINER= Lars.Koeller@Uni-Bielefeld.DE
COMMENT= The network backup solution
# The user/group IDs below are registered, see
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#DADS-UID
#
BACULA_DIR=/var/db/bacula
#
USE_REINPLACE= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --with-tcp-wrappers=/usr/lib \
--enable-smartalloc \
--with-working-dir=/var/db/bacula
--with-working-dir=${BACULA_DIR} \
--with-fd-user=root \
--with-fd-group=wheel \
--with-dir-user=bacula \
--with-dir-group=bacula \
--with-sd-user=bacula \
--with-sd-group=operator
CONFIGURE_ENV+= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib ${PTHREAD_LIBS}"
@ -49,12 +61,12 @@ pre-everything::
.if !defined(WITH_CLIENT_ONLY)
@${ECHO_MSG} "=======> ATTENTION <======="
@${ECHO_MSG} "===> Note that there is a pthreads problem, which leads to the loss of 500kB"
@${ECHO_MSG} "===> of data at the end of an tape. This is corrected in the upcoming"
@${ECHO_MSG} "===> of data at the end of an tape. This is corrected in FreeBSD"
@${ECHO_MSG} "===> 4.9-RELEASE and 5.2-RELEASE or use the -stable or -current tree."
@${ECHO_MSG} ""
@${ECHO_MSG} "You may use the following build options:"
@${ECHO_MSG} ""
@${ECHO_MSG} " WITH_CLIENT_ONLY=yes if you only want the file daemon."
@${ECHO_MSG} " WITH_CLIENT_ONLY=yes if you only want the file daemon."
.if !defined(WITH_MYSQL)
@${ECHO_MSG} " WITH_MYSQL=yes if you want MySQL instead of SqLite as the database."
.else
@ -69,6 +81,12 @@ pre-everything::
post-patch:
@${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_CFLAGS}|g' ${WRKSRC}/configure
pre-install:
.if !defined(WITH_CLIENT_ONLY)
@ ${SETENV} PKG_PREFIX=${PREFIX} \
${SH} ${PKGINSTALL} ${PORTNAME} PRE-INSTALL
.endif
post-install:
.if defined(WITH_CLIENT_ONLY)
# don't know how to make it better
@ -87,6 +105,9 @@ post-install:
elif [ -f ${PREFIX}/etc/console.conf ]; then \
${ECHO_CMD} "etc/console.conf" >> ${TMPPLIST}; \
fi
# chmod of smtp program so bacula can use it with dropped down permissions
${CHMOD} o+x ${PREFIX}/sbin/smtp
${CHOWN} -R bacula:bacula ${PREFIX}/share/bacula
.endif
# Install leaves existing conf files untouched. Respect this here!
for na in sd fd dir; do \
@ -104,7 +125,7 @@ post-install:
cpio -pdm -L -R root:wheel ${DOCSDIR}
.endif
# Inform user when full build takes place about
# Inform user afer install about important things ....
.if !defined(WITH_CLIENT_ONLY)
@${ECHO_MSG} "*******************************************************"
@${ECHO_MSG} "NOTE:"
@ -119,6 +140,23 @@ post-install:
@${ECHO_MSG} ""
@${ECHO_MSG} " ${PREFIX}/etc/bacula-dir.conf"
@${ECHO_MSG} ""
@${ECHO_MSG} "Take care of correct permissions for changer and"
@${ECHO_MSG} "tape device (e.g. /dev/ch0 and /dev/n[r]sa0) i.e."
@${ECHO_MSG} "they must be accesable by user bacula."
@${ECHO_MSG} ""
@${ECHO_MSG} "Due to lack of some features in the FreeBSD tape driver"
@${ECHO_MSG} "implemtation you MUST add some OS dependent options to"
@${ECHO_MSG} "the bacula-sd.conf file:"
@${ECHO_MSG} ""
@${ECHO_MSG} " Backward Space Record = no;"
@${ECHO_MSG} " Hardware End of Medium = no;"
@${ECHO_MSG} " Fast Forward Space File = no;"
@${ECHO_MSG} " BSF at EOM = yes;"
@${ECHO_MSG} ""
@${ECHO_MSG} "It is also important that all the scripts accessed"
@${ECHO_MSG} "by RunBeforeJob and RunAfterJob could be executed by"
@${ECHO_MSG} "the user bacula, too."
@${ECHO_MSG} ""
@${ECHO_MSG} "*******************************************************"
.endif

View File

@ -1 +1 @@
MD5 (bacula-1.32c.tar.gz) = 21552bc5c7d006d45007e8424f5560e6
MD5 (bacula-1.32f.tar.gz) = 2c635cf693262fc946eb13aa271e0263

View File

@ -33,7 +33,7 @@ BARCODE_FILE=/usr/local/etc/bacula-barcodes
me=$(basename $0)
# Debug
echo "$me $@" > /dev/console
logger -p user.err "$me $@"
if [ -z "$1" ] ; then
usage;
@ -58,7 +58,7 @@ fi
# Time to wait for loading
SLEEP=20
# What drive of the autochanger should be used primary
# At the moment bacula (1.31a) could not deal with more drives
# At the moment bacula (1.31a) could not deal with more than one drive
DRIVE=1
usage()
@ -90,9 +90,15 @@ usage()
case ${COMMAND} in
unload)
# enable the following line if you need to eject the cartridge
#mt -f ${TAPE} off
#sleep 2
mt -f ${TAPE} off
sleep 2
${MTX} -f ${CHANGER} return drive ${DRIVE}
# If the changer is power cycled with a tape loaded in a drive
if [ "$?" != "0" ]; then
free_slot=`${MTX} -f ${CHANGER} stat | grep "^slot " | grep -v "FULL" | awk '{print $2}'`
free_slot=${free_slot%:}
${MTX} -f ${CHANGER} move drive ${DRIVE} slot $free_slot
fi
;;
load)
@ -121,8 +127,8 @@ case ${COMMAND} in
# echo "Request loaded"
${MTX} -f ${CHANGER} status -S > /tmp/mtx.$$
rtn=$?
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL>" | awk '{print $6+1}' | tr -d ">"
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: source: <>" | awk "{print 0}"
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL> .*slot" | awk '{print $6+1}' | tr -d ">"
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: .* source: <>" | awk "{print 0}"
rm -f /tmp/mtx.$$
exit $rtn
;;

View File

@ -0,0 +1,25 @@
*** configure.org Thu Jan 1 18:52:12 2004
--- configure Thu Jan 1 18:52:33 2004
***************
*** 19029,19038 ****
Director User: ${dir_user}
Director Group: ${dir_group}
! Storage Daemon User: ${dir_user}
! Storage DaemonGroup: ${dir_group}
! File Daemon User: ${dir_user}
! File Daemon Group: ${dir_group}
SQL binaries Directory ${SQL_BINDIR}
--- 19029,19038 ----
Director User: ${dir_user}
Director Group: ${dir_group}
! Storage Daemon User: ${sd_user}
! Storage DaemonGroup: ${sd_group}
! File Daemon User: ${fd_user}
! File Daemon Group: ${fd_group}
SQL binaries Directory ${SQL_BINDIR}

View File

@ -0,0 +1,14 @@
--- src/dird/dird.c 27 Dec 2003 13:14:12 -0000 1.41
+++ src/dird/dird.c 2 Jan 2004 17:21:21 -0000 1.42
@@ -197,10 +197,10 @@
init_stack_dump(); /* grab new pid */
}
- drop(uid, gid); /* reduce priveleges if requested */
-
/* Create pid must come after we are a daemon -- so we have our final pid */
create_pid_file(director->pid_directory, "bacula-dir", director->DIRport);
+
+ drop(uid, gid); /* reduce priveleges if requested */
/* signal(SIGHUP, reload_config); */

View File

@ -0,0 +1,15 @@
--- src/filed/filed.c 23 Dec 2003 20:23:15 -0000 1.21
+++ src/filed/filed.c 2 Jan 2004 17:21:21 -0000 1.22
@@ -211,10 +211,10 @@
init_stack_dump(); /* set new pid */
}
- drop(uid, gid);
-
/* Maximum 1 daemon at a time */
create_pid_file(me->pid_directory, "bacula-fd", me->FDport);
+
+ drop(uid, gid);
#ifdef BOMB
me += 1000000;

View File

@ -1,21 +0,0 @@
*** scripts/fd.in.orig Sun May 11 22:39:16 2003
--- scripts/fd.in Wed Oct 1 20:47:13 2003
***************
*** 139,146 ****
return 1
fi
fi
! # See if /var/lock/subsys/$1 exists
! if [ -f /var/lock/subsys/$1 ]; then
echo "$1 dead but subsys locked"
return 2
fi
--- 139,146 ----
return 1
fi
fi
! # See if @subsysdir@/$1 exists
! if [ -f @subsysdir@/$1 ]; then
echo "$1 dead but subsys locked"
return 2
fi

View File

@ -0,0 +1,14 @@
--- src/stored/stored.c 23 Dec 2003 20:23:15 -0000 1.25
+++ src/stored/stored.c 2 Jan 2004 17:21:21 -0000 1.26
@@ -185,9 +185,9 @@
init_stack_dump(); /* pick up new pid */
}
- drop(uid, gid);
-
create_pid_file(me->pid_directory, "bacula-sd", me->SDport);
+
+ drop(uid, gid);
/* Ensure that Volume Session Time and Id are both
* set and are both non-zero.

View File

@ -0,0 +1,48 @@
#!/bin/sh
PATH=/bin:/usr/sbin
if [ -z "${BACULA_DIR}" ]; then
BACULA_DIR=/var/db/bacula
fi
case $2 in
PRE-INSTALL)
USER=bacula
GROUP=${USER}
UID=910
GID=${UID}
if pw group show "${GROUP}" 2>/dev/null; then
echo "You already have a group \"${GROUP}\", so I will use it."
else
if pw groupadd ${GROUP} -g ${GID}; then
echo "Added group \"${GROUP}\"."
else
echo "Adding group \"${GROUP}\" failed..."
exit 1
fi
fi
if pw user show "${USER}" 2>/dev/null; then
echo "You already have a user \"${USER}\", so I will use it."
if pw usermod ${USER} -d ${BACULA_DIR} -G operator
then
echo "Changed home directory of \"${USER}\" to \"${BACULA_DIR}\""
else
echo "Changing home directory of \"${USER}\" to \"${BACULA_DIR}\" failed..."
exit 1
fi
else
if pw useradd ${USER} -u ${UID} -g ${GROUP} -G operator -h - \
-d ${BACULA_DIR} -s /sbin/nologin -c "Bacula Daemon"
then
echo "Added user \"${USER}\"."
else
echo "Adding user \"${USER}\" failed..."
exit 1
fi
fi
chown -R ${USER}:${GROUP} ${BACULA_DIR}
;;
esac

View File

@ -6,7 +6,7 @@
#
PORTNAME= bacula
PORTVERSION= 1.32c
PORTVERSION= 1.32f
#PORTREVISION= 1
CATEGORIES= sysutils
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
@ -15,11 +15,23 @@ MASTER_SITE_SUBDIR= bacula
MAINTAINER= Lars.Koeller@Uni-Bielefeld.DE
COMMENT= The network backup solution
# The user/group IDs below are registered, see
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#DADS-UID
#
BACULA_DIR=/var/db/bacula
#
USE_REINPLACE= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --with-tcp-wrappers=/usr/lib \
--enable-smartalloc \
--with-working-dir=/var/db/bacula
--with-working-dir=${BACULA_DIR} \
--with-fd-user=root \
--with-fd-group=wheel \
--with-dir-user=bacula \
--with-dir-group=bacula \
--with-sd-user=bacula \
--with-sd-group=operator
CONFIGURE_ENV+= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib ${PTHREAD_LIBS}"
@ -49,12 +61,12 @@ pre-everything::
.if !defined(WITH_CLIENT_ONLY)
@${ECHO_MSG} "=======> ATTENTION <======="
@${ECHO_MSG} "===> Note that there is a pthreads problem, which leads to the loss of 500kB"
@${ECHO_MSG} "===> of data at the end of an tape. This is corrected in the upcoming"
@${ECHO_MSG} "===> of data at the end of an tape. This is corrected in FreeBSD"
@${ECHO_MSG} "===> 4.9-RELEASE and 5.2-RELEASE or use the -stable or -current tree."
@${ECHO_MSG} ""
@${ECHO_MSG} "You may use the following build options:"
@${ECHO_MSG} ""
@${ECHO_MSG} " WITH_CLIENT_ONLY=yes if you only want the file daemon."
@${ECHO_MSG} " WITH_CLIENT_ONLY=yes if you only want the file daemon."
.if !defined(WITH_MYSQL)
@${ECHO_MSG} " WITH_MYSQL=yes if you want MySQL instead of SqLite as the database."
.else
@ -69,6 +81,12 @@ pre-everything::
post-patch:
@${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_CFLAGS}|g' ${WRKSRC}/configure
pre-install:
.if !defined(WITH_CLIENT_ONLY)
@ ${SETENV} PKG_PREFIX=${PREFIX} \
${SH} ${PKGINSTALL} ${PORTNAME} PRE-INSTALL
.endif
post-install:
.if defined(WITH_CLIENT_ONLY)
# don't know how to make it better
@ -87,6 +105,9 @@ post-install:
elif [ -f ${PREFIX}/etc/console.conf ]; then \
${ECHO_CMD} "etc/console.conf" >> ${TMPPLIST}; \
fi
# chmod of smtp program so bacula can use it with dropped down permissions
${CHMOD} o+x ${PREFIX}/sbin/smtp
${CHOWN} -R bacula:bacula ${PREFIX}/share/bacula
.endif
# Install leaves existing conf files untouched. Respect this here!
for na in sd fd dir; do \
@ -104,7 +125,7 @@ post-install:
cpio -pdm -L -R root:wheel ${DOCSDIR}
.endif
# Inform user when full build takes place about
# Inform user afer install about important things ....
.if !defined(WITH_CLIENT_ONLY)
@${ECHO_MSG} "*******************************************************"
@${ECHO_MSG} "NOTE:"
@ -119,6 +140,23 @@ post-install:
@${ECHO_MSG} ""
@${ECHO_MSG} " ${PREFIX}/etc/bacula-dir.conf"
@${ECHO_MSG} ""
@${ECHO_MSG} "Take care of correct permissions for changer and"
@${ECHO_MSG} "tape device (e.g. /dev/ch0 and /dev/n[r]sa0) i.e."
@${ECHO_MSG} "they must be accesable by user bacula."
@${ECHO_MSG} ""
@${ECHO_MSG} "Due to lack of some features in the FreeBSD tape driver"
@${ECHO_MSG} "implemtation you MUST add some OS dependent options to"
@${ECHO_MSG} "the bacula-sd.conf file:"
@${ECHO_MSG} ""
@${ECHO_MSG} " Backward Space Record = no;"
@${ECHO_MSG} " Hardware End of Medium = no;"
@${ECHO_MSG} " Fast Forward Space File = no;"
@${ECHO_MSG} " BSF at EOM = yes;"
@${ECHO_MSG} ""
@${ECHO_MSG} "It is also important that all the scripts accessed"
@${ECHO_MSG} "by RunBeforeJob and RunAfterJob could be executed by"
@${ECHO_MSG} "the user bacula, too."
@${ECHO_MSG} ""
@${ECHO_MSG} "*******************************************************"
.endif

View File

@ -1 +1 @@
MD5 (bacula-1.32c.tar.gz) = 21552bc5c7d006d45007e8424f5560e6
MD5 (bacula-1.32f.tar.gz) = 2c635cf693262fc946eb13aa271e0263

View File

@ -33,7 +33,7 @@ BARCODE_FILE=/usr/local/etc/bacula-barcodes
me=$(basename $0)
# Debug
echo "$me $@" > /dev/console
logger -p user.err "$me $@"
if [ -z "$1" ] ; then
usage;
@ -58,7 +58,7 @@ fi
# Time to wait for loading
SLEEP=20
# What drive of the autochanger should be used primary
# At the moment bacula (1.31a) could not deal with more drives
# At the moment bacula (1.31a) could not deal with more than one drive
DRIVE=1
usage()
@ -90,9 +90,15 @@ usage()
case ${COMMAND} in
unload)
# enable the following line if you need to eject the cartridge
#mt -f ${TAPE} off
#sleep 2
mt -f ${TAPE} off
sleep 2
${MTX} -f ${CHANGER} return drive ${DRIVE}
# If the changer is power cycled with a tape loaded in a drive
if [ "$?" != "0" ]; then
free_slot=`${MTX} -f ${CHANGER} stat | grep "^slot " | grep -v "FULL" | awk '{print $2}'`
free_slot=${free_slot%:}
${MTX} -f ${CHANGER} move drive ${DRIVE} slot $free_slot
fi
;;
load)
@ -121,8 +127,8 @@ case ${COMMAND} in
# echo "Request loaded"
${MTX} -f ${CHANGER} status -S > /tmp/mtx.$$
rtn=$?
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL>" | awk '{print $6+1}' | tr -d ">"
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: source: <>" | awk "{print 0}"
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL> .*slot" | awk '{print $6+1}' | tr -d ">"
cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: .* source: <>" | awk "{print 0}"
rm -f /tmp/mtx.$$
exit $rtn
;;

View File

@ -0,0 +1,25 @@
*** configure.org Thu Jan 1 18:52:12 2004
--- configure Thu Jan 1 18:52:33 2004
***************
*** 19029,19038 ****
Director User: ${dir_user}
Director Group: ${dir_group}
! Storage Daemon User: ${dir_user}
! Storage DaemonGroup: ${dir_group}
! File Daemon User: ${dir_user}
! File Daemon Group: ${dir_group}
SQL binaries Directory ${SQL_BINDIR}
--- 19029,19038 ----
Director User: ${dir_user}
Director Group: ${dir_group}
! Storage Daemon User: ${sd_user}
! Storage DaemonGroup: ${sd_group}
! File Daemon User: ${fd_user}
! File Daemon Group: ${fd_group}
SQL binaries Directory ${SQL_BINDIR}

View File

@ -0,0 +1,14 @@
--- src/dird/dird.c 27 Dec 2003 13:14:12 -0000 1.41
+++ src/dird/dird.c 2 Jan 2004 17:21:21 -0000 1.42
@@ -197,10 +197,10 @@
init_stack_dump(); /* grab new pid */
}
- drop(uid, gid); /* reduce priveleges if requested */
-
/* Create pid must come after we are a daemon -- so we have our final pid */
create_pid_file(director->pid_directory, "bacula-dir", director->DIRport);
+
+ drop(uid, gid); /* reduce priveleges if requested */
/* signal(SIGHUP, reload_config); */

View File

@ -0,0 +1,15 @@
--- src/filed/filed.c 23 Dec 2003 20:23:15 -0000 1.21
+++ src/filed/filed.c 2 Jan 2004 17:21:21 -0000 1.22
@@ -211,10 +211,10 @@
init_stack_dump(); /* set new pid */
}
- drop(uid, gid);
-
/* Maximum 1 daemon at a time */
create_pid_file(me->pid_directory, "bacula-fd", me->FDport);
+
+ drop(uid, gid);
#ifdef BOMB
me += 1000000;

View File

@ -1,21 +0,0 @@
*** scripts/fd.in.orig Sun May 11 22:39:16 2003
--- scripts/fd.in Wed Oct 1 20:47:13 2003
***************
*** 139,146 ****
return 1
fi
fi
! # See if /var/lock/subsys/$1 exists
! if [ -f /var/lock/subsys/$1 ]; then
echo "$1 dead but subsys locked"
return 2
fi
--- 139,146 ----
return 1
fi
fi
! # See if @subsysdir@/$1 exists
! if [ -f @subsysdir@/$1 ]; then
echo "$1 dead but subsys locked"
return 2
fi

View File

@ -0,0 +1,14 @@
--- src/stored/stored.c 23 Dec 2003 20:23:15 -0000 1.25
+++ src/stored/stored.c 2 Jan 2004 17:21:21 -0000 1.26
@@ -185,9 +185,9 @@
init_stack_dump(); /* pick up new pid */
}
- drop(uid, gid);
-
create_pid_file(me->pid_directory, "bacula-sd", me->SDport);
+
+ drop(uid, gid);
/* Ensure that Volume Session Time and Id are both
* set and are both non-zero.

View File

@ -0,0 +1,48 @@
#!/bin/sh
PATH=/bin:/usr/sbin
if [ -z "${BACULA_DIR}" ]; then
BACULA_DIR=/var/db/bacula
fi
case $2 in
PRE-INSTALL)
USER=bacula
GROUP=${USER}
UID=910
GID=${UID}
if pw group show "${GROUP}" 2>/dev/null; then
echo "You already have a group \"${GROUP}\", so I will use it."
else
if pw groupadd ${GROUP} -g ${GID}; then
echo "Added group \"${GROUP}\"."
else
echo "Adding group \"${GROUP}\" failed..."
exit 1
fi
fi
if pw user show "${USER}" 2>/dev/null; then
echo "You already have a user \"${USER}\", so I will use it."
if pw usermod ${USER} -d ${BACULA_DIR} -G operator
then
echo "Changed home directory of \"${USER}\" to \"${BACULA_DIR}\""
else
echo "Changing home directory of \"${USER}\" to \"${BACULA_DIR}\" failed..."
exit 1
fi
else
if pw useradd ${USER} -u ${UID} -g ${GROUP} -G operator -h - \
-d ${BACULA_DIR} -s /sbin/nologin -c "Bacula Daemon"
then
echo "Added user \"${USER}\"."
else
echo "Adding user \"${USER}\" failed..."
exit 1
fi
fi
chown -R ${USER}:${GROUP} ${BACULA_DIR}
;;
esac