Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Sep 2005 14:30:17 -0400 (EDT)
From:      "Matthew X. Economou" <xenophon+fbsdports@irtnog.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        cperciva@daemonology.net
Subject:   ports/86177: [patch] Port security/freebsd-update should store working files under /var
Message-ID:  <20050915183017.71BC0491@cinep001fbgw.irtnog.org>
Resent-Message-ID: <200509151830.j8FIUCEZ054266@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         86177
>Category:       ports
>Synopsis:       [patch] Port security/freebsd-update should store working files under /var
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 15 18:30:11 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Matthew X. Economou
>Release:        FreeBSD 5.4-SECURITY i386
>Organization:
IRTNOG.ORG
>Environment:

N/A

>Description:

By default, the FreeBSD Update Client stores its working files under
/usr/local/freebsd-update.  If one mounts the /usr or /usr/local file
system read-only as part of a server hardening procedure, freebsd-update
will no longer be able to store updates in the default package install
(although an alternate location can be specified, either by command-
line option or via indirection through a symbolic link).  According to
hier(7), a directory under /var may be a more suitable location for
these files.

>How-To-Repeat:

N/A

>Fix:

I propose we add a frob to the security/freebsd-update port's Makefile
that allows the end user to select an alternate default location for the
client's working directory, and (at the port maintainer's discretion) to
set that default to /var/db/freebsd-update.  A patch that adds this frob
is attached below.  Please note that if the maintainer prefers, the
original default of "${PREFIX}/freebsd-update}" can be specified instead.
The remainder of the Makefile code will dynamically create whatever
directory is specified and add it to the port's packing list
(dynamically).  Please also note this patch mimics code found in
ports/net/samba3/Makefile.

--- freebsd-update-workdir.patch begins here ---
--- ports/security/freebsd-update/Makefile.orig	Thu Sep 15 14:14:13 2005
+++ ports/security/freebsd-update/Makefile	Thu Sep 15 14:03:27 2005
@@ -23,12 +23,16 @@
 # platforms, it either doesn't work or hasn't been tested.
 ONLY_FOR_ARCHS=	i386 amd64 alpha sparc64
 
+# Allow the end user to decide where the update files are stored.
+VARDIR=		${DESTDIR}/var
+FREEBSDUPDATE_WORKDIR=${VARDIR}/db/freebsd-update
+MAKE_ENV+=	NOFREEBSDUPDATEDIR=yes
+
 MAN5=		freebsd-update.conf.5
 MAN8=		freebsd-update.8
 PLIST_FILES=	sbin/freebsd-update		\
 		sbin/freebsd-update-verify	\
 		etc/freebsd-update.conf.sample
-PLIST_DIRS=	freebsd-update
 
 PKGMESSAGE=	${WRKDIR}/pkg-message
 
@@ -42,10 +46,22 @@
 	${SED} -e "s#PREFIX=/usr/local#PREFIX=${PREFIX}#g" \
 		${WRKSRC}/freebsd-update > ${WRKSRC}/freebsd-update.new
 	${MV} ${WRKSRC}/freebsd-update.new ${WRKSRC}/freebsd-update
+	${SED} -e "s#^WORKDIR=.*#WORKDIR=${FREEBSDUPDATE_WORKDIR}#" \
+		${WRKSRC}/freebsd-update > ${WRKSRC}/freebsd-update.new
+	${MV} ${WRKSRC}/freebsd-update.new ${WRKSRC}/freebsd-update
 	@${SED} -e "s=%%PREFIX%%=${PREFIX}=g" ${FILESDIR}/pkg-message \
 		> ${PKGMESSAGE}
 
 post-install:
+	@test -d ${FREEBSDUPDATE_WORKDIR} || \
+		${MKDIR} ${FREEBSDUPDATE_WORKDIR} && \
+		${CHMOD} 700 ${FREEBSDUPDATE_WORKDIR} && \
+		${CHOWN} root:wheel ${FREEBSDUPDATE_WORKDIR}
+	@${ECHO_CMD} "@exec ${MKDIR} ${FREEBSDUPDATE_WORKDIR} 2>/dev/null || true" >> ${TMPPLIST}
+	@${ECHO_CMD} "@exec ${CHMOD} 700 ${FREEBSDUPDATE_WORKDIR}" >> ${TMPPLIST}
+	@${ECHO_CMD} "@exec ${CHOWN} root:wheel ${FREEBSDUPDATE_WORKDIR}" >> ${TMPPLIST}
+	@${ECHO_CMD} "@unexec ${RMDIR} ${FREEBSDUPDATE_WORKDIR} 2>/dev/null || true" >> ${TMPPLIST}
+	@${ECHO_CMD} "@unexec ${ECHO_CMD} \"Warning: If you will *NOT* use this package any more, please remove ${FREEBSDUPDATE_WORKDIR}/* manually.\"" >> ${TMPPLIST}
 	@${CAT} ${PKGMESSAGE}
 
 .include <bsd.port.mk>
--- freebsd-update-workdir.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050915183017.71BC0491>