Loading... ``` #!/bin/bash #function for display color. function echo_color() { case $1 in green) echo -ne "\033[32;40m$2\033[0m" ;; red) echo -ne "\033[31;40m$2\033[0m" ;; redflicker) echo -ne "\033[1;5;41;33m$2\033[0m" ;; highlightbold) echo -ne "\033[1;41;33m$2\033[0m" ;; *) echo "Example: echo_color red string" ;; esac } #install vsftp function install(){ echo -n "" > ./vsftpError.log echo -n "installing vsftp.... " (yum -y install vsftpd) 1> /dev/null 2>> ./vsftpError.log (useradd -d /ftpdata -s /sbin/nologin superftp) 1> /dev/null 2>> ./vsftpError.log (chmod -R 755 /ftpdata) 1> /dev/null 2>> ./vsftpError.log (touch /etc/vsftpd/vuser.list) 1> /dev/null 2>> ./vsftpError.log (db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (chmod 600 /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (touch /etc/pam.d/vsftpd.vu) 1> /dev/null 2>> ./vsftpError.log (echo "auth required pam_userdb.so db=/etc/vsftpd/vuser" > /etc/pam.d/vsftpd.vu) 1> /dev/null 2>> ./vsftpError.log (echo "account required pam_userdb.so db=/etc/vsftpd/vuser" >> /etc/pam.d/vsftpd.vu) 1> /dev/null 2>> ./vsftpError.log (mkdir -p /etc/vsftpd/vuser_dir) 1> /dev/null 2>> ./vsftpError.log (cp -af /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak) 1> /dev/null 2>> ./vsftpError.log (echo "anonymous_enable=NO" > /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "local_enable=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "guest_enable=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "guest_username=superftp" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log if [ "${OSMainVersion}" = "6" ] then (echo "chroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log elif [ "${OSMainVersion}" = "7" ] then (echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log fi (echo "write_enable=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "local_umask=022" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "dirmessage_enable=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "xferlog_enable=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "connect_from_port_20=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "xferlog_std_format=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "listen=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "pam_service_name=vsftpd.vu" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "userlist_enable=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "tcp_wrappers=YES" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "user_config_dir=/etc/vsftpd/vuser_dir" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "anon_umask=022" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "pasv_max_port=21010" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log (echo "pasv_min_port=21001" >> /etc/vsftpd/vsftpd.conf) 1> /dev/null 2>> ./vsftpError.log if [ "${OSMainVersion}" = "6" ] then (chkconfig vsftpd on) 1> /dev/null 2>> /dev/null (service vsftpd start) 1> /dev/null 2>> ./vsftpError.log elif [ "${OSMainVersion}" = "7" ] then (systemctl enable vsftpd.service) 1> /dev/null 2>> /dev/null (systemctl start vsftpd.service) 1> /dev/null 2>> ./vsftpError.log fi if [ ! "$(cat ./vsftpError.log)" ] then echo -n "[" echo_color green "OK" echo "]" else echo -n "[" echo_color red "ERROR" echo "]" echo_color red "vsftp faild to install, you can check the log file ./vsftpError.log \n" fi } #uninstall vsftp function uninstall(){ echo -n "" > ./vsftpError.log echo -n "uninstalling vsftp packge.... " (mkdir -p /ftp_uninstall_backup) 1> /dev/null 2>> ./vsftpError.log (cp -af /ftpdata /ftp_uninstall_backup/ftpdata_$(date +%s)) 1> /dev/null 2>> ./vsftpError.log (yum -y install vsftpd) 1> /dev/null 2>> ./vsftpError.log (userdel -rf superftp) 1> /dev/null 2>> ./vsftpError.log if [ ! "$(cat ./vsftpError.log)" ] then echo -n "[" echo_color green "OK" echo "]" echo_color green "ftp files has been backuped to /ftp_uninstall_backup ! \n" else echo -n "[" echo_color red "ERROR" echo "]" echo_color red "vsftp faild to uninstall, you can check the log file ./vsftpError.log \n" fi } #adduser function addftpuser(){ read -p "set FTP username: " ftpUserName if [ -f "/etc/vsftpd/vuser.list" ] then ftpUserExsit=$(awk '{if(NR%2==1){print}}' /etc/vsftpd/vuser.list | sed -n "/\<${ftpUserName}\>/p") if [ ! "${ftpUserExsit}" ] then read -p "set FTP user ${ftpUserName}'s password: " ftpUserPWD echo -n "" > ./vsftpError.log echo -n "adding user.... " (echo "${ftpUserName}" >> /etc/vsftpd/vuser.list) 1> /dev/null 2>> ./vsftpError.log (echo "${ftpUserPWD}" >> /etc/vsftpd/vuser.list) 1> /dev/null 2>> ./vsftpError.log (rm -rf /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (chmod 600 /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (touch /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "guest_enable=YES" > /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "guest_username=superftp" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "local_root=/ftpdata/${ftpUserName}" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "write_enable=yes" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "pam_service_name=vsftpd.vu" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "anon_umask=022" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "anon_world_readable_only=YES" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "anon_upload_enable=YES" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "anon_mkdir_write_enable=YES" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (echo "anon_other_write_enable=YES" >> /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (mkdir -p /ftpdata/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log (chown superftp:superftp /ftpdata/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log if [ "${OSMainVersion}" = "6" ] then (service vsftpd restart) 1> /dev/null 2>> ./vsftpError.log elif [ "${OSMainVersion}" = "7" ] then (systemctl restart vsftpd.service) 1> /dev/null 2>> ./vsftpError.log fi if [ ! "$(cat ./vsftpError.log)" ] then echo -n "[" echo_color green "OK" echo "]" else echo -n "[" echo_color red "ERROR" echo "]" echo_color red "vsftp faild to add user, you can check the log file ./vsftpError.log \n" fi else echo_color red "user ${ftpUserName} is already exsit!\n" fi else echo_color red "user config file not exsit, please check!\n" fi } #delete user function deleteftpuser(){ read -p "input FTP username: " ftpUserName if [ -f "/etc/vsftpd/vuser.list" ] then ftpUserExsit=$(awk '{if(NR%2==1){print}}' /etc/vsftpd/vuser.list | sed -n "/\<${ftpUserName}\>/p") if [ "${ftpUserExsit}" ] then echo -n "" > ./vsftpError.log echo -n "deleting user.... " (sed -i "/\<${ftpUserName}\>/{n;d;}" /etc/vsftpd/vuser.list) 1> /dev/null 2>> ./vsftpError.log (sed -i "/\<${ftpUserName}\>/d" /etc/vsftpd/vuser.list) 1> /dev/null 2>> ./vsftpError.log (rm -rf /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (chmod 600 /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (mkdir -p /ftpdata/user_delete_backup) 1> /dev/null 2>> ./vsftpError.log (mv -f /ftpdata/${ftpUserName} /ftpdata/user_delete_backup/${ftpUserName}_$(date +%s)) 1> /dev/null 2>> ./vsftpError.log (rm -rf /etc/vsftpd/vuser_dir/${ftpUserName}) 1> /dev/null 2>> ./vsftpError.log if [ "${OSMainVersion}" = "6" ] then (service vsftpd restart) 1> /dev/null 2>> ./vsftpError.log elif [ "${OSMainVersion}" = "7" ] then (systemctl restart vsftpd.service) 1> /dev/null 2>> ./vsftpError.log fi if [ ! "$(cat ./vsftpError.log)" ] then echo -n "[" echo_color green "OK" echo "]" echo_color green "ftp files has been backuped to /ftpdata/user_delete_backup ! \n" else echo -n "[" echo_color red "ERROR" echo "]" echo_color red "vsftp faild to delete user, you can check the log file ./vsftpError.log \n" fi else echo_color red "user ${ftpUserName} is not exsit!\n" fi else echo_color red "user config file not exsit, please check!\n" fi } #change password function changepassword(){ read -p "input FTP username: " ftpUserName if [ -f "/etc/vsftpd/vuser.list" ] then ftpUserExsit=$(awk '{if(NR%2==1){print}}' /etc/vsftpd/vuser.list | sed -n "/\<${ftpUserName}\>/p") if [ "${ftpUserExsit}" ] then read -p "set FTP user ${ftpUserName}'s password: " ftpUserPWD echo -n "" > ./vsftpError.log echo -n "changing password.... " (sed -i "/\<${ftpUserName}\>/{n;d;}" /etc/vsftpd/vuser.list) 1> /dev/null 2>> ./vsftpError.log (sed -i "/\<${ftpUserName}\>/a${ftpUserPWD}" /etc/vsftpd/vuser.list) 1> /dev/null 2>> ./vsftpError.log (rm -rf /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log (chmod 600 /etc/vsftpd/vuser.db) 1> /dev/null 2>> ./vsftpError.log if [ "${OSMainVersion}" = "6" ] then (service vsftpd restart) 1> /dev/null 2>> ./vsftpError.log elif [ "${OSMainVersion}" = "7" ] then (systemctl restart vsftpd.service) 1> /dev/null 2>> ./vsftpError.log fi if [ ! "$(cat ./vsftpError.log)" ] then echo -n "[" echo_color green "OK" echo "]" else echo -n "[" echo_color red "ERROR" echo "]" echo_color red "vsftp faild to change password, you can check the log file ./vsftpError.log \n" fi else echo_color red "user ${ftpUserName} is not exsit!\n" fi else echo_color red "user config file not exsit, please check!\n" fi } #main function function main(){ inSelect=1 while [ "${inSelect}" = "1" ] do echo "=========================================" echo "================ vsftp ==================" echo "=========================================" echo "= 1. install vsftp =" echo "= 2. uninstall vsftp =" echo "= 3. add user =" echo "= 4. delete user =" echo "= 5. change password =" echo "= 0. exit =" echo "=========================================" read -n1 -p "please select:" select echo "" case ${select} in 1) install ;; 2) uninstall inSelect=0 ;; 3) addftpuser ;; 4) deleteftpuser ;; 5) changepassword ;; 0) exit 0 ;; *) echo "not find this item!" ;; esac done exit 0 } #global parameter,get OS main version OSMainVersion=$(cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/') if [ "${1}" ] then for parameter in ${*} do case ${parameter} in 1) install ;; 2) uninstall ;; 3) addftpuser ;; 4) deleteftpuser ;; 5) changepassword ;; 0) exit 0 ;; *) echo_color red "parameter ${parameter} invalid ! \n" ;; esac done else main fi ``` 最后修改:2021 年 11 月 02 日 05 : 28 PM © 允许规范转载 赞赏 要多恰饭才能长胖 赞赏作者 支付宝微信