123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- #!/bin/sh
- #
- # Make passwd.db, group.db, etc.
- #
- VAR_DB=/var/db
- # Use make if available
- if [ -x /usr/bin/make -o -x /bin/make ]; then
- make -C $VAR_DB
- exit 0
- fi
- # No make available, do it in hard way
- # passwd.db
- if [ -e /etc/passwd ]; then
- target=$VAR_DB/passwd.db
- echo -n "passwd... "
- awk 'BEGIN { FS=":"; OFS=":" } \
- /^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { printf ".%s ", $$1; print; \
- printf "=%s ", $$3; print }' /etc/passwd | \
- makedb --quiet -o $target -
- echo "done."
- fi
- # group.db
- if [ -e /etc/group ]; then
- target=$VAR_DB/group.db
- echo -n "group... "
- awk 'BEGIN { FS=":"; OFS=":" } \
- /^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { printf ".%s ", $$1; print; \
- printf "=%s ", $$3; print; \
- if ($$4 != "") { \
- split($$4, grmems, ","); \
- for (memidx in grmems) { \
- mem=grmems[memidx]; \
- if (members[mem] == "") \
- members[mem]=$$3; \
- else \
- members[mem]=members[mem] "," $$3; \
- } \
- delete grmems; } } \
- END { for (mem in members) \
- printf ":%s %s %s\n", mem, mem, members[mem]; }' /etc/group | \
- makedb --quiet -o $target -
- echo "done."
- fi
- # ethers.db
- if [ -e /etc/ethers ]; then
- target=$VAR_DB/ethers.db
- echo -n "ethers... "
- awk '/^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { printf ".%s ", $$1; print; \
- printf "=%s ", $$2; print }' /etc/ethers | \
- makedb --quiet -o $target -
- echo "done."
- fi
- # protocols.db
- if [ -e /etc/protocols ]; then
- target=$VAR_DB/protocols.db
- echo -n "protocols... "
- awk '/^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { printf ".%s ", $$1; print; \
- printf "=%s ", $$2; print; \
- for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
- { printf ".%s ", $$i; print } }' /etc/protocols | \
- makedb --quiet -o $target -
- echo "done."
- fi
- # rpc.db
- if [ -e /etc/rpc ]; then
- target=$VAR_DB/rpc.db
- echo -n "rpc... "
- awk '/^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { printf ".%s ", $$1; print; \
- printf "=%s ", $$2; print; \
- for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
- { printf ".%s ", $$i; print } }' /etc/rpc | \
- makedb --quiet -o $target -
- echo "done."
- fi
- # services.db
- if [ -e /etc/services ]; then
- target=$VAR_DB/services.db
- echo -n "services... "
- awk 'BEGIN { FS="[ \t/]+" } \
- /^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { sub(/[ \t]*#.*$$/, "");\
- printf ":%s/%s ", $$1, $$3; print; \
- printf ":%s/ ", $$1; print; \
- printf "=%s/%s ", $$2, $$3; print; \
- printf "=%s/ ", $$2; print; \
- for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
- { printf ":%s/%s ", $$i, $$3; print; \
- printf ":%s/ ", $$i; print } }' /etc/services | \
- makedb --quiet -o $target -
- echo "done."
- fi
- # shadow.db
- if [ -e /etc/shadow ]; then
- target=$VAR_DB/shadow.db
- echo -n "shadow... "
- awk 'BEGIN { FS=":"; OFS=":" } \
- /^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { printf ".%s ", $$1; print }' /etc/shadow | \
- (umask 077 && makedb --quiet -o $target -)
- echo "done."
- if chgrp shadow $target 2>/dev/null; then
- chmod g+r $target
- else
- chown 0 $target; chgrp 0 $target; chmod 600 $target;
- echo
- echo "Warning: The shadow password database $target"
- echo "has been set to be readable only by root. You may want"
- echo "to make it readable by the \`shadow' group depending"
- echo "on your configuration."
- echo
- fi
- fi
- # gshadow.db
- if [ -e /etc/gshadow ]; then
- target=$VAR_DB/gshadow.db
- echo -n "gshadow... "
- awk 'BEGIN { FS=":"; OFS=":" } \
- /^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { printf ".%s ", $$1; print }' /etc/gshadow | \
- (umask 077 && makedb --quiet -o $target -)
- echo "done."
- if chgrp shadow $target 2>/dev/null; then
- chmod g+r $target
- else
- chown 0 $target; chgrp 0 $target; chmod 600 $target
- echo
- echo "Warning: The shadow group database $target"
- echo "has been set to be readable only by root. You may want"
- echo "to make it readable by the \`shadow' group depending"
- echo "on your configuration."
- echo
- fi
- fi
- # netgroup.db
- if [ -e /etc/netgroup ]; then
- target=$VAR_DB/netgroup.db
- echo -n "netgroup... "
- awk 'BEGIN { ini=1 } \
- /^[ \t]*$$/ { next } \
- /^[ \t]*#/ { next } \
- /^[^#]/ { if (sub(/[ \t]*\\$$/, " ") == 0) end="\n"; \
- else end=""; \
- gsub(/[ \t]+/, " "); \
- sub(/^[ \t]*/, ""); \
- if (ini == 0) printf "%s%s", $$0, end; \
- else printf ".%s %s%s", $$1, $$0, end; \
- ini=end == "" ? 0 : 1; } \
- END { if (ini==0) printf "\n" }' /etc/netgroup | \
- makedb --quiet -o $target
- echo "done."
- fi
|