转载链接:blog.51cto.com/5001660/210…
1、安装vsftp
2、配置服务
3、创建虚拟用户
4、安装db4
5、建立认证文件
6、配置ftpuser用户访问权限
7、验证vsftp服务
8、后记
1、安装vsftp
yum -y install vsftpd
备注:Centos7无法安装db4,需要安装以下软件包即可:
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI



2、配置服务
cd /etc/vsftpd
vi vsftpd.conf (该文件为FTP服务器的主配置文件,注意每一行结尾一定不能有空格)

以下为几项重要的配置参数,其中有几条需要特殊关注,下文会详细介绍

userlist_enable和userlist_deny可以形成组合拳:
①.当userlist_enable=YES时,userlist_deny的值才会生效
②.当userlist_enable=YES且userlist_deny=YES时,/etc/vsftpd/user_list为FTP访问黑名单,文件中每一行一个用户,这些用户均无法登陆使用FTP服务
③.当userlist_enable=YES且userlist_deny=NO时,/etc/vsftpd/user_list为FTP访问白名单,只有在文件中存在的用户才可以连接FTP
备注:Centos7无法启动vsftp时,禁用以下选项:
allow_writeable_chroot=YES
#listen_ipv6=YES
3、创建虚拟用户:
创建FTP存放数据的文件夹:
mkdir -p /data/ftpdir
用户名ftpuser将来会存放ftp数据,指定存放数据的位置:/data/ftpdir
useradd -d /data/ftpdir -s /sbin/nologin ftpuser
执行创建命令时有可能会出现以下错误:
1. useradd: warning: the home directory already exists.
2. useradd: user 'ftpuser' already exists
解决办法简单粗暴,就是全都删掉
执行:userdel -rf ftpuser之后再执行一开始的创建用户命令即可
创建完用户之后记得使用passwd ftpuser 命令设置密码

4、安装db4
yum install -y db4*

建立数据库文件并设置文件属性
把需要的用户名和密码都输入到login.txt
vim /etc/vsftpd/login.txt

然后执行以下命令:
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db #将/etc/vsftpd/login.txt 文件变成 /etc/vsftpd/下面的 vsftpd_login.db 数据库文件

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、配置ftpuser用户访问权限
mkdir -p /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_usr_conf

anon_world_readable_only=YES #下载
anon_upload_enable=YES #上传
write_enable=YES #写文件
anon_mkdir_write_enable=YES #写目录
anon_other_write_enable=YES #删除文件
local_root=/data/ftpdir #HOME目录

7、验证vsftp服务
Linux 验证:ftp 127.0.0.1 输入用户名:ftpuser 密码:ftp123456

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

vsftpd服务重启:
systemctl restart vsftpd

出现 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

再次验证:

当出现230,便表示服务器端的FTP已经配置完成了
8.后记:
在第7步验证vsftp服务时出现了530错误,

下面链接里提出的解决思路还是清晰的
错误530的解决办法:blog.csdn.net/yunhan0609/…
但是博主犯的确是最低级的错误,在创建用户后没有指定密码,仅在login.txt中保存了用户名和密码