--- Makefile.yp.ori	Sat Feb 28 14:29:36 2009
+++ Makefile.yp	Sat Feb 28 15:45:52 2009
@@ -14,6 +14,7 @@
 MAKEDBM=/usr/sbin/makedbm
 SED=/usr/bin/sed
 SENDMAIL=/usr/sbin/sendmail
+SORT=/usr/bin/sort
 STDHOSTS=/usr/sbin/stdhosts
 STDETHERS=/usr/sbin/stdethers
 MKALIAS=/usr/sbin/mkalias
@@ -34,33 +35,53 @@
 # If you want ypserv to ask DNS for unknown hosts set USEDNS to -b
 USEDNS=
 
+# Only include UID/GID between MIN/MAX range in the maps.
+MINUID=2000
+MAXUID=32765
+MINGID=2000
+MAXGID=32765
+
 all: passwd group hosts ethers networks rpc services protocols netid netgroup amd.home aliases
 
 passwd.time: $(DIR)/master.passwd
 	-@if [ -f $(>) ]; then \
 		if [ ! $(UNSECURE) ]; then \
 			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 | \
-			$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-			{ print $$1, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
-			$(MAKEDBM) - passwd.byname; \
+			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
+			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+			{ if (minuid <= $$3 && maxuid >= $$3) \
+			print $$1, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
+			${SORT} | $(MAKEDBM) - passwd.byname; \
 			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 |\
-			$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-			{ print $$3, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
-			$(MAKEDBM) - passwd.byuid; \
+			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
+			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+			{ if (minuid <= $$3 && maxuid >= $$3) \
+			print $$3, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
+			${SORT} | $(MAKEDBM) - passwd.byuid; \
 		else \
 			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 | \
-			$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-			{ print $$1, $$0 }' - | $(MAKEDBM) - passwd.byname; \
+			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
+			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+			{ if (minuid <= $$3 && maxuid >= $$3) \
+			print $$1, $$0 }' - | ${SORT} | \
+			$(MAKEDBM) - passwd.byname; \
 			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 |\
-			$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-			{ print $$3, $$0 }' - | $(MAKEDBM) - passwd.byuid; \
+			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
+			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+			{ if (minuid <= $$3 && maxuid >= $$3) \
+			print $$3, $$0 }' - | ${SORT} | \
+			$(MAKEDBM) - passwd.byuid; \
 		fi; \
 		$(CAT) $(>) | \
-		$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-		{ print $$1, $$0 }' - | $(MAKEDBM-S) - master.passwd.byname; \
+		$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
+		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+		{ if (minuid <= $$3 && maxuid >= $$3) \
+		print $$1, $$0 }' - | $(MAKEDBM-S) - master.passwd.byname; \
 		$(CAT) $(>) | \
-		$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-		{ print $$3, $$0 }' - | $(MAKEDBM-S) - master.passwd.byuid; \
+		$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
+		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+		{ if (minuid <= $$3 && maxuid >= $$3) \
+		print $$3, $$0 }' - | $(MAKEDBM-S) - master.passwd.byuid; \
 		$(TOUCH) $(@); \
 		$(ECHO) "updated passwd"; \
 		if [ ! $(NOPUSH) ]; then \
@@ -79,12 +100,14 @@
 
 group.time: $(DIR)/group
 	-@if [ -f $(>) ]; then \
-		$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-		{ print $$1, $$0 }' $(>) | \
-		$(MAKEDBM) - group.byname; \
-		$(AWK) 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
-		{ print $$3, $$0 }' $(>) | \
-		$(MAKEDBM) - group.bygid; \
+		$(AWK) -v mingid=${MINGID} -v maxgid=${MAXGID} \
+		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+		{ if (mingid <= $$3 && maxgid >= $$3) print $$1, $$0 }' $(>) | \
+		${SORT} | $(MAKEDBM) - group.byname; \
+		$(AWK) -v mingid=${MINGID} -v maxgid=${MAXGID} \
+		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
+		{ if (mingid <= $$3 && maxgid >= $$3) print $$3, $$0 }' $(>) | \
+		${SORT} | $(MAKEDBM) - group.bygid; \
 		$(TOUCH) $(@); \
 		$(ECHO) "updated group"; \
 		if [ ! $(NOPUSH) ]; then \
