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
        [EMAIL PROTECTED] [ -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
        [EMAIL PROTECTED] [ -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

Reply via email to