06-07-2009
Amen to cfajohnson, he is absolutely correct. Still, there are some additional points to a script creating users I'd like to stress:
1) Your script has several prerequisites which should be tested. You test for the script being run as as root and quite correctly so. Still there should be tested a lot of more conditions: is your file readable, is it in the expected format (how does your script behave if a line looks "user @host" instead of "user@host"? What will happen if the host specified doesn't exist?), etc.. Robust scripting always takes into account the probable typo and other typical errors.
1a) Corollary: most of these tests are very generic and could be done in (external) functions, for instance the test if it is run under root privileges. Presumably you have a lot of other scripts also depending on being run under root. Why don't you write a function "Being_Root()", which just tests this condition and gives back TRUE or FALSE. Accordingly with some other necessary prerequisites.
2) In your script no effort is undertaken to find (and correct) error conditions. Suppose you let your script run and one of the user accounts does already exist. How does your script react in this case? Terminate? Write a log entry? Issue an error message on the screen? How should your script deal with such a problem?
3) Your script gives back no return value. This way it will not be possible to include it into future scripts, because you don't get back any information if the run was successful or not. Well-behaved programs return an error code upon termination (usually: 0=ok, 1-255 several error conditions, like: input file missing, prerequisites not met, user already existing, ... )
I hope this helps.
bakunin
9 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I have a txt file with many users and I need to add them and create random passwords. Does any one have a script in pearl possible? (3 Replies)
Discussion started by: macdonto
3 Replies
2. Shell Programming and Scripting
Here's my box info:
ROOT@fcivra: uname -a
SunOS fcivra 5.6 Generic_105181-26 sun4m sparc SUNW,SPARCstation-5
I am creating a script called adduser, that will incorporate the useradd command. Here is what it looks like:
#!/bin/sh
echo "Enter the person's VZID (lower case): \c"
read VZID... (2 Replies)
Discussion started by: cdunavent
2 Replies
3. Shell Programming and Scripting
Gurus,
I need to add a user to all the machines. I need a script to do this. I did one but it does not allow me to su to root within a ssh session i open. It exists saying su: Sorry. Please let me know how i can do it. I do not have the freedom of using sudo either.
Regards (4 Replies)
Discussion started by: earlysame55
4 Replies
4. UNIX for Advanced & Expert Users
Hi Experts,
when using useradd command, what are the necessary options/arguments to be included?
Please advice. (4 Replies)
Discussion started by: etcpasswd
4 Replies
5. Shell Programming and Scripting
i'm new to scripting in unix and am trying to make a script to add a user and an encrypted password for them. this is what i have and it isn't giving me any errors, but when i try to login with the new user, the password doesn't work. i'm hoping someone can point me in the right direction
... (1 Reply)
Discussion started by: patt4179
1 Replies
6. Solaris
if useradd command is deleted in solaris how do we add user (3 Replies)
Discussion started by: vivek_ng
3 Replies
7. Shell Programming and Scripting
Hello guys,
I am trying to add users to samba/ldap system, set their quota, set them a common password and add auto_home records for the new users
User list file is in below format
Firstname Lastname Username
Command I run to add user is
smbldap-useradd -a -m -N $Firstname -S... (0 Replies)
Discussion started by: upengan78
0 Replies
8. Solaris
I want to creat a 27 logins in solaris.Can anyone tell me how to write a script for that so that i create at a time for all 27 people.
Thanks to guide me. (6 Replies)
Discussion started by: kkalyan
6 Replies
9. Shell Programming and Scripting
Trying to create a bash script that will read the /etc/passwd file for existing UID's before adding a new user and also does an incremental by allocating the next available UID.And also add the user to the correct group.Please help I am a newbie in scripting. (2 Replies)
Discussion started by: tshepang
2 Replies
SETUID(1) General Commands Manual SETUID(1)
NAME
setuid - run a command with a different uid.
SYNOPSIS
setuid username|uid command [ args ]
DESCRIPTION
Setuid changes user id, then executes the specified command. Unlike some versions of su(1), this program doesn't ever ask for a password
when executed with effective uid=root. This program doesn't change the environment; it only changes the uid and then uses execvp() to find
the command in the path, and execute it. (If the command is a script, execvp() passes the command name to /bin/sh for processing.)
For example,
setuid some_user $SHELL
can be used to start a shell running as another user.
Setuid is useful inside scripts that are being run by a setuid-root user -- such as a script invoked with super, so that the script can
execute some commands using the uid of the original user, instead of root. This allows unsafe commands (such as editors and pagers) to be
used in a non-root mode inside a super script. For example, an operator with permission to modify a certain protected_file could use a
super command that simply does:
cp protected_file temp_file
setuid $ORIG_USER ${EDITOR:-/bin/vi} temp_file
cp temp_file protected_file
(Note: don't use this example directly. If the temp_file can somehow be replaced by another user, as might be the case if it's kept in a
temporary directory, there will be a race condition in the time between editing the temporary file and copying it back to the protected
file.)
AUTHOR
Will Deich
local SETUID(1)