1、安装vsftp

2、配置服务

3、创建虚拟用户

4、安装db4

5、建立认证文件

6、配置admin和pub用户访问权限

7、验证vsftp服务



1、安装vsftp

        yum -y install vsftpd

   备注:Centos7无法安装db4,需要安装以下软件包即可:

        yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI

        vsftp服务搭建配置_安装

    

        vsftp服务搭建配置_服务_02

        vsftp服务搭建配置_vsftp_03

2、配置服务

    cd /etc/vsftpd

    vi vsftpd.conf     (注意每一行结尾一定不能有空格)

    vsftp服务搭建配置_服务_04

    

    listen=YES

    #本地用户新增档案的权限

        local_umask=022    #本地用户文件上传后的权限是 -rw-r--r--

        connect_from_port_20=YES


    #允许系统用户名登录

        local_enable=YES


   #禁止匿名用户登录

        anonymous_enable=NO

    

   #允许为目录配置显示信息,显示每个目录下面的message_file文件的内容

        dirmessage_enable=YES

        xferlog_enable=YES

        xferlog_file=/var/log/vsftpd.log

        xferlog_std_format=YES

        guest_enable=YES

        guest_username=virtual


    #用户配置文件:

        user_config_dir=/etc/vsftpd/vsftpd_user_conf

            pam_service_name=vsftpd.vu


备注:Centos7无法启动vsftp时,禁用以下选项:

            allow_writeable_chroot=YES

            #listen_ipv6=YES

        

        

3、创建虚拟用户:

    创建FTP存放数据的文件夹:

    mkdir -p /data/ftp       

    useradd -d /data/ftp -s /sbin/nologin virtual     #用户名virtual 将来会存放ftp数据,指定存放数据的位置:/data/ftp


4、安装db4

    yum install -y db4*

    vsftp服务搭建配置_服务_05

    

    建立数据库文件并设置文件属性


    把需要的用户名和密码都输入到login.txt


    vi /etc/vsftpd/login.txt

       vsftp服务搭建配置_vsftp_06

然后执行以下命令:

    db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db     #将/etc/vsftpd/login.txt 文件变成  /etc/vsftpd/下面的 vsftpd_login.db 数据库文件    

    vsftp服务搭建配置_vsftp_07


5、建立认证文件

    vi /etc/pam.d/vsftpd.vu  插入以下两行, 这里需要注意的是 vsftpd.vu可以其任何名字,关键是要跟配置文件pam一致,一定不能有空格


    auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login

    account required pam_useradd.so db=/etc/vsftpd/vsftpd_login


6、配置admin和pub用户访问权限

    mkdir -p /etc/vsftpd/vsftpd_user_conf 

    cd /etc/vsftpd/vsftpd_usr_conf

    vsftp服务搭建配置_服务_08


    

anon_world_readable_only=NO  #下载

anon_upload_enable=YES  #上传

write_enable=YES   #写文件

anon_mkdir_write_enable=YES  #写目录

anon_other_write_enable=yes  #删除文件

local_root=/data/ftp    #家目录

    vsftp服务搭建配置_服务_09


vi pub

    anon_world_readable_only=NO

    anon_upload_enable=YES

    write_enable=YES

    local_root=/data/ftp

    vsftp服务搭建配置_vsftp_10


7、验证vsftp服务

    Linux 验证:ftp 127.0.0.1  输入用户名:admin 密码:admin123

        vsftp服务搭建配置_安装_11

    提示ftp:command not found   主要是因为ftp是客户端,没有安装,需要安装ftp服务:

        yum -y install ftp

        vsftp服务搭建配置_安装_12

8、vsftpd服务重启:

        systemctl restart vsftpd

        vsftp服务搭建配置_服务_13

    出现 vsftpd.service failed because the control process exited with error code.

    出现错误的原因是:由于centos7中vsftp的配置文件默认将 listen_ipv6=YES 这一行没有注释掉,而我们目前的网络环境还不支持ipv6,从而导致出现错误无法启动,所以解决方法是将 listen_ipv6=YES更改为:listen_ipv6=NO,或将这一行注释掉

    vi  /etc/vsftpd/vsftpd.conf

        listen_ipv6=NO

        vsftp服务搭建配置_服务_14

8、验证ftp服务:

         vsftp服务搭建配置_安装_15

        出现530 这个错误,从网上找了很多方法,尝试了很多次,都不能成功。最后是问了大牛,找到了问题所在,总结如下:

            1、首先要懂得vsftp的工作原理

            2、对于vsftpd.confg配置文件一定不能有空格

            3、一直出现530的错误,是因为创建了用户,没有指定ftp存放数据的文件夹

     

      注意:通过FTP返回的错误码,有助于定位问题,本例为错误500

       解决方案:

            getsebool ftpd_disable_trans

            如果查看状态不是on  那么输入命令

            setsebool -P ftpd_disable_trans 1

    重启服务:systemclt restart vsftpd


550 create directory operation failed 的错误信息

不重启服务器

    执行命令:setenforce 0