pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/sysutils/user_interix user(8) emulation scripts for In...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/b1663bfa1883
branches:  trunk
changeset: 474259:b1663bfa1883
user:      tv <tv%pkgsrc.org@localhost>
date:      Tue Apr 27 01:45:22 2004 +0000

description:
user(8) emulation scripts for Interix.

diffstat:

 sysutils/user_interix/DESCR             |    2 +
 sysutils/user_interix/Makefile          |   27 ++++++
 sysutils/user_interix/PLIST             |    5 +
 sysutils/user_interix/files/groupadd.sh |   30 +++++++
 sysutils/user_interix/files/groupdel.sh |   28 ++++++
 sysutils/user_interix/files/useradd.sh  |  131 ++++++++++++++++++++++++++++++++
 sysutils/user_interix/files/userdel.sh  |   46 +++++++++++
 7 files changed, 269 insertions(+), 0 deletions(-)

diffs (297 lines):

diff -r b4b1becbaac1 -r b1663bfa1883 sysutils/user_interix/DESCR
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/user_interix/DESCR       Tue Apr 27 01:45:22 2004 +0000
@@ -0,0 +1,2 @@
+This implements a subset of useradd(8)/groupadd(8) functionality on
+Interix that is sufficient for pkgsrc use.
diff -r b4b1becbaac1 -r b1663bfa1883 sysutils/user_interix/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/user_interix/Makefile    Tue Apr 27 01:45:22 2004 +0000
@@ -0,0 +1,27 @@
+# $NetBSD: Makefile,v 1.1.1.1 2004/04/27 01:45:22 tv Exp $
+#
+
+DISTNAME=              user-20040426
+CATEGORIES=            sysutils
+MASTER_SITES=          # empty
+DISTFILES=             # empty
+
+MAINTAINER=            tv%duh.org@localhost
+COMMENT=               Limited NetBSD-compatible useradd/groupadd commands
+
+ONLY_FOR_PLATFORM=     Interix-*-*
+
+PKG_INSTALLATION_TYPES=        overwrite pkgviews
+
+NO_CHECKSUM=           yes
+NO_BUILDLINK=          yes
+NO_CONFIGURE=          yes
+NO_TOOLS=              yes
+NO_BUILD=              yes
+
+do-install:
+.for f in useradd userdel groupadd groupdel
+       ${INSTALL_SCRIPT} ${FILESDIR}/$f.sh ${PREFIX}/sbin/$f
+.endfor
+
+.include "../../mk/bsd.pkg.mk"
diff -r b4b1becbaac1 -r b1663bfa1883 sysutils/user_interix/PLIST
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/user_interix/PLIST       Tue Apr 27 01:45:22 2004 +0000
@@ -0,0 +1,5 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2004/04/27 01:45:22 tv Exp $
+sbin/groupadd
+sbin/groupdel
+sbin/useradd
+sbin/userdel
diff -r b4b1becbaac1 -r b1663bfa1883 sysutils/user_interix/files/groupadd.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/user_interix/files/groupadd.sh   Tue Apr 27 01:45:22 2004 +0000
@@ -0,0 +1,30 @@
+#!/bin/ksh
+# $NetBSD: groupadd.sh,v 1.1.1.1 2004/04/27 01:45:22 tv Exp $
+
+export PATH=/bin:/usr/contrib/win32/bin
+
+show_usage () {
+       echo "usage: $0 [-v] group" >&2
+       exit 1
+}
+
+verbose=false
+run_cmd () {
+       if $verbose; then printf '%s\n' "+ $*"; fi
+       "$@"
+}
+
+while getopts 'g:ov' f; do
+       case $f in
+       g)      echo "$0: numeric gid cannot be set manually; ignoring" >&2;;
+       o)      echo "$0: cannot reuse numeric gid of another group; aborting" >&2; exit 2;;
+       v)      verbose=true;;
+       \?)     show_usage;;
+       esac
+done
+shift $(($OPTIND - 1))
+
+if [ $# -ne 1 ]; then show_usage; fi
+$verbose || exec >/dev/null
+
+run_cmd net localgroup $1 /add /comment:"Group added by Interix groupadd command"
diff -r b4b1becbaac1 -r b1663bfa1883 sysutils/user_interix/files/groupdel.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/user_interix/files/groupdel.sh   Tue Apr 27 01:45:22 2004 +0000
@@ -0,0 +1,28 @@
+#!/bin/ksh
+# $NetBSD: groupdel.sh,v 1.1.1.1 2004/04/27 01:45:22 tv Exp $
+
+export PATH=/bin:/usr/contrib/win32/bin
+
+show_usage () {
+       echo "usage: $0 [-v] group" >&2
+       exit 1
+}
+
+verbose=false
+run_cmd () {
+       if $verbose; then printf '%s\n' "+ $*"; fi
+       "$@"
+}
+
+while getopts 'v' f; do
+       case $f in
+       v)      verbose=true;;
+       \?)     show_usage;;
+       esac
+done
+shift $(($OPTIND - 1))
+
+if [ $# -ne 1 ]; then show_usage; fi
+$verbose || exec >/dev/null
+
+run_cmd net localgroup $1 /delete
diff -r b4b1becbaac1 -r b1663bfa1883 sysutils/user_interix/files/useradd.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/user_interix/files/useradd.sh    Tue Apr 27 01:45:22 2004 +0000
@@ -0,0 +1,131 @@
+#!/bin/ksh
+# $NetBSD: useradd.sh,v 1.1.1.1 2004/04/27 01:45:22 tv Exp $
+
+export PATH=/bin:/usr/contrib/win32/bin
+
+show_usage () {
+       echo "usage: $0 [-mv] [-G secondary-group] [-b base-dir] [-c comment] [-d home-dir] [-g group|=uid] user" >&2
+       echo "       $0 -D" >&2
+       exit 1
+}
+
+verbose=false
+run_cmd () {
+       if $verbose; then printf '%s\n' "+ $*"; fi
+       "$@"
+}
+
+if [ "$USERPROFILE" != "" ]; then
+       base_dir="$(dirname "$(ntpath2posix -c "$USERPROFILE")")"
+else
+       base_dir="/home"
+fi
+
+set -A extra_groups
+create_homedir=false
+gecos=
+group=+Users
+home_dir=
+
+show_defaults () {
+       printf 'base_dir\t%s\n' "$base_dir"
+       printf 'comment\t\t%s\n' "$gecos"
+       printf 'group\t\t%s\n' "$group"
+       exit 0
+}
+
+while getopts 'DG:L:b:c:d:e:f:g:k:mp:or:s:u:v' f; do
+       case $f in
+       D)      show_defaults;;
+       G)      extra_groups[${#extra_groups}]="$OPTARG";;
+       L)      echo "$0: login classes not supported; ignoring" >&2;;
+       b)      base_dir="$OPTARG";;
+       c)      gecos="$OPTARG";;
+       d)      home_dir="$OPTARG";;
+       e)      echo "$0: expiry time not yet supported; ignoring" >&2;;
+       f)      echo "$0: inactive time not yet supported; ignoring" >&2;;
+       g)      group="$OPTARG";;
+       k)      echo "$0: skeleton files not yet supported; ignoring" >&22;;
+       m)      create_homedir=true;;
+       p)      echo "$0: cannot set password from command line; aborting" >&2; exit 1;;
+       o)      echo "$0: cannot reuse numeric uid of another user; aborting" >&2; exit 1;;
+       r)      echo "$0: numeric ID range cannot be set manually; ignoring" >&2;;
+       s)      echo "$0: setting login shell not yet supported; ignoring" >&2;;
+       u)      echo "$0: numeric uid cannot be set manually; ignoring" >&2;;
+       v)      verbose=true;;
+       \?)     show_usage;;
+       esac
+done
+shift $(($OPTIND - 1))
+
+if [ $# -ne 1 ]; then show_usage; fi
+$verbose || exec >/dev/null
+
+### check for existence of desired groups
+
+if [ "$group" != "=uid" ]; then
+       if ! net localgroup "${group#+}" >/dev/null 2>&1; then
+               echo "$0: group '$group' does not exist" >&2; exit 1
+       fi
+fi
+
+for g in "${extra_groups[@]}"; do
+       if ! net localgroup "${g#+}" >/dev/null 2>&1; then
+               echo "$0: group '$g' does not exist" >&2; exit 1
+       fi
+done
+
+### check for ability to create homedir
+
+if $create_homedir && [ "$home_dir" = "" ]; then
+       if [ ! -d "$base_dir" ]; then
+               echo "$0: base dir '$base_dir' does not exist" >&2; exit 1
+       fi
+
+       home_dir="$base_dir/$1"
+fi
+
+if $create_homedir && [ -d "$home_dir" ]; then
+       echo "$0: home dir '$home_dir' already exists; not clobbering" >&2
+       create_homedir=false
+fi
+
+### add the user
+
+run_cmd net user $1 /add /fullname:"$gecos" /comment:"User added by Interix useradd command" || exit 1
+
+### put user in groups
+
+if [ "${group#+}" != "Users" ]; then
+       # "Users" added by default; remove and add the real one here:
+       run_cmd net localgroup "Users" $1 /delete || exit 1
+
+       # Under Interix, a user *is* a group.  Do nothing if =uid is given.
+       if [ "$group" != "=uid" ]; then
+               run_cmd net localgroup "${group#+}" $1 /add || exit 1
+       fi
+fi
+
+for g in "${extra_groups[@]}"; do
+       # Don't add a "primary" group as a "secondary" group too.
+       if [ "${g#+}" != "${group#+}" ]; then
+               run_cmd net localgroup "${g#+}" $1 /add || exit 1
+       fi
+done
+
+### set, and optionally create and cacls the homedir
+
+if [ "$home_dir" != "" ]; then
+       home_dir_nt="$(posixpath2nt "$home_dir")"
+
+       if $create_homedir; then
+               # To get "vanilla" ACLs, we use Win32 "mkdir".
+               run_cmd wmkdir "$home_dir_nt" || exit 1
+
+               echo y | run_cmd cacls "$home_dir_nt" /T /G Administrators:F || exit 1
+               run_cmd cacls "$home_dir_nt" /T /E /G SYSTEM:F || exit 1
+               run_cmd cacls "$home_dir_nt" /T /E /G "$1":F || exit 1
+       fi
+
+       run_cmd net user "$1" /homedir:"$home_dir_nt" || exit 1
+fi
diff -r b4b1becbaac1 -r b1663bfa1883 sysutils/user_interix/files/userdel.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sysutils/user_interix/files/userdel.sh    Tue Apr 27 01:45:22 2004 +0000
@@ -0,0 +1,46 @@
+#!/bin/ksh
+# $NetBSD: userdel.sh,v 1.1.1.1 2004/04/27 01:45:22 tv Exp $
+
+export PATH=/bin:/usr/contrib/win32/bin
+
+show_usage () {
+       echo "usage: $0 [-rv] user" >&2
+       exit 1
+}
+
+verbose=false
+run_cmd () {
+       if $verbose; then printf '%s\n' "+ $*"; fi
+       "$@"
+}
+
+remove_home_dir=false
+
+while getopts 'prv' f; do
+       case $f in
+       p)      echo "$0: cannot yet lock out user with -p; aborting" >&2; exit 1;;
+       r)      remove_home_dir=true;;
+       v)      verbose=true;;
+       \?)     show_usage;;
+       esac
+done
+shift $(($OPTIND - 1))
+
+if [ $# -ne 1 ]; then show_usage; fi
+$verbose || exec >/dev/null
+
+if ! net user $1 >/dev/null 2>&1; then
+       echo "$0: user $1 does not exist" >&2; exit 1
+fi
+
+if $remove_home_dir; then
+       home_dir="$(eval "echo ~$1")"
+
+       case "$home_dir" in
+       /)      echo "$0: user $1 has no home directory; ignoring remove request" >&2;;
+       /*/*)   rm -rf "$home_dir";;
+       *)      echo "$0: could not delete home directory '$home_dir'; aborting" >&2; exit 1;;
+       esac
+fi
+
+run_cmd net user $1 /delete



Home | Main Index | Thread Index | Old Index