FreeBSD Change User Password Shell Script

by Vivek Gite on May 31, 2009 · 6 comments

How do I change user password using a shell script under FreeBSD operating systems?

You need to use the -h fd option for pw command. It provides a special interface by which interactive scripts can set an account password using pw. Because the command line and environment are fundamentally insecure mechanisms by which programs can accept information, pw will only allow setting of account and group passwords via a file descriptor (usually a pipe between an interactive script and the program). sh, bash, ksh and perl all possess mechanisms by which this can be done. Linux / UNIX should able to use passwd command or perl script to do the same.

Task: Add User And Set A Password

Add a new user called vivek with password called topSecrete:
# echo PASSWORD | pw add user USERNAME -h 0
# echo topSecrete | pw add user vivek -h 0

Task: Modify Existing User Password

Change the password for a user called chitra
# echo newPassword | pw mod user chitra -h 0

A Sample Shell Script To Change User Password

#!/bin/sh
PW=/usr/sbin/pw
SHELL=/bin/csh
echo "*** ADD NEW USER SHELL SCRIPT ***"
echo -n "Username : "
read user
echo "Password : "
read -n passwd
echo ${passwd} | ${PW} add user ${user} -m -s ${SHELL} -h 0 >/dev/null 2>&1
if [ $? -eq 0 ]
then
	echo "User added to the system."
else
	echo "Failed to add user to the system."
fi

Featured Articles:

Share this with other sys admins!
Facebook it - Tweet it - Print it -

{ 6 comments… read them below or add one }

1 Aneesh Kumar. E.P June 1, 2009

Hi all,

How can i achieve the same thing in centos system. When I tried i couldn’t find the pw in my system. I have to download the rpm but i failed to find a rpm for pw command. Please help me

Reply

2 Shoaibi June 1, 2009

hmmm…. spell mistake at line 13:
“Add a bew user” => “Add a new user”

Reply

3 Vivek Gite June 1, 2009

@Aneesh See this post

@Shoaibi: thanks for the heads-up!

Reply

4 chr15 June 1, 2009

Aneesh Kumar. E.P,

you should try something like this:

useradd -m -d /home/$USER -s $SHELL $USER >/dev/null 2>&1
echo -n $PASSWORD | passwd –stdin $USER

Reply

5 Aneesh Kumar. E.P June 2, 2009

Thank you for valuable help. i have solved my problem.

Thank you all

Reply

6 syed July 25, 2009

solved you problem.

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 3 + 8 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.




Previous post:

Next post: