Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jan 2002 14:14:33 -0500
From:      "Joe & Fhe Barbish" <barbish@a1poweruser.com>
To:        "Bob Giesen" <BobGiesen@earthlink.net>
Cc:        "FBSD Questions" <questions@FreeBSD.ORG>
Subject:   RE: pw in script to create new user.
Message-ID:  <LPBBIGIAAKKEOEJOLEGOGEGCCNAA.barbish@a1poweruser.com>
In-Reply-To: <004b01c1a30b$5fcb20c0$328dfea9@pegasus>

next in thread | previous in thread | raw e-mail | index | archive | help
To all who responded I want to say thanks for your input.
I have gotten my script to work.
Now for the archives I am summarizing how the pw command works.

When FBSD is installed the PW command does not have it's
pw.conf option file. Pw stills works but you have no idea what
the defaults are and the command line gets full using the pw flags.
The first thing you should do if you want to use the pw command to
add users is to create the pw.conf file, do this by
entering  pw -D  this will create the /etc/pw.conf file.
The comments in the file are self explanatory.
I added the default group and the additional groups.

pw -D  =  create /etc/pw.conf file
pw adduser tom -m -c tom brown = tom =userid -m = create home directory -c
full name field
pw deluser tom -r = delete user tom   -r = remove home directory
pw showuser tom  = display this users entry in password file
pw showuser tom -P = display password info in human readable form
pw showuser -a  = display all entries in password file

The pw command can also be used for groups
pw addgroup networking
pw showgroup networking

The pw command can also change settings in the userid password file.

My /etc/pw.conf looks like this

#
# /etc/pw.conf - user/group configuration defaults
# created 01/20/2002  by Joe Barbish

# Password for new users? no=nologin yes=loginid none=blank random=random
defaultpasswd = "yes"

# Reuse gaps in uid sequence? (yes or no)
reuseuids = "yes"

# Reuse gaps in gid sequence? (yes or no)
reusegids = "yes"

# Path to the NIS passwd file (blank or 'no' for none)
nispasswd =

# Obtain default dotfiles from this directory
skeleton = "/usr/share/skel/"

# Mail this file to new user (/etc/newuser.msg or no)
newmail = "no"

# Log add/change/remove information in this file
logfile = "/var/log/userlog"

# Root directory in which $HOME directory is created
home = "/home"

# Colon separated list of directories containing valid shells
shellpath = "/bin"

# Comma separated list of available shells (without paths)
shells = "sh","csh","tcsh"

# Default shell (without path)
defaultshell = "sh"

# Default group (leave blank for new group per user)
defaultgroup = "network"

# Extra groups for new users
extragroups = "wheel"

# Default login class for new users
defaultclass = ""

# Range of valid default user ids
minuid = 1000
maxuid = 32000

# Range of valid default group ids
mingid = 1000
maxgid = 32000

# Days after which account expires (0=disabled)
expire_days = 0

# Days after which password expires (0=disabled)
password_days = 0

######################################################
The script that the folks here helped me with.

#! /bin/sh

pw adduser tom -m -c testing -h 0 <<- EOD
        water
        EOD
# water is the password used for tom








-----Original Message-----
From: owner-freebsd-questions@FreeBSD.ORG
[mailto:owner-freebsd-questions@FreeBSD.ORG]On Behalf Of Bob Giesen
Sent: Tuesday, January 22, 2002 1:10 AM
To: Joe & Fhe Barbish; FBSD Questions
Subject: Re: pw in script to create new user.

----- Original Message -----
From: "Joe & Fhe Barbish" <barbish@a1poweruser.com>
To: "FBSD Questions" <questions@FreeBSD.ORG>
Sent: Monday, January 21, 2002 10:52 PM
Subject: pw in script to create new user.


> I have sh script with this in it
> Pw adduser tom -m -c bkup manager -o
> The /etc/pw.conf has all the defaults, one is to
> make the password the same as the userid.
> The -o option will take input from keyboard for the
> Password but this is a canned script so I need to
> Some how pass the password value to the pw command -0 option.
>
> How can I configure the script to hold the password value
> for that userid so when the pw adduser command is executed
> the correct password gets used in creating the user?

   Three thoughts:
1) Does pw offer no other way of providing the password, other than via
stdin (keyboard)?
2) Putting unencrypted passwords into a text file (such as your script) does
present something of a security risk.
3) If the answer to (1) is no and (2) doesn't faze you, you can redirect
stdin within the script.  I am not familiar with pw (perhaps because I'm
running v3.2), so I'll expand on your example command for adding tom:

Pw adduser tom -m -c bkup manager -h 0 << EOF
tomspassword
EOF

   The first line's "<< EOF" tells sh to take the expected stdin input from
the following lines, up to the first line that BEGINS with "EOF."  So, just
put tom's password on the following line and then EOF on the very next line.
   Two points worth mentioning:
1) My choice of "EOF" was arbitrary.  You may use EOP, EOI, XYZ, SILLY, or
whatever you like, so long as you use exactly the same string to signal the
end of input redirection.
2) EOF (or EOP, SILLY, or whatever you use) MUST BEGIN the line to signal
the end of redirection.  Any space (or other character) before the ending
EOF will mess up your script (which, since you're operating as root, has the
potential to make things interesting, to say the least).  (Exception: you
may precede the finishing string (EOF, or whatever) with a tab IF YOU USE
"<<-" instead of "<<" for the redirection on the first line.  E.g.:

Pw adduser tom -m -c bkup manager -h 0 <<- EOF
    tomspassword
    EOF

   My mail client turned the tabs to spaces; there should be tabs before
"tomspassword" and the final "EOF" here.  Sometimes, the <<- & tab
functionality helps to make a more readable script.
   Hope this helps...
- Bob



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?LPBBIGIAAKKEOEJOLEGOGEGCCNAA.barbish>