aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/adduser/adduser.perl
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>1994-12-30 12:13:08 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>1994-12-30 12:13:08 +0000
commite3763702e6a3beed76f337b568c06ae6eba21be4 (patch)
tree6b1bf3414401771b69d791e89bcdc7a7e4684033 /usr.sbin/adduser/adduser.perl
parent4298bedc38c74c6e36ab02055d7d1bf130e21731 (diff)
downloadsrc-e3763702e6a3beed76f337b568c06ae6eba21be4.tar.gz
src-e3763702e6a3beed76f337b568c06ae6eba21be4.zip
Oops, rename adduser.sh to adduser.perl
Add empty clean and obj targets.
Notes
Notes: svn path=/head/; revision=5286
Diffstat (limited to 'usr.sbin/adduser/adduser.perl')
-rw-r--r--usr.sbin/adduser/adduser.perl195
1 files changed, 195 insertions, 0 deletions
diff --git a/usr.sbin/adduser/adduser.perl b/usr.sbin/adduser/adduser.perl
new file mode 100644
index 000000000000..6a7dc95f73b7
--- /dev/null
+++ b/usr.sbin/adduser/adduser.perl
@@ -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.sh,v 1.1 1994/12/30 12:03:48 ache 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";
+