system wide password change


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting system wide password change
# 1  
Old 02-06-2006
Question system wide password change

Hello,

I am new to shell scripting and I was trying to write a script that would force a system wide password change except for admins. I am having some trouble and any help that someone could give me would be greatly appreciated. I am trying to do it by using the UID as the marker for anyone but admins. Here is what I have so far. Thank you.

#!/bin/ksh
typeset=i
awk -F: '{print $3}' /etc/passwd > /tmp/userlist
for i in `cat /tmp/userlist`
do
if (( $i > 100 )); then continue; fi
passwd -f $i
done
rm -f /tmp/userlist
# 2  
Old 02-06-2006
Code:
 #! /usr/bin/ksh
exec < /etc/passwd
while IFS=":" read name epass uid gid gcos uhome ushell ; do
          ((100 < uid && uid < 60000)) && echo passwd -f $name
done
exit 0

Leave that echo in as you run it the first time to be sure it is right.
# 3  
Old 02-07-2006
Thanks

Perderabo,

Thank you for your reply. I wanted to know if I was on the right track in my other script, if so, where was I going wrong and why did you decide to do it the way that you did. I am just learning and any information would be great. Thanks again!

kilemark
# 4  
Old 02-07-2006
You had several errors. You were working only with a lists of uid's. You cannot use uid with the passwd command like that as far as I know. The man page clearly states that it wants a user name, not a uid. "typeset=i" is probably an error, but I really don't know what that is supposed to be doing. You don't say what os you are using, but it looks like SunOS. If so you probably have some system uid's above 60k that should be left alone. It is mostly personal preference, but with a powerful shell like ksh, I don't like using cat to read a file nor awk to select a field. External programs like that do consume some resources. Here it wouldn't matter much, but in some scripts, it can save hours of time.
# 5  
Old 02-07-2006
Perderabo,

Well, I guess I have a long way to go Smilie I have a decent understanding of the script but would you mind breaking it down a little? For example why the use of the exec command. Thank you for your time.
# 6  
Old 02-07-2006
I had a typo which I fixed. It shoulda been 60000. Not too much to this script. The exec sets the script's stdin to /etc/passwd. The "while read" loop just reads the passwd file. The fields are separated by a : and the IFS variable tells "read" statement that. Then if the uid looks good, it issues the command.
# 7  
Old 02-07-2006
Bug

Thanks for the help.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

System-wide search

When looking for wherever a program or a filename appears in the system, a short scrip is "findinner" which another script calls with a long parameter list consisting of path names ending with ".sh" or ".menu". "findinner" looks like this: # If not .savenn file, show name and result of grep. #... (4 Replies)
Discussion started by: wbport
4 Replies

2. Red Hat

Changing system-wide for umask

Hi everybody, How can I change the default UMASK for non root users, e.g. I want the umask for every new created user will be 0044. Thanks (6 Replies)
Discussion started by: leo_ultra_leo
6 Replies

3. UNIX for Dummies Questions & Answers

[GPG] System-wide public key?

We need to have many of our users all send encrypted files to a single FTP server. The problem, if I understand how encryption/decryption works (which I don't), is that each user would normally have their own private and public key. The other end needs to be able to decrypt the file(s) using a... (6 Replies)
Discussion started by: Totengraber
6 Replies

4. UNIX for Advanced & Expert Users

Declaring LD_PRELOAD system wide for dynamic loading

Dear Fellows; As being new to linux, i have tried to synamically load a custom library which overrides some system calls like conncet(), socket() etc.... for custom purposes. It works well, if declaring the environment path LD_PRELOAD and execution of the application to be override... (0 Replies)
Discussion started by: mzeeshan
0 Replies

5. Linux

System wide find and sort

Hi, I need to look for a config file (ldap.conf) and pick the latest modified file. `locate` tells me there are many ldap.conf's, some in /etc, /usr, /home, etc. Is there some way I can sort them by last modified time via bash? I was thinking maybe I could pipe the output of `locate` to `ls... (4 Replies)
Discussion started by: Housni
4 Replies

6. HP-UX

System wide user thread limit. does that exists :?

Hi all, Is there any system wide limit on number of user threads. I only find nkthread as a tunable parameter,apart from the `per process limit`. (1 Reply)
Discussion started by: Krsh
1 Replies

7. UNIX for Dummies Questions & Answers

Server wide password enforcement rules? 90 day force change.

Using Solaris 9 and 10. What we want to do is set up global rules for our password files to restrict all users, not only new ones set up with the rules but also the ones that have been sitting on the system for years. Is there a global way to force all users to change their password every 90... (1 Reply)
Discussion started by: LordJezo
1 Replies

8. UNIX for Dummies Questions & Answers

FIND function - system wide

Hi, I have a task to search for a file called 'Xstartup' in the whole system because there might be different versions of it which overrite eachother. Can anyone suggest a smart command to run this search ? The machine needs to scan every single folder beginning from root. Please help, I am... (5 Replies)
Discussion started by: DGoubine
5 Replies

9. UNIX for Advanced & Expert Users

System wide CDE setup

Does anyone know how to make system wide changes to the CDE's front panel icons? I dont know if it matters but im running Solaris 9. THanks (1 Reply)
Discussion started by: meyersp
1 Replies

10. UNIX for Dummies Questions & Answers

links working system wide

I have created symbolic links to several frequently used commands, for example: "lt" is a link to "ls -ltrgo|tail". What can I do to make these links available system-wide, or at least in the directories my coworkers are in most of the time? I have copied the link to several directories, and... (6 Replies)
Discussion started by: jpprial
6 Replies
Login or Register to Ask a Question