From ff63c2c2571ef72e5500b7b1c5e9161f7a3cf7e3 Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Fri, 30 Dec 1994 12:03:48 +0000 Subject: Yet one cleanup --- adduser/adduser.sh | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 adduser/adduser.sh (limited to 'adduser/adduser.sh') 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 () { + eval "$_"; + } +} + +open (WHOAMI, "whoami|"); + +while () { +$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 = ); + + +sub subuid { +$userid = ""; +print "Please enter the user id or hit enter for the next id: "; +chop ($userid = ); +} + +while (!$userid) { +&subuid; +if (!$userid) { + if ($useautoids) { + open (USERID, "+<$userids"); + chop ($xxuserid = ); + $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 = ); +} + +&groupids; + +while (!$groupid) { + if ($defgroupid) { + if (!$groupid) { + $groupid = "$defgroupid"; + } else { &groupids; } + } else { &groupids; } +} + +# +# User name +# + +print "Please enter the user's name: "; +chop ($username = ); + +# +# Home directory +# + +print "Please enter the users home directory or hit enter for default: "; +chop ($userdir = ); + +if (!$userdir) { + $userdir = "$defusrdir\/$userlogin"; + print "$userdir\n"; +} + +# +# Login Shell +# + +print "Please enter the users login shell or hit enter for default: "; +chop ($usershell = ); + +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"; + -- cgit v1.2.3-56-ge451