Q I have been running CentOS since version 3 in the school where I work. I have input 500 pupils into the system one by one. I have set up a domain logon with Samba. Is there any way to bulk input so many user accounts in one go?
A Of course, there is, this is one of the areas in which textual command line tools excel, in being able to use data from one file or program in another. Are you trying to create system users or Samba users, or both? Use the useradd command to create system users and smbpasswd to create Samba users. Both of these commands can be used in a script to read a list of user names from a file. Put your new user names in a file called newusers, one per line, like this
username1 password1 real name1 username2 password2 real name 2 ...
You can create this file manually or extract the information from another source, such as using sed or awk on an existing file or running an SQL query to pull the information from your pupil database. Then run this to add them as system users.
cat newusers | while read u p n do useradd --comment "$n" --password $(pwcrypt $p) --create-home $u done
You may need to install pwcrypt before you can do this, it is a command line interface to the system crypt() function. You could use the crypt command from the older cli-crypt package, but pwcrypt is more up to date and considered a better option nowadays. If you want to force the user to change their password immediately, which is generally a good idea, add
passwd -e $u
after the useradd command. This expires their password, so they need to change it when they next login. To set the Samba passwords, use smbpasswd like this
echo -e "$p\n$p" | smbpasswd -as $u
The -s option tells smbpasswd to accept the password from standard input instead of prompting for it, the echo command is in that format because smbpasswd still requires the password to be given twice when used like this. So all you need to add the users to both the system and Samba is
cat newusers | while read u p n do useradd --comment "$n" --password $(pwcrypt $p) --create-home $u passwd -e $u echo -e "$p\n$p" | smbpasswd -as $u done
You must add the users to the system password file before trying to add them to Samba, or smbpasswd will complain. Similarly, when you delete users, run smbpasswd -x username before userdel username.