summaryrefslogtreecommitdiff
path: root/net/samba
diff options
context:
space:
mode:
authorjlam <jlam@pkgsrc.org>2003-09-14 22:25:25 +0000
committerjlam <jlam@pkgsrc.org>2003-09-14 22:25:25 +0000
commit811defebab9b00800b5e1b588f3ca173121b824c (patch)
tree948f400e923456cbe4854f30b08378d3a4359bae /net/samba
parent0da114423a4f884c1819735db7c80cb00db2542c (diff)
downloadpkgsrc-811defebab9b00800b5e1b588f3ca173121b824c.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')
-rw-r--r--net/samba/Makefile27
-rw-r--r--net/samba/PLIST4
-rw-r--r--net/samba/files/adduser.sh160
-rw-r--r--net/samba/files/deluser.sh68
4 files changed, 256 insertions, 3 deletions
diff --git a/net/samba/Makefile b/net/samba/Makefile
index 3fe3aa2b2b2..a526861df4a 100644
--- a/net/samba/Makefile
+++ b/net/samba/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.102 2003/09/05 19:13:41 kim Exp $
+# $NetBSD: Makefile,v 1.103 2003/09/14 22:25:25 jlam Exp $
.include "Makefile.common"
-PKGREVISION= 3
+PKGREVISION= 4
MAINTAINER= tech-pkg@NetBSD.org
HOMEPAGE= http://www.samba.org/
@@ -56,10 +56,27 @@ EXAMPLESDIR= ${PREFIX}/share/examples/${PKGBASE}
CONF_FILES= ${EXAMPLESDIR}/smb.conf.default ${SAMBA_ETCDIR}/smb.conf
SUPPORT_FILES_PERMS= ${SMBPASSWD_FILE}
+SUPPORT_FILES_PERMS+= ${EXAMPLESDIR}/adduser.sh ${SAMBA_ETCDIR}/adduser \
+ ${ROOT_USER} ${ROOT_GROUP} 0555
+SUPPORT_FILES_PERMS+= ${EXAMPLESDIR}/deluser.sh ${SAMBA_ETCDIR}/deluser \
+ ${ROOT_USER} ${ROOT_GROUP} 0555
RCD_SCRIPTS= samba nmbd smbd
OWN_DIRS= ${SAMBA_ETCDIR} ${SAMBA_LOCKDIR}
OWN_DIRS_PERMS= ${SAMBA_PRIVATE} ${ROOT_USER} ${ROOT_GROUP} 0500
+.if !defined(MKTEMP)
+MKTEMP!= ${TYPE} mktemp | \
+ ${AWK} '/not found/ { print "mktemp"; exit } { print $$3 }'
+MAKEFLAGS+= MKTEMP="${MKTEMP}"
+.endif
+.if !defined(PWD_MKDB)
+PWD_MKDB!= ${TYPE} pwd_mkdb | \
+ ${AWK} '/not found/ { print "pwd_mkdb"; exit } { print $$3 }'
+MAKEFLAGS+= PWD_MKDB="${PWD_MKDB}"
+.endif
+FILES_SUBST+= MKTEMP=${MKTEMP:Q}
+FILES_SUBST+= PWD_MKDB=${PWD_MKDB:Q}
+
# Remove irrelevant files for this package.
post-extract:
${FIND} ${WRKDIR}/${DISTNAME} -name ".cvsignore" -print | \
@@ -72,6 +89,10 @@ post-extract:
${RM} -r ${WRKDIR}/${DISTNAME}/examples/libsmbclient
${RM} -r ${WRKDIR}/${DISTNAME}/examples/svr4-startup
+post-build:
+ @${SED} ${FILES_SUBST_SED} ${FILESDIR}/adduser.sh > ${WRKDIR}/adduser.sh
+ @${SED} ${FILES_SUBST_SED} ${FILESDIR}/deluser.sh > ${WRKDIR}/deluser.sh
+
post-install:
# Install Samba documentation.
${INSTALL_DATA_DIR} ${DOCDIR}
@@ -82,6 +103,8 @@ post-install:
# Install Samba examples.
${INSTALL_DATA_DIR} ${EXAMPLESDIR}
+ ${INSTALL_SCRIPT} ${WRKDIR}/adduser.sh ${EXAMPLESDIR}/adduser.sh
+ ${INSTALL_SCRIPT} ${WRKDIR}/deluser.sh ${EXAMPLESDIR}/deluser.sh
${CP} -R ${WRKDIR}/${DISTNAME}/examples/* ${EXAMPLESDIR}
${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${EXAMPLESDIR}
${CHMOD} -R ugo-w ${EXAMPLESDIR}
diff --git a/net/samba/PLIST b/net/samba/PLIST
index 3a4a61e5032..84f4ace8b96 100644
--- a/net/samba/PLIST
+++ b/net/samba/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.11 2003/06/04 06:12:21 jlam Exp $
+@comment $NetBSD: PLIST,v 1.12 2003/09/14 22:25:25 jlam Exp $
bin/findsmb
bin/make_printerdef
bin/make_smbcodepage
@@ -143,6 +143,8 @@ share/examples/samba/LDAP/smbldap-tools/smbldap-usershow.pl
share/examples/samba/LDAP/smbldap-tools/smbldap_conf.pm
share/examples/samba/LDAP/smbldap-tools/smbldap_tools.pm
share/examples/samba/README
+share/examples/samba/adduser.sh
+share/examples/samba/deluser.sh
share/examples/samba/misc/convert_smbpasswd
share/examples/samba/misc/extra_smbstatus
share/examples/samba/misc/modify_samba_config.pl
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