Following on from my recent upload on Linux scripting, I have yet again created a BASH script to make my Linux’ing life easier. This is also my second script created in BASH so I guess i’ve accomplished something by not running for the hills…
What I needed was a script to make creating FTP users easier on my CentOS box. Below is a list of things I needed the script to accomplish:
- Get a username from a user prompt
- Get a Description from a user prompt
- Create the new user
- Change the users password
- Add the username to /etc/vsftpd.userlist
- Add the username to /etc/vsftpd/chroot_list
- Make a directory in the home folder of the user called “ftp”
- Change the permissions and ownership on this directory
- Make a directory in the “ftp” folder called “files”
- Change the permissions and ownership on this directory
- Ask the user to create a share or not
- Get a share name from user prompt
- Make a directory in the users “files” folder with the same name as the share name
- Mount the share to the “files” directory
- Ask if the new user is the owner of the share
- if so then change the ownershipa and permissions on the share
- if not then just change the permissions on the share
- Finish
Here is my script for achieving these goals:
#!/bin/bash #Creating new FTP users ##Gathering Variables echo "Enter a username" read Username echo "Enter a description" read Description useradd -m -c "$Description" -s /bin/bash $Username passwd $Username echo "$Username" | tee -a /etc/vsftpd.userlist echo "$Username" | tee -a /etc/vsftpd/chroot_list mkdir /home/$Username/ftp chown nobody:nobody /home/$Username/ftp chmod a-w /home/$Username/ftp mkdir /home/$Username/ftp/files chown $Username:$Username /home/$Username/ftp/files chmod 0700 /home/$Username/ftp/files read -p "Create a share? [yn]: " CreateShare if [[ $CreateShare = y ]] ; then read -p "Enter a share name: " ShareName mkdir /home/$Username/ftp/files/$ShareName mkdir /home/shares/$ShareName mount --bind /home/shares/$ShareName /home/$Username/ftp/files/$ShareName elif [[ $CreateShare = n ]] ; then read -p "Enter the pre-existing share name: " ShareName mkdir /home/$Username/ftp/files/$ShareName if [ -d /home/shares/$ShareName ] ; then echo "Mounting share" mount --bind /home/shares/$ShareName /home/$Username/ftp/files/$ShareName else echo "Cannot find the share name : $ShareName" fi else echo "Not a y or n" fi read -p "Is $Username the owner of this share? [yn]: " ShareOwner if [[ $ShareOwner = y ]] ; then chown $Username:$Username /home/shares/$ShareName chmod 0775 /home/shares/$ShareName else echo "$Username is not the owner of $ShareName" chmod 0775 /home/shares/$ShareName fi echo "Finished creating user : $Username" * Insert your code here
Hopefully somebody gains something from this, probably not though. Enjoy!