NIS uid/gid range

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Antoine Jacoutot
Date: Monday, February 19, 2007 - 5:40 am

Hi.

This diff makes it possible to only include a range of uid/gid for NIS 
password maps. I'm no regex guru but it seems to do the job (inspired 
from NetBSD).
Maybe some people can make use of this...



Index: Makefile.yp
===================================================================
RCS file: /cvs/src/usr.sbin/ypserv/ypinit/Makefile.yp,v
retrieving revision 1.13
diff -u -r1.13 Makefile.yp
--- Makefile.yp	1 Nov 2002 23:54:18 -0000	1.13
+++ Makefile.yp	19 Feb 2007 12:22:29 -0000
@@ -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=1000
+MAXUID=32765
+MINGID=1000
+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 \



-- 
Antoine
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
NIS uid/gid range, Antoine Jacoutot, (Mon Feb 19, 5:40 am)