summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>1994-12-30 12:03:48 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>1994-12-30 12:03:48 +0000
commitff63c2c2571ef72e5500b7b1c5e9161f7a3cf7e3 (patch)
tree70e5166a77d95dfc2e9317d8509b07567b197fd0
parentcf59a8f1efc9a0f346b87b123845ec73cf992cf7 (diff)
downloadpw-darwin-ff63c2c2571ef72e5500b7b1c5e9161f7a3cf7e3.tar.gz
pw-darwin-ff63c2c2571ef72e5500b7b1c5e9161f7a3cf7e3.tar.zst
pw-darwin-ff63c2c2571ef72e5500b7b1c5e9161f7a3cf7e3.zip
Yet one cleanup
-rw-r--r--adduser/Makefile8
-rw-r--r--adduser/adduser.875
-rw-r--r--adduser/adduser.sh195
3 files changed, 272 insertions, 6 deletions
diff --git a/adduser/Makefile b/adduser/Makefile
index bd448af..da403a3 100644
--- a/adduser/Makefile
+++ b/adduser/Makefile
@@ -1,11 +1,7 @@
-# TODO:
-# rename adduser adduser.sh
-# rename adduser.1 adduser.8
-
-MAN1= adduser.1
+MAN8= adduser.8
beforeinstall:
install -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
- ${.CURDIR}/adduser ${DESTDIR}${BINDIR}/adduser
+ ${.CURDIR}/adduser.sh ${DESTDIR}${BINDIR}/adduser
.include <bsd.prog.mk>
diff --git a/adduser/adduser.8 b/adduser/adduser.8
new file mode 100644
index 0000000..610c3d1
--- /dev/null
+++ b/adduser/adduser.8
@@ -0,0 +1,75 @@
+
+.\" Copyright (c) 1994 GB Data Systems
+.\" All rights reserved.
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. The name of the Author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED BY GB DATA AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL GB DATA OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+
+.\" $Id: adduser.1,v 1.3 1994/12/28 17:27:21 gclarkii Exp $
+
+.Dd December 28, 1994
+.Dt ADDUSER 1
+.Os FreeBSD
+
+.Sh NAME
+.Nm adduser
+
+.Sh SYNOPSIS
+.Nm
+
+.Sh DESCRIPTION
+.Nm
+is a Perl script for adding users under a BSD system. It has the ability to
+keep track of the current userid and increment this automaticly. It can
+also use a default group id.
+.Ss SETUP
+In the normal course of usage there is no setup needed. If you wish to use
+auto-increment mode, you must do two things.
+
+.Bl -enum -compact
+.It
+Change the variable in
+.Pa /etc/adduser.conf
+to allow for the auto-increment
+.It
+Change the file
+.Pa /etc/userids
+to show the current id number.
+.El
+
+To use the default group id, just change the variable in
+.Pa /etc/adduser.conf
+to reflect the group that you wish as a default.
+
+.Sh FILES
+.Pa /etc/adduser.conf
+.Pa /etc/userids
+.Pa /usr/share/skel/*
+
+.Sh SEE ALSO
+.Xr adduser 8
+.Xr perl 1
+
+.Sh HISTORY
+The adduser command appeared in FreeBSD 2.0C (12-94).
+
+
+
diff --git a/adduser/adduser.sh b/adduser/adduser.sh
new file mode 100644
index 0000000..58aac32
--- /dev/null
+++ b/adduser/adduser.sh
@@ -0,0 +1,195 @@
+#!/usr/bin/perl
+
+
+
+# Copyright (c) 1994 GB Data Systems
+# All rights reserved.
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the Author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+# THIS SOFTWARE IS PROVIDED BY GB DATA AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL GB DATA OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+#
+# $Id: adduser,v 1.4 1994/12/28 17:27:21 gclarkii Exp $
+#
+
+$configfile = "\/etc\/adduser.conf";
+
+if (-f $configfile) {
+ open (CONFIG, "$configfile");
+ while (<CONFIG>) {
+ eval "$_";
+ }
+}
+
+open (WHOAMI, "whoami|");
+
+while (<WHOAMI>) {
+$whoami = $_;
+}
+chop $whoami;
+
+if ($whoami ne "root") {
+system "clear";
+print "\n\nYou must be root to add an user\n\n";
+close WHOAMI;
+exit;
+}
+close WHOAMI;
+
+# Start getting information and print a banner
+
+print " Adduser\n";
+print " A system utility for adding users with defaults\n";
+print "\n\n";
+
+#
+# User ID
+#
+
+
+print "Please enter the login name of the user: ";
+chop ($userlogin = <STDIN>);
+
+
+sub subuid {
+$userid = "";
+print "Please enter the user id or hit enter for the next id: ";
+chop ($userid = <STDIN>);
+}
+
+while (!$userid) {
+&subuid;
+if (!$userid) {
+ if ($useautoids) {
+ open (USERID, "+<$userids");
+ chop ($xxuserid = <USERID>);
+ $userid = $xxuserid + 1;
+ close USERID;
+ open (USERID, "+>$userids");
+ print (USERID "$userid\n");
+ close USERID;
+ } else { &subuid; }
+}
+}
+
+#
+# Group ID
+#
+
+sub groupids {
+print "Please enter the group id or hit enter for the default id: ";
+chop ($groupid = <STDIN>);
+}
+
+&groupids;
+
+while (!$groupid) {
+ if ($defgroupid) {
+ if (!$groupid) {
+ $groupid = "$defgroupid";
+ } else { &groupids; }
+ } else { &groupids; }
+}
+
+#
+# User name
+#
+
+print "Please enter the user's name: ";
+chop ($username = <STDIN>);
+
+#
+# Home directory
+#
+
+print "Please enter the users home directory or hit enter for default: ";
+chop ($userdir = <STDIN>);
+
+if (!$userdir) {
+ $userdir = "$defusrdir\/$userlogin";
+ print "$userdir\n";
+}
+
+#
+# Login Shell
+#
+
+print "Please enter the users login shell or hit enter for default: ";
+chop ($usershell = <STDIN>);
+
+if (!$usershell) {
+ $usershell = "$userdefshell";
+ print "$usershell\n";
+}
+
+#
+# Create password file entry
+#
+
+print "Opening and locking passwd file in blocking mode.\n";
+open (PASS, '>>/etc/master.passwd');
+flock (PASS, 2) || die "Can't lock passwd file, must be in use!!\n";
+print (PASS "$userlogin::$userid:$groupid::0:0:$username,,,:$userdir:$usershell\n");
+print "Unlocking and closing password file\n";
+flock (PASS,8);
+close PASS;
+print "Re-indexing password databases\n";
+system 'pwd_mkdb -p /etc/master.passwd';
+system "passwd $userlogin";
+
+#
+# Create user directory
+#
+print "Creating user directory\n";
+if (! -e $defusrdir) {
+ system "mkdir -p $defusrdir\/$userdir";
+} else {
+ system "mkdir $userdir";
+}
+
+
+print "Copying user shell files\n";
+system "cp $skel_location\/dot.login $userdir\/\.login";
+system "cp $skel_location\/dot.profile $userdir\/\.profile";
+
+if ($usershell eq "\/bin\/csh" || $usershell eq "\/usr\/local\/bin\/tcsh")
+ {
+ system "cp $skel_location\/dot.cshrc $userdir\/.cshrc";
+ }
+system "chmod -R 664 $userdir";
+system "chown -R $userid.$groupid $userdir";
+
+
+
+#
+# Print out information used in creation of this account
+#
+print "\n\n";
+print "Information used to create this account follows.\n";
+print "\n";
+print "Login Name: $userlogin\n";
+print "UserId: $userid\n";
+print "GroupId: $groupid\n";
+print "UserName: $username\n";
+print "HomeDir: $userdir\n";
+print "Shell: $usershell\n";
+print "\nDONE\n\n";
+