介绍
FTP服务器可以在局域网中快速传输文件,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
安装
服务端:
yum install -y vsftpd
客户端:
yum install -y ftp lftp
配置ftp服务
cat /etc/vsftpd/vsftpd.conf
# 是否开启匿名用户,匿名都不安全,设置为NO
anonymous_enable=NO# 打开主动模式
port_enable=YES
# 启动被动式联机(passivemode)
pasv_enable=YES# 允许本机账号登录FTP,这个设定值必须要为YES时,在/etc/passwd内的账号才能以实体用户的方式登入我们的vsftpd主机
local_enable=YES
# 允许账号都有写操作
write_enable=YES# 本地用户创建文件或目录的掩码,意思是指:文件目录权限:777-022=755,文件权限:666-022=644
local_umask=022# 进入某个目录的时候,是否在客户端提示一下
dirmessage_enable=YES# 当设定为YES时,使用者上传与下载日志都会被记录起来
xferlog_enable=YES
# 设置日志std格式
xferlog_std_format=YES
# 上传与下载日志存放路径
xferlog_file=/var/log/ftp_xferlog# 开放port模式的20端口的连接
connect_from_port_20=YES
# 默认端口21
# listen_port=21
# 监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务,这里设置为NO
listen=NO
# 监听ipv6端口
listen_ipv6=YES
# 被动模式起始端口,0为随机分配
pasv_min_port=64000
# 被动模式结束端口,0为随机分配
pasv_max_port=65000# 禁止client使用ASCII格式上传/下载档案,如果设置为YES,可能会导致DoS的攻击
ascii_upload_enable=NO
ascii_download_enable=NO# 通过搭配能实现以下几种效果:
# ①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录
# ②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录
# ③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录
# ④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录
chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list# 当启用了 chroot_local_user=YES时,vsftpd 默认要求用户的主目录不能有写权限,如果设置 allow_writeable_chroot=YES:则允许被限制的用户主目录拥有写权限
allow_writeable_chroot=YES# 开启白名单,允许登录的名单,在/etc/vsftpd/user_list文件中添加用户
userlist_enable=YES
# 开启黑名单,禁止登录的名单,前提是userlist_enable=YES,在/etc/vsftpd/ftpusers文件中添加用户
userlist_deny=YES# Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性
tcp_wrappers=YES# FTP访问目录
local_root=/data/ftp# pam模块的名称,我们放置在/etc/pam.d/vsftpd,认证用
pam_service_name=vsftpd
根据上述配置文件配置完之后,实现:
- 允许登录的用户写入到/etc/vsftpd/user_list文件中
- 禁止登录的用户写入到/etc/vsftpd/ftpusers文件中
- 所有用户都被限制到/data/ftp目录,不能访问/data/ftp目录以外的目录,想要不受限制,可以把用户加入到/etc/vsftpd/chroot_list文件中。
启动ftp服务
systemctl restart vsftpd.service
systemctl status vsftpd.service
systemctl enable vsftpd.service
搭建完成,之后测试是否正常即可。

此文章讲解了如何搭建ftp服务器,实现:
1. 允许登录的用户写入到/etc/vsftpd/user_list文件中
2. 禁止登录的用户写入到/etc/vsftpd/ftpusers文件中
3. 所有用户都被限制到/data/ftp目录,不能访问/data/ftp目录以外的目录,想要不受限制,可以把用户加入到/etc/vsftpd/chroot_list文件中。