The FreeBSD Diary

The FreeBSD Diary (TM)

Providing practical examples since 1998

If you buy from Amazon USA, please support us by using this link.
[ HOME | TOPICS | INDEX | WEB RESOURCES | BOOKS | CONTRIBUTE | SEARCH | FEEDBACK | FAQ | FORUMS ]
Changing the shell for existing users and new users 11 August 2000
Need more help on this topic? Click here
This article has 4 comments
Show me similar articles
Sometimes you just want a change.  Sometimes you want that change to be permanent.  And you don't want to have to make that change again.
Changing the shell for all existing users
icmpecho gave us this script.  To change the shell to bash for all existing users do this as root :
cd /usr/home && for i in *;do chsh -s bash $i;done
Changing the shell for all future users
When you add a new user, the default shell is taken from /etc/adduser.conf.   On a new box, this file doesn't exist until you run adduser once.   So I ran adduser.  Note that I could have specified a different bash shell.   See the bold line below.  Instead, I chose to modify /etc/adduser.conf manually.  See below for those steps.
# adduser
/etc/adduser.conf: No such file or directory
Use option ``-silent'' if you don't want to see all warnings and 
                                                      questions.

Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: bash csh date no sh tcsh [sh]: 
Your default shell is: sh -> /bin/sh
Enter your default HOME partition: [/home]: 
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: 
Send message from file: /etc/adduser.message no 
[/etc/adduser.message]: 
Create ``/etc/adduser.message''? (y/n) [y]: 
Use passwords (y/n) [y]: 

Write your configuration to /etc/adduser.conf? (y/n) [y]: 

Ok, let's go.
Don't worry about mistakes. I will give you the chance later to 
                                              correct any input.
Enter username [a-z0-9_-]: deleteme
Enter full name []: deleteme
Enter shell bash csh date no sh tcsh [sh]: 
Enter home directory (full path) [/home/deleteme]: 
Uid [1002]: 
Enter login class: default []: 
Login group deleteme [deleteme]: 
Login group is ``deleteme''. Invite deleteme into other groups: 
                                                       guest no 
[no]: 
Enter password []: 
Use an empty password? (y/n) [y]: 

Name:     deleteme
Password: ****
Fullname: deleteme
Uid:      1002
Gid:      1002 (deleteme)
Class:    
Groups:   deleteme 
HOME:     /home/deleteme
Shell:    /bin/sh
OK? (y/n) [y]: 
Added user ``deleteme''
Send message to ``deleteme'' and: no root second_mail_address 
[no]: 

deleteme,

your account ``deleteme'' was created.
Have fun!

See also chpass(1), finger(1), passwd(1)

Add anything to default message (y/n) [n]: 
Send message (y/n) [y]: 
Copy files from /usr/share/skel to /home/deleteme
Add another user? (y/n) [y]: n
Goodbye!

Then I changed the default shell entry in /etc/adduser.conf:

# defaultshell if not empty ("bash")
defaultshell = "bash"

The next time you run adduser, you'll find this:

# adduser deleteme2
Use option ``-silent'' if you don't want to see all warnings and 
                                                       questions.

Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: bash csh date no sh tcsh [bash]: ^C
[root@set:~] # 

See?  The default shell is now bash

Then I went back to delete the user I added above:

[root@set:~] # rmuser deleteme
Matching password entry:

deleteme::1002:1002::0:0:deleteme:/home/deleteme:/bin/sh

Is this the entry you wish to remove? yes
Remove user's home directory (/home/deleteme)? yes
Updating password file, updating databases, done.
Updating group file: (removing group deleteme -- personal group is 
                                                        empty) done.
Removing user's home directory (/home/deleteme): done.
Removing user's incoming mail file /var/mail/deleteme: done.
Removing files belonging to deleteme from /tmp: done.
Removing files belonging to deleteme from /var/tmp: done.
Removing files belonging to deleteme from /var/tmp/vi.recover: done.

Need more help on this topic? Click here
This article has 4 comments
Show me similar articles