一,

由于vsftp是一个比较老的文件共享服务,因此,很多选项是需要自己配置的,比如,日志记录,因此,不管是本地用户模式还是虚拟用户模式,我们都首先应该配置文件记录,以方便排查错误。也就是说这几项应该时刻都有:

xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

vsftpd.log文件大体记录了vsftpd的下载和用户登录情况。 通常,利用此日志可以知道是否登录成功。

二,判断本地用户和虚拟用户登录情况

vim /var/log/secure  如下内容表示账号校验成功:

Oct 29 01:39:14 hdp-1 vsftpd[18590]: pam_userdb(vsftpd.vu:auth): user 'zsk2' granted access
Oct 29 01:39:17 hdp-1 vsftpd[18593]: pam_userdb(vsftpd.vu:auth): user 'zsk2' granted access
Oct 29 01:39:21 hdp-1 vsftpd[18596]: pam_userdb(vsftpd.vu:auth): user 'zsk2' granted access
Oct 29 01:39:28 hdp-1 vsftpd[18600]: pam_userdb(vsftpd.vu:auth): user 'zsk1' granted access

三,在Linux服务器上使用ftp命令登陆vsftp

(1) 密码错误  ----530 Login incorrect.

[root@hdp-1 ~]# ftp 192.168.88.11
Connected to 192.168.88.11 (192.168.88.11).
220 (vsFTPd 3.0.2)
Name (192.168.88.11:root): zsk6
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>

这里,通常是密码校验错误,还有一种可能是虚拟用户并没有映射到普通用户,也就是说,虚拟用户没有db_load -T -t hash -f 这样的命令指定用户文件,pam数据库里没有这个虚拟用户。

(2) 无权限登录

[root@hdp-1 ~]# ftp 192.168.88.11
Connected to 192.168.88.11 (192.168.88.11).
220 (vsFTPd 3.0.2)
Name (192.168.88.11:root): root
530 Permission denied.
Login failed.

 这里我们使用root用户登录vsftp,由于/etc/vsftpd/user_list这个黑名单里写的有root用户,因此,无权登录。也就是通常无权限是由于黑名单的原因,排查 /etc/vsftpd目录下的ftpuser和user_list 两个文件内,看是否被写入黑名单。

(3)cannot change directory:/home/***

如果用户和密码正确,有此报错,通常是共享目录的属组不是普通用户,而是root用户。chown -Rf 普通用户. 共享目录 即可解决此类问题。

(4)上传文件,下载文件,删除文件报错  例如:

Linux VSFTP---简单服务其实并不简单(4)---vsftp搭建中的排错思路_配置文件

此类问题通常是权限问题,一个是查看配置文件,虚拟用户查看对应的虚拟用户配置文件,一个是查看配置文件内定义的local_root 的路径的属组是否是普通用户。比如:

local_root=/ftp/share/zsk1
write_enable=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES

 此时,write_enable为NO,登录进去后并不可以有上传,新建文件这些功能哦。

总结:

日志记录最好要有,即使是比较简单的日志,总会让事情有迹可循。

vsftp通常比较喜欢出的配置问题是权限问题,要检查共享目录的属组,黑白名单,读写权限选项配置这三方面。

经常利用Linux下的ftp客户端,使用ftp登录vsftp,快速暴露问题原因。

改完配置文件记得要重启服务哦。