summaryrefslogtreecommitdiff
path: root/system/adelie-base/adduser
diff options
context:
space:
mode:
Diffstat (limited to 'system/adelie-base/adduser')
-rwxr-xr-xsystem/adelie-base/adduser90
1 files changed, 90 insertions, 0 deletions
diff --git a/system/adelie-base/adduser b/system/adelie-base/adduser
new file mode 100755
index 000000000..ba9d90a61
--- /dev/null
+++ b/system/adelie-base/adduser
@@ -0,0 +1,90 @@
+#!/bin/sh
+# adduser - BusyBox compatibility shim
+# bbshim
+#
+# Copyright © 2017 A. Wilcox. All rights reserved.
+# Licensed under the terms of the NCSA Open Source license.
+#
+
+# The GECOS for the new user.
+GECOS="Linux User,,,"
+
+# Additional groups in which to add the new user.
+MYGROUPS=
+
+# Path to the home directory for the new user.
+HOMEDIR=
+
+# Don't call passwd(1) for the new user afterwards.
+NOPASSWD=0
+
+# The new user's shell.
+MYSHELL=$SHELL
+
+# An alternative skeleton directory for the new user's home directory.
+SKEL=/etc/skel
+
+# The new user is a system user.
+SYSTEM=0
+
+# Use this UID number for the new user.
+MYUID=
+
+
+ARG=
+
+while getopts h:g:s:G:SDHu:k: ARG
+do
+ case $ARG in
+ h) HOMEDIR=$OPTARG ;;
+ g) GECOS=$OPTARG ;;
+ s) MYSHELL=$OPTARG ;;
+ G) MYGROUPS=$OPTARG ;;
+ S) SYSTEM=1
+ MYSHELL="/bin/false";;
+ D) NOPASSWD=1 ;;
+ H) unset HOMEDIR ;;
+ u) MYUID=$OPTARG ;;
+ k) SKEL=$OPTARG ;;
+ :) exit 1 ;;
+ \?) exit 1 ;;
+ esac
+done
+
+shift $(($OPTIND - 1))
+
+if [ -z "$*" ]; then
+ echo "$0: user name is required" >&2
+ exit 1
+fi
+
+set "$@"
+
+
+CMDLINE="-s $MYSHELL"
+
+if [ -n "$MYGROUPS" ]; then
+ CMDLINE="$CMDLINE -g $MYGROUPS"
+fi
+
+if [ -n "$HOMEDIR" ]; then
+ CMDLINE="$CMDLINE -m -d \"$HOMEDIR\" -k \"$SKEL\""
+fi
+
+if [ $SYSTEM -ne 0 ]; then
+ CMDLINE="$CMDLINE -r"
+fi
+
+if [ -n "$MYUID" ]; then
+ CMDLINE="$CMDLINE -u $MYUID"
+fi
+
+if [ -n "$2" ]; then
+ CMDLINE="$CMDLINE -g $2"
+fi
+
+useradd -c "$GECOS" $CMDLINE $1
+
+#if [ $NOPASSWD -eq 0 ]; then
+# passwd $1
+#fi