Redhat7 搭建vsftpd(三种方式登录)

首先 安装vsftpd服务

[root@localhost ~]# yum -y install vsftpd
已加载插件:langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-9.el7 将被 安装
--> 解决依赖关系完成

…………
已安装:
  vsftpd.x86_64 0:3.0.2-9.el7                                             

完毕!

  1. 匿名登录
修改配置文件vim /etc/vsftpd/vsftpd.conf
#YES表示允许匿名登录
anonymous_enable=YES	
anon_umask=022
#允许写入文件
write_enable=YES
#允许上传文件
anon_upload_enable=YES
#允许创建文件
anon_mkdir_write_enable=YES
#不允许其他操作
anon_other_write_enable=NO  
  1. 本地用户登录
修改配置文件vim /etc/vsftpd/vsftpd.conf

#不允许匿名登录
anonymous_enable=NO
anon_umask=022
#允许本地用户登录
local_enable=YES
#允许写入
write_enable=YES
anon_upload_enable=NO
#本地用户模式创建文件的umask值
local_umask=022
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
userlist_deny=YES
userlist_enable=YES
pam_service_name=vsftpd
  1. 虚拟用户登录
    人狠话不多,直接上脚本;
#!/bin/bash
check_user (){
        username=$1
        if [ "${username}" ]; then
                echo "用户已存在,退出脚本。。。。"
                exit 1
        fi
}
install_vsftp (){
        read -p "请输入登录ftp的用户名" USERNAME
        read -p "请输入登录ftp的密码" PASSWORD
        read -p "请输入登录ftp的端口" PORT
        read -p "请输入用户的主目录" LOCAL_ROOT
        VSFTPD_DIR="/etc/vsftpd/"
        username=$(cat /etc/passwd |awk -F : '{print $1}' |grep -w ${USERNAME})
        check_user ${username}
        mkdir -p ${LOCAL_ROOT}/${USERNAME}
        useradd ${USERNAME} -M -s /sbin/nologin -d ${LOCAL_ROOT}
        chown -R ${USERNAME}:${USERNAME} ${LOCAL_ROOT}
        useradd vsftpd -M -s /sbin/nologin
        yum -y install vsftpd
        mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.confbak
        >/etc/vsftpd/vsftpd.conf
        cat >/etc/vsftpd/vsftpd.conf <<EOF
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
listen_port=${PORT}
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
guest_enable=YES
guest_username=${USERNAME}
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
anon_upload_enable=NO
anon_mkdir_write_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
#pasv_address=0.0.0.0
pasv_enable=YES
pasv_min_port=31024
pasv_max_port=32048
#banner_file=/etc/vsftpd/ftpbanner
EOF
        touch /var/log/vsftpd.log
        chown -R vsftpd.vsftpd /var/log/vsftpd.log
        echo "$USERNAME" >/etc/vsftpd/user_list
        echo "$USERNAME" >/etc/vsftpd/chroot_list
        echo "$USERNAME" >>/etc/vsftpd/vuser.txt
        echo "$PASSWORD" >>/etc/vsftpd/vuser.txt
        db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
        mv  /etc/pam.d/vsftpd  /etc/pam.d/vsftpdbak
        cat > /etc/pam.d/vsftpd <<EOF
#%PAM-1.0
#auth                 required     pam_userdb.so   db=/etc/vsftpd/vuser
#account              required     pam_userdb.so   db=/etc/vsftpd/vuser
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
EOF

mkdir -p /etc/vsftpd/vconf
cat > /etc/vsftpd/vconf/$USERNAME <<EOF
local_root=${LOCAL_ROOT}
#指定虚拟用户的具体主路径
anonymous_enable=NO
#设定不允许匿名用户访问
write_enable=YES
#设定允许写操作
local_umask=022
#设定上传文件权限掩码
anon_upload_enable=NO
#设定不允许匿名用户上传
anon_mkdir_write_enable=NO
#设定不允许匿名用户建立目录
idle_session_timeout=600
#设定空闲连接超时时间
data_connection_timeout=120
#设定单次连续传输最大时间
max_clients=10
#设定并发客户端访问个数
max_per_ip=5
#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
local_max_rate=50000
#设定该用户的最大传输速率,单位b/s
EOF
        /etc/init.d/vsftpd restart
        if [[ "$?" == "0" ]]; then
                echo "成功安装ftp服务器,用户名为:${USERNAME},密码为:${PASSWORD},端口为:${PORT}" 
        else
                echo "安装ftp服务器失败,请检查!"
        fi
}
useradd_ftp (){
        read -p "请输入新增的ftp用户名:" USERNAME
        read -p "请输入新增的ftp密码:" PASSWORD
        echo "$USERNAME" >/etc/vsftpd/user_list
        echo "$USERNAME" >/etc/vsftpd/chroot_list
        echo "${USERNAME}" >> /etc/vsftpd/vuser.txt
        echo "${PASSWORD}" >> /etc/vsftpd/vuser.txt
        db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
        /etc/init.d/vsftpd restart
        if [[ "$?" == "0" ]]; then
                echo "新增用户成功,登录名为:${USERNAME},密码为:${PASSWORD}"
        else
                echo "新增用户失败,请检查!"
        fi

}
main (){
        echo "1.安装FTP服务器。"
        echo "2.添加FTP的登录用户"
        read -p "请选择,请输入数字:" SELECT
        if [ "${SELECT}" == "1" ];then
                install_vsftp
        elif [ "${SELECT}" == "2" ]; then
                useradd_ftp
        else
                echo "请输入正确的数字"
        fi
}
main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值