Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Dec 2011 14:10:26 GMT
From:      Chris Rees <crees@physics.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/163059: Portbuild: Drop privileges for extract/patch/build phases
Message-ID:  <201112041410.pB4EAQi5083232@freefall.freebsd.org>
Resent-Message-ID: <201112041420.pB4EK8fT093241@freefall.freebsd.org>

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

>Number:         163059
>Category:       ports
>Synopsis:       Portbuild: Drop privileges for extract/patch/build phases
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Dec 04 14:20:08 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Chris Rees
>Release:        FreeBSD 8.2-STABLE i386
>Organization:
>Environment:
System: FreeBSD freefall.freebsd.org 8.2-STABLE FreeBSD 8.2-STABLE #5 r227907: Wed Nov 23 21:55:50 UTC 2011 simon@freefall.freebsd.org:/usr/obj/usr/src/sys/FREEFALL i386


	
>Description:
	As discussed at [1] and with portmgr, here's a patch to portbuild to drop privileges for most stages except install.

	It's hardcoded, but since the rest of the file is too I don't see any way to get around this :)

	If I can get confirmation that this would be acceptable / perhaps even get a list of broken ports with it that'd be wonderful, (whenever!).  I'm aware one portmgr was interested, although I think right now he's unable to commit much time.

	[1] http://marcuscom.com/pipermail/tinderbox-list/2011-June/002161.html
>How-To-Repeat:
	
>Fix:

	

--- portbuild-su-patch.diff begins here ---
Index: buildscript
===================================================================
--- buildscript	(revision 228258)
+++ buildscript	(working copy)
@@ -193,6 +193,9 @@
 
   echo "prefixes: LOCALBASE=${L}"
 
+  # Nobody isn't allowed to create WRKDIRPREFIX, so we do it for him
+  /usr/bin/install -d -o nobody -m755 /work
+
   # Stash a copy of /etc/master.passwd and /etc/group to detect whether someone modifies it
   cp /etc/master.passwd /etc/master.passwd-save
   cp /etc/group /etc/group-save
@@ -241,7 +244,8 @@
 
   add_pkg ${ED}
   cd $dir
-  /pnohang ${BUILD_TIMEOUT} /tmp/make.log2 ${pkgname} make extract || cleanup 2
+  su -m nobody -c "/pnohang ${BUILD_TIMEOUT} /tmp/make.log2 ${pkgname} \
+		   make extract" || cleanup 2
   cat /tmp/make.log2
   del_pkg ${ED}
 
@@ -254,7 +258,8 @@
   echo "====================<phase 3: make patch>===================="
   add_pkg ${PD}
   cd $dir
-  /pnohang ${BUILD_TIMEOUT} /tmp/make.log3 ${pkgname} make patch || cleanup 3
+  su -m nobody -c "/pnohang ${BUILD_TIMEOUT} /tmp/make.log3 ${pkgname} \
+		   make patch" || cleanup 3
   cat /tmp/make.log3
   del_pkg ${PD}
 
@@ -295,7 +300,8 @@
   fi
 
   cd $dir
-  /pnohang ${BUILD_TIMEOUT} /tmp/make.log4 ${pkgname} make build || cleanup 4
+  su -m nobody -c "/pnohang ${BUILD_TIMEOUT} /tmp/make.log4 ${pkgname} \
+		   make build" || cleanup 4
   cat /tmp/make.log4
 
   echo "================================================================"
--- portbuild-su-patch.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



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