diff options
author | jlam <jlam@pkgsrc.org> | 2003-09-14 22:25:25 +0000 |
---|---|---|
committer | jlam <jlam@pkgsrc.org> | 2003-09-14 22:25:25 +0000 |
commit | e13f999478e11bca82ad35f406d714b085989f85 (patch) | |
tree | 948f400e923456cbe4854f30b08378d3a4359bae /net/samba/files | |
parent | dd6560a702f1db27b050c40b36ff9f31047a09e4 (diff) | |
download | pkgsrc-e13f999478e11bca82ad35f406d714b085989f85.tar.gz |
Update net/samba to 2.2.8nb4. Changes from 2.2.8nb3 are installing
adduser and deluser scripts into ${PKG_SYSCONFDIR} that are capable of
dealing with usernames containing a "$". These scripts basically
accept the same options as useradd/userdel. They're meant to be used
in "add user script" and "delete user script" to deal with samba
machine accounts.
Diffstat (limited to 'net/samba/files')
-rw-r--r-- | net/samba/files/adduser.sh | 160 | ||||
-rw-r--r-- | net/samba/files/deluser.sh | 68 |
2 files changed, 228 insertions, 0 deletions
diff --git a/net/samba/files/adduser.sh b/net/samba/files/adduser.sh new file mode 100644 index 00000000000..b67d8b25d00 --- /dev/null +++ b/net/samba/files/adduser.sh @@ -0,0 +1,160 @@ +#!/bin/sh +# +# $NetBSD: adduser.sh,v 1.1 2003/09/14 22:25:26 jlam Exp $ +# +# This is an adduser script for NetBSD systems whose useradd(8) doesn't +# accept "$" in the username. + +awkprog="@AWK@" +catprog="@CAT@" +mktempprog="@MKTEMP@" +pwdmkdbprog="@PWD_MKDB@" +rmprog="@RM@" + +progname=adduser + +usage() { + echo "Usage: $progname [-c comment] [-d homedir] [-n] [-r low..high]" + echo " [-s shell] -g gid name" + exit 1 +} + +isnum() { + case "$1" in + 0[0-9]*|*[!0-9]*) + return 1 + ;; + esac + return 0 +} + +doit="" +gid="" +minuid=1000 +maxuid=60000 +comment="" +homedir="" +shell=/sbin/nologin + +while getopts c:d:g:nr:s: flag; do + case $flag in + c) comment="${OPTARG}" ;; + d) homedir="${OPTARG}" ;; + g) gid="${OPTARG}" ;; + n) doit=":" ;; + r) minuid=${OPTARG%%..*}; maxuid=${OPTARG##*..} ;; + s) shell="${OPTARG}" ;; + esac +done +shift `expr $OPTIND - 1` + +if [ $# -lt 1 ]; then + usage +fi + +name="$1" +if [ -z "$gid" ]; then + echo "$progname: \`-g gid' is a required option" 1>&2 + exit 1 +fi +if ! isnum "$gid"; then + echo "$progname: \`$gid' is not a valid gid" 1>&2 + exit 1 +fi +if ! isnum "$minuid"; then + echo "$progname: \`$minuid' is not a valid minimum uid" 1>&2 + exit 1 +fi +if ! isnum "$maxuid"; then + echo "$progname: \`$maxuid' is not a valid maximum uid" 1>&2 + exit 1 +fi +if [ $minuid -gt $maxuid ]; then + echo "$progname: \`$minuid..$maxuid' is not a valid range" 1>&2 + exit 1 +fi +case "$comment" in +*:*) + echo "$progname: \`$comment' is not a valid comment" 1>&2 + exit 1 + ;; +esac +case "$homedir" in +*:*) + echo "$progname: \`$homedir' is not a valid home directory" 1>&2 + exit 1 + ;; +%*) + # This is an unsubstituted variable (probably %H in smbd). + # Silently change this to a proper default. + # + homedir="/nonexistent" + ;; +esac +case "$shell" in +*:*) + echo "$progname: \`$shell' is not a valid shell" 1>&2 + exit 1 + ;; +esac +case "$name" in +*:*) + echo "$progname: \`$name' is not a valid username" 1>&2 + exit 1 + ;; +esac + +ptmp=`$mktempprog -q /etc/ptmp` +case "$ptmp" in +/etc/ptmp) + ;; +*) + echo "$progname: can't create /etc/ptmp" 1>&2 + exit 1 + ;; +esac + +if [ ! -f /etc/master.passwd ]; then + echo "$progname: /etc/master.passwd not found" 1>&2 + $rmprog -f $ptmp + exit 1 +fi + +$catprog /etc/master.passwd >> $ptmp + +uid=` \ + $awkprog -v minuid=$minuid -v maxuid=maxuid ' \ + BEGIN { FS = ":" } \ + { seen_uids[$3] = 1 } \ + END { \ + uid = minuid; \ + while (uid <= maxuid) { \ + if (uid in seen_uids) { \ + uid++; \ + continue; \ + } \ + print uid; \ + exit; \ + } \ + print -1; \ + }' $ptmp \ +` +if [ $uid -lt 0 ]; then + echo "$progname: no uid can be allocated in $minuid..$maxuid" 1>&2 + $rmprog -f $ptmp + exit 1 +fi + +case "${name}" in +*$) : ${comment:=${name%%[$]*} samba machine account} ;; +*) : ${comment:=${name} samba user} ;; +esac +entry="${name}:*:${uid}:${gid}::0:0:${comment}:${homedir}:${shell}" + +echo "$entry" >> $ptmp + +$doit $pwdmkdbprog -p -u "${name}" $ptmp +rc=$? + +$rmprog -f $ptmp +exit $rc diff --git a/net/samba/files/deluser.sh b/net/samba/files/deluser.sh new file mode 100644 index 00000000000..ba535c5d534 --- /dev/null +++ b/net/samba/files/deluser.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# +# $NetBSD: deluser.sh,v 1.1 2003/09/14 22:25:26 jlam Exp $ +# +# This is a deluser script for NetBSD systems whose userdel(8) doesn't +# accept "$" in the username. + +awkprog="@AWK@" +mktempprog="@MKTEMP@" +pwdmkdbprog="@PWD_MKDB@" +rmprog="@RM@" + +progname=deluser + +usage() { + echo "Usage: $progname [-n] name" + exit 1 +} + +doit="" + +while getopts n flag; do + case $flag in + n) doit=":" ;; + esac +done +shift `expr $OPTIND - 1` + +if [ $# -lt 1 ]; then + usage +fi + +name="$1" + +case "$name" in +*:*) + echo "$progname: \`$name' is not a valid user name" 1>&2 + exit 1 +esac + +ptmp=`$mktempprog -q /etc/ptmp` +case "$ptmp" in +/etc/ptmp) + ;; +*) + echo "$progname: can't create /etc/ptmp" 1>&2 + exit 1 + ;; +esac + +if [ ! -f /etc/master.passwd ]; then + echo "$progname: /etc/master.passwd not found" 1>&2 + $rmprog -f $ptmp + exit 1 +fi + +$awkprog -v name="${name}" ' \ + BEGIN { FS = ":" } \ + { \ + if ($1 != name) \ + print $0; \ + }' /etc/master.passwd > $ptmp + +$doit $pwdmkdbprog -p $ptmp +rc=$? + +$rmprog -f $ptmp +exit $rc |