#!/bin/bash vsdir=/etc/vsftpd guestuser=ftp vspid=`ps -ef |grep vsftpd|grep vsftpd.conf |grep -v "grep"|wc -l` if [ ! -f /usr/bin/lsb_release ];then yum install -y redhat-lsb-core >> /dev/null 2>&1 if [ $? -ne 0 ];then echo "yum无法使用,请检查网络配置或yum源" exit 1 fi fi function install_mes() { if (( $vspid >= "1" ));then echo "已有vsftpd进程在运行,安装退出" exit 0 else echo "即将安装vsfptd" read -p "输入ftp用户名(使用系统用户名将无法登陆): " username read -p "输入ftp密码: " password read -p "输入ftp端口(默认21): " port read -p "输入ftp目录(默认/data/FTP): " FTP echo "vsftpd 安装中..." yum -y install db4-utils vsftpd >> /dev/null 2>&1 if [ $? -eq 0 ];then echo "vsftpd安装完成" else echo "vsftpd安装失败,脚本停止!!!" exit 1 fi fi } function adduser_mes() { authfile=/etc/vsftpd/user.txt guestuser=$(cat /etc/vsftpd/vsftpd.conf|grep guest_username|awk -F"=" '{print $2}') if [ ! -f $authfile ];then echo "未找到用户密码文件,请手动添加,操作退出..." exit 1 fi echo "即将添加vsftpd虚拟用户..." read -p "ftp用户: " username read -p "ftp密码: " password read -p "ftp目录(默认 /data/FTP): " FTP } function config() { vsdir=/etc/vsftpd cd $vsdir cp vsftpd.conf vsftpd.conf.bak sed -i "s/anonymous_enable=.*$/anonymous_enable=NO/g" /etc/vsftpd/vsftpd.conf sed -i "/connect_from_port_20=YES/ a \listen_port=21" /etc/vsftpd/vsftpd.conf sed -i "s/^.*chroot_local_user=.*$/chroot_local_user=YES/g" /etc/vsftpd/vsftpd.conf sed -i "s/^.*chroot_list_enable=.*$/chroot_list_enable=NO/g" /etc/vsftpd/vsftpd.conf sed -i "s:^.*xferlog_file=.*$:xferlog_file=/var/log/vsftpd.log:g" /etc/vsftpd/vsftpd.conf sed -i "/^.*listen_ipv6=.*$/ a \guest_enable=YES" /etc/vsftpd/vsftpd.conf sed -i "/^.*guest_enable=YES.*$/ a \guest_username=ftp" /etc/vsftpd/vsftpd.conf sed -i "/^.*guest_username=ftp.*$/ a \user_config_dir=/etc/vsftpd/conf.d" /etc/vsftpd/vsftpd.conf echo -e """\npasv_enable=YES\npasv_min_port=50000\npasv_max_port=50100" >> /etc/vsftpd/vsftpd.conf echo "reverse_lookup_enable=NO" >> /etc/vsftpd/vsftpd.conf sysver=$(lsb_release -a |grep Release|awk '{print $2}'|awk -F"." '{print $1}') if (( "$sysver" == "7" ));then echo -e """\nallow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf fi if [ -n "$port" ];then sed -i "s/listen_port=21/listen_port=${port}/g" /etc/vsftpd/vsftpd.conf else port=21 fi mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak cat > /etc/pam.d/vsftpd << END auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user END } function adduser() { vsdir=/etc/vsftpd function up_down() { cat << END local_root= write_enable=YES download_enable=Yes local_umask=022 anonymous_enable=NO anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES END } if [ ! -d ${vsdir}/conf.d ];then mkdir $vsdir/conf.d fi cd $vsdir/conf.d touch $username up_down >> $username if [ -n "$FTP" ];then echo "创建FTP目录: $FTP" if [ -d "$FTP" ];then echo "目录已存在" chown $guestuser.$guestuser $FTP -R else mkdir -p $FTP >> /dev/null 2>&1 chown $guestuser.$guestuser $FTP -R echo "创建成功" fi sed -i "s:local_root=.*$:local_root=$FTP:g" ${vsdir}/conf.d/${username} else FTP=/data/FTP echo "创建FTP目录: $FTP" if [ -d "$FTP" ];then echo "目录已存在" chown $guestuser.$guestuser $FTP -R else mkdir -p $FTP >> /dev/null 2>&1 chown $guestuser.$guestuser $FTP -R echo "创建成功" fi sed -i "s:local_root=.*$:local_root=/data/FTP:g" ${vsdir}/conf.d/${username} fi cat > $vsdir/user.txt <<END $username $password END db_load -T -t hash -f $vsdir/user.txt $vsdir/user.db } function start_vsftpd () { echo "启动Vsftpd" #/etc/init.d/vsftpd restart service vsftpd restart if [ $? -eq 0 ];then echo -e "\033[32m vsftpd 启动成功 \033[0m" echo -e "\033[31m 账号: $username \033[0m" echo -e "\033[31m 密码: $password \033[0m" echo -e "\033[31m 端口: $(grep -e "listen_port=.*$" /etc/vsftpd/vsftpd.conf|awk -F"=" '{print $2}') \033[0m" echo -e "\033[31m 目录: $FTP \033[0m" echo -e "\033[31m 如无法登录,请检查防火墙和SElinux配置 \033[0m" else echo "vsftpd 启动失败,请手动检查配置" fi } if [ "$1" == "adduser" ];then adduser_mes adduser start_vsftpd else install_mes config adduser start_vsftpd fi
vsftpd自动安装-虚拟用户模式
猜你喜欢
转载自blog.csdn.net/wangshui898/article/details/80289561
今日推荐
周排行