参考:
​​Linux使用笔记:配置FTP服务器(vsftp)​​VSFTP介绍安装使用
centos7搭建vsftpd-配置文件全解
​阿里云的esc ftp搭建​

文章目录

  • ​​前言​​
  • ​​安装配置​​
  • ​​卸载vsftpd​​
  • ​​安装vsftpd​​
  • ​​安装ftp客户端​​
  • ​​启动vsftpd​​
  • ​​防火墙配置​​
  • ​​Selinux配置​​
  • ​​查看selinux状态​​
  • ​​临时关闭selinux​​
  • ​​永久关闭​​
  • ​​相关目录​​
  • ​​配置conf​​
  • ​​配置/etc/vsftpd/vsftpd.conf​​
  • ​​配置列表​​
  • ​​使用​​
  • ​​开启vsftpd登陆日志​​
  • ​​使用Winscp Root账号登陆FTP​​
  • ​​匿名模式 访问ftp服务​​
  • ​​本地用户模式 访问ftp服务​​
  • ​​虚拟用户模式​​
  • ​​常见问题​​
  • ​​匿名访问ftp服务​​
  • ​​使用Winscp Root角色登陆 提示 Permission denied.​​
  • ​​ftpusers文件​​
  • ​​user_list文件​​
  • ​​/var/log/vsftpd.log 不存在或者为空​​
  • ​​OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list​​
  • ​​Winscp登陆访问ftp时 提示“监测到超时! (数据连接) 无法获得目录列表 列出‘/‘的目录项时出错。”​​
  • ​​总结​​

前言

最近在调研ftp服务的登陆 所以有必要安装研究一下作为Linux端ftp的实现软件—— vsftpd

以vsftpd 3.02版本为例

安装配置

卸载vsftpd

先查找vsftpd是否安装

[root@localhost ~]# rpm -aq vsftpd
vsftpd-3.0.2-29.el7_9.x86_64

有输出就代表已经安装了

卸载之前先停止vsftpd

systemctl stop vsftpd

再卸载

rpm -e vsftpd

安装vsftpd

yum install -y vsftpd

注意:如果提示"No package vsftpd available."

执行如下

wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/vsftpd-3.0.2-29.el7_9.x86_64.rpm
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm

安装ftp客户端

yum install ftp -y

如果提示“No package ftp available.”, 则执行以下操作

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/ftp-0.17-67.el7.x86_64.rpm
rpm -ivh ftp-0.17-67.el7.x86_64.rpm

启动vsftpd

systemctl start vsftpd

防火墙配置

防火墙放行21端口

firewall-cmd --zone=public --add-port=21/tcp --permanent

防火墙永久开放ftp服务,即类似windows 防火墙可让该应用 通行

firewall-cmd --add-service=ftp --permanent

防火墙重新加载

firewall-cmd --reload

Selinux配置

CentOS的所有访问权限都是由SELinux来管理的,为了避免我们安装中由于权限关系而导致的失败,需要先将其关闭,以后根据需要再进行重新管理。

查看selinux状态

[root@localhost script]# sestatus 
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

临时关闭selinux

# 临时关闭SE
getenforce
setenforce 0

永久关闭

getsebool -a | grep ftp 
setsebool -P ftpd_full_access on

相关目录

# vsftp配置文件
/etc/vsftpd/vsftpd.conf

# PAM认证文件
/etc/pam.d/vsftpd

# 匿名用户默认目录
/var/ftp

# 匿名用户的下载目录
/var/ftp/pub

# 不能访问 ftp server 的用户列表
/etc/vsftpd/ftpusers

# 允许访问 ftp server 的用户列表
/etc/vsftpd/user_list

# ftp 的上传下载日志
/var/log/xferlog

# ftp登陆日志目录 需要 vsftpd.conf conf dual_log_enable=YES
/var/log/vsftpd.log

配置conf

配置/etc/vsftpd/vsftpd.conf

先备份一份

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

​注意:添加配置项时结尾不要有空格 不然可能会启动不了服务​

配置列表

使用

开启vsftpd登陆日志

vsftp配置文件/etc/vsftpd/vsftpd.conf
添加:

dual_log_enable=YES

然后重启ftp服务即可

systemctl restart vsftpd

使用Winscp Root账号登陆FTP

  1. 修改 vsftpd.conf 配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=077
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=NO
listen_ipv6=YES


pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_root=/var/ftp/
dual_log_enable=YES
  1. 修改user_list配置
    注释掉root
  2. 修改ftpusers配置
    注释掉root

匿名模式 访问ftp服务

本地用户模式 访问ftp服务

虚拟用户模式

​参考​

常见问题

匿名访问ftp服务

ftp://xx.xxx.xxx.xx 访问时超时或者无法访问

使用Winscp Root角色登陆 提示 Permission denied.

ftpusers文件

查看root角色是否在 不能访问 ftp server 的用户列表/etc/vsftpd/ftpusers中,如果在删除

user_list文件

查看root角色是否在 允许访问 ftp server 的用户列表/etc/vsftpd/user_list中,如果不在就添加

If userlist_deny=NO, only allow users in this file
If userlist_deny=YES (default), never allow users in this file, and

/var/log/vsftpd.log 不存在或者为空

1.为空 可能是没有登陆行为
2.vsftpd.conf 没有添加 ​​​dual_log_enable=YES​​ 配置项

OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

​​参考​​ /etc/vsftpd/vsftpd.conf #编辑vsftpd配置文件
找到以下三行,注释掉就行可以了

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

改为

#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list

重启FTP

systemctl restart vsftpd

Winscp登陆访问ftp时 提示“监测到超时! (数据连接) 无法获得目录列表 列出‘/‘的目录项时出错。”

​​参考​​

总结