[笔记]CentOS7 vsftpd安装及配置使用

424 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

@[toc]

前言

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

以vsftpd 3.02版本为例

一、安装配置

1.1 卸载vsftpd

先查找vsftpd是否安装

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

有输出就代表已经安装了

卸载之前先停止vsftpd

systemctl stop vsftpd

再卸载

rpm -e vsftpd

1.2 安装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

1.3 安装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

1.4 启动vsftpd

systemctl start vsftpd

1.5 防火墙配置

防火墙放行21端口

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

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

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

防火墙重新加载

firewall-cmd --reload

1.6 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

3.1 配置/etc/vsftpd/vsftpd.conf

先备份一份

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

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

3.2 配置列表

四、使用

4.1 开启vsftpd登陆日志

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

dual_log_enable=YES

然后重启ftp服务即可

systemctl restart vsftpd

4.2 使用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

4.3 匿名模式 访问ftp服务

4.4 本地用户模式 访问ftp服务

4.5 虚拟用户模式

参考

五、常见问题

5.1 匿名访问ftp服务

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

5.2 使用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

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

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

5.4 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时 提示“监测到超时! (数据连接) 无法获得目录列表 列出‘/‘的目录项时出错。”

参考

总结

本节主要介绍了vsftp的安装和使用,有问题的可以评论留言


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