diff options
author | Gary Clark II <gclarkii@FreeBSD.org> | 1994-12-28 06:55:42 +0000 |
---|---|---|
committer | Gary Clark II <gclarkii@FreeBSD.org> | 1994-12-28 06:55:42 +0000 |
commit | 39a1ab0d7cf23c0c3414d479839b391e42b7046f (patch) | |
tree | d59cff41a7be76c1a288b023566c1a6e25d9621e /adduser | |
parent | 75947cd8f494f5b24293848ce4b02319ee0a4daf (diff) | |
download | pw-darwin-39a1ab0d7cf23c0c3414d479839b391e42b7046f.tar.gz pw-darwin-39a1ab0d7cf23c0c3414d479839b391e42b7046f.tar.zst pw-darwin-39a1ab0d7cf23c0c3414d479839b391e42b7046f.zip |
Adding my adduser command. I only have to add a makefile for it to
be compleate.
Diffstat (limited to 'adduser')
-rw-r--r-- | adduser/adduser | 190 | ||||
-rw-r--r-- | adduser/adduser.1 | 73 | ||||
-rw-r--r-- | adduser/adduser.conf | 11 | ||||
-rw-r--r-- | adduser/userids | 1 |
4 files changed, 275 insertions, 0 deletions
diff --git a/adduser/adduser b/adduser/adduser new file mode 100644 index 0000000..6eb2701 --- /dev/null +++ b/adduser/adduser @@ -0,0 +1,190 @@ +#!/usr/bin/perl + +# Copyright (c) 1994 BSD Journal Publications +# 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. + +#$configfile = "\/etc\/adduser.conf"; +$configfile = "\.\/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"; + diff --git a/adduser/adduser.1 b/adduser/adduser.1 new file mode 100644 index 0000000..1cf9ca9 --- /dev/null +++ b/adduser/adduser.1 @@ -0,0 +1,73 @@ + +.\" Copyright (c) 1994 BSD Journal Publications +.\" 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. + +.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.conf b/adduser/adduser.conf new file mode 100644 index 0000000..59d84d2 --- /dev/null +++ b/adduser/adduser.conf @@ -0,0 +1,11 @@ +# +# Configuration file for adduser (1) +# + +$useautoids = "1"; # Define this if you wish to use auto-increment +$defgroupid = "20"; # Default ID +$defusrdir = "\/usr\/u"; # Default User Dir +$userdefshell = "\/bin\/csh"; # Default user shell +$skel_location = "\/usr\/share\/skel"; # Location of shell skeletons +$userids = "\.\/userids"; # Location of 'userids' file + diff --git a/adduser/userids b/adduser/userids new file mode 100644 index 0000000..3cda32f --- /dev/null +++ b/adduser/userids @@ -0,0 +1 @@ +515 |