CentOS 7手动搭建FTP服务器(被动模式)
vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。
FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:
主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。
1.安装vsftpd
#运行以下命令安装vsftpd
yum install -y vsftpd
#运行以下命令设置FTP服务开机自启动(可选)
systemctl enable vsftpd.service
#运行以下命令启动FTP服务
systemctl start vsftpd.service
#运行以下命令查看FTP服务监听的端口
netstat -antup | grep ftp
2.配置vsftpd
#运行以下命令为FTP服务创建一个Linux用户
adduser ftptest
#运行以下命令修改ftptest用户的密码
passwd ftptest
#运行以下命令创建一个供FTP服务使用的文件目录
mkdir /home/ftp/test
#运行以下命令,创建测试文件(运行以下命令,创建测试文件)
touch /home/ftp/test/testfile.txt
#运行以下命令更改/var/ftp/test目录的拥有者为ftptest
chown -R ftptest:ftptest /home/ftp/test
#修改vsftpd.conf配置文件
vim /etc/vsftpd/vsftpd.conf
#修改后重启vsftpd
systemctl restart vsftpd.service
配置vsftpd虚拟用户
#配置虚拟用户口令库文件
vim /etc/vsftpd/ftpuser.txt
用户名
密码
#一行用户名一行密码
#生成vsftpd的认证文件
db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/ftpuser.db
可以选择生成一个用户脚本文件,用于保存该命令,方便快捷执行
cat >>/etc/vsftpd/adduser.sh<<EOF
#!/bin/bash
db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/ftpuser.db
EOF
# 修改脚本文件的权限
chmod o+x /etc/vsftpd/adduser.sh
#为认证用户文件赋权
# chmod 600 /etc/vsftpd/ftpuser.db
建立虚拟用户所需的PAM配置文件
mv /etc/pam.d/vsftpd{,.bak}
cat >/etc/pam.d/vsftpd<<EOF
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuser
EOF
openEuler搭建FTP服务器需要修改虚拟用户认证文件为vsftpd_login.pag的文件扩展名(vsftpd版本)
#进入gdbmtool
gdbmtool
#创建.pag文件
open /etc/vsftpd/vsftpd_login.pag
#创建FTP虚拟用户
store ftpuser1 MZD5stL$3uHF
store ftpuser2 MZD5stL$3uHF
#查看创建的内容
list
#退出gdbmtool
quit
vsftpd.conf的常用配置项
#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#本地用户上传的文件权限
local_umask=022
#是否激活目录欢迎信息功能
dirmessage_enable=YES
#是否让系统自动维护上传和下载的日志文件
xferlog_enable=YES
#是否设定FTP服务器将启用数据端口的连接请求
connect_from_port_20=YES
#是否需要可以使用标准ftpd-xferlog格式的日志文件
xferlog_std_format=YES
#可以上传文件(全局控制)
write_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#监听IPv4 sockets。
listen=YES
#关闭监听IPv6 sockets。
#listen_ipv6=YES
#设置本地用户登录后所在目录
local_root=/home/gaftp
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
####使用白名单限制用户登录启用####
#设定userlist_file中的用户不能使用FTP
userlist_enable=YES
#在vsftpd.user_list里的用户允许登陆ftp,注意同时注释掉在ftpuser黑名单 里面的用户
userlist_deny=NO
#允许ftp登陆账号白名单
userlist_file=/etc/vsftpd/user_list
#设定支持异步传输功能
async_abor_enable=YES
#启用上传的ASCII传输方式
ascii_upload_enable=YES
#启用下载的ASCII传输方式
ascii_download_enable=YES
#修改默认监听端口
listen_port=60021
#关闭被动模式
port_enable=NO
#开启被动模式
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例的公网IP
pasv_address=服务器公网IP地址
#设置被动模式下,建立数据传输可使用的端口范围的最小值
pasv_min_port=60051
pasv_max_port=60060
#被动模式的连接超时时间
accept_timeout=60
#主动模式的连接超时时间
#connect_timeout=60
#设置空闲会话超时的默认值
idle_session_timeout=600
#设置数据连接超时的默认值
data_connection_timeout=600
####配置虚拟用户登录部分####
##设定PAM服务下Vsftpd的验证配置文件名
#pam_service_name=vsftpd
##设定userlist_file中的用户不能使用FTP
#userlist_enable=YES
##在vsftpd.user_list里的用户允许登陆ftp,注意同时注释掉在ftpuser黑名单 里面的用户
#userlist_deny=NO
##允许ftp登陆账号白名单
#userlist_file=/etc/vsftpd/user_list
##在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES
#tcp_wrappers=YES
##设定虚拟用户登录
#guest_enable=YES
##指定虚拟用户的宿主用户
#guest_enable=ftp
##设定虚拟用户的权限符合他们的宿主用户
#virtual_use_local_privs=YES
##指定每个虚拟用户账号配置目录
#user_config_dir=/etc/vsftpd/vconf
参考:https://help.aliyun.com/document_detail/92048.htm?spm=a2c4g.11186623.0.0.fdf0278891O2n3#section-t9a-ors-44c
https://blog.csdn.net/owenxiaobai/article/details/128150612
https://forum.openeuler.org/t/topic/1401