changeset 5137:bca739d216a7 draft

privsep: Detect a suitable user for dhcpcd, otherwise use dhcpcd System users generally have _ preceeding their username. Only use this user if it exists and their home dir is not /var/empty. Otherwise default to using dhcpcd.
author Roy Marples <roy@marples.name>
date Sun, 05 Apr 2020 16:44:32 +0100
parents 0fea55d03199
children 34391161e606
files configure
diffstat 1 files changed, 16 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/configure	Sun Apr 05 15:52:50 2020 +0100
+++ b/configure	Sun Apr 05 16:44:32 2020 +0100
@@ -556,16 +556,26 @@
 if [ "$PRIVSEP" = yes ]; then
 	echo "Enabling Privilege Separation"
 
-	# Try and work out a user
+	# Try and work out system user
 	if [ -z "$PRIVSEP_USER" ]; then
-		for x in _dhcpcd _dhcp; do
-			if id "$x" 2>/dev/null >&2; then
+		printf "Detecting a suitable user for dhcpcd ... "
+		for x in _dhcpcd _dhcp dhcpcd; do
+			home=$(getent passwd $x 2>/dev/null | cut -d: -f6)
+			case "$home" in
+			/var/empty|"") ;;
+			*)
 				PRIVSEP_USER="$x"
-				break
-			fi
+				break;;
+			esac
 		done
 	fi
-	: ${PRIVSEP_USER:=_dhcpcd}
+	if [ -n "$PRIVSEP_USER" ]; then
+		echo "$PRIVSEP_USER"
+	else
+		PRIVSEP_USER=dhcpcd
+		echo
+		echo "No suitable user found for Priviledge Separation!"
+	fi
 
 	echo "CPPFLAGS+=	-DPRIVSEP" >>$CONFIG_MK
 	echo "#ifndef PRIVSEP_USER" >>$CONFIG_H