1. 安装vsftpd软件包
在CentOS系统上,使用yum包管理器安装vsftpd(Very Secure FTP Daemon),这是CentOS下最常用的FTP服务器软件:
sudo yum install vsftpd -y
2. 配置vsftpd核心参数
编辑vsftpd的主配置文件/etc/vsftpd/vsftpd.conf,修改以下关键参数以实现安全、可控的文件共享:
sudo vi /etc/vsftpd/vsftpd.conf
local_enable=YES(允许系统用户通过FTP登录);write_enable=YES(赋予用户上传文件的权限);chroot_local_user=YES(将用户限制在自己的家目录,防止访问系统其他文件);allow_writeable_chroot=YES(若启用chroot,需设置此选项,否则用户无法上传文件至家目录);anonymous_enable=NO(禁止匿名用户登录,提升安全性);pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50010
pasv_address=服务器公网IP # 若服务器在NAT后,需填写公网IP
3. 创建FTP用户并设置权限
创建专门用于FTP访问的用户(如ftpuser),并配置其家目录权限:
# 创建用户(-m参数自动创建家目录)
sudo useradd -m ftpuser
# 设置用户密码
sudo passwd ftpuser
# 修改家目录权限(确保用户可读写)
sudo chmod 755 /home/ftpuser
sudo chown ftpuser:ftpuser /home/ftpuser
若需共享其他目录(而非用户家目录),可将用户家目录修改为目标目录,并调整SELinux上下文:
# 创建共享目录
sudo mkdir -p /data/ftp_shared
# 修改目录所有者
sudo chown ftpuser:ftpuser /data/ftp_shared
# 修改SELinux上下文(允许FTP访问)
sudo restorecon -Rv /data/ftp_shared
# 修改用户家目录
sudo usermod -d /data/ftp_shared ftpuser
4. 配置防火墙放行FTP流量
若系统启用了firewalld(CentOS默认防火墙),需放行FTP服务端口(默认21)及被动模式端口范围(如50000-50010):
# 放行FTP服务(包含21端口)
sudo firewall-cmd --permanent --add-service=ftp
# 放行被动模式端口范围
sudo firewall-cmd --permanent --add-port=50000-50010/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload
若使用iptables,可执行以下命令:
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 50000:50010 -j ACCEPT
sudo service iptables save
5. 启动并启用vsftpd服务
启动vsftpd服务,并设置为开机自启,确保服务器重启后FTP服务仍可用:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
# 检查服务状态(确认服务运行中)
sudo systemctl status vsftpd
6. 测试FTP连接
使用FTP客户端(如FileZilla、Windows资源管理器或命令行)连接FTP服务器,验证配置是否生效:
ftp 服务器IP地址
# 输入用户名(如ftpuser)和密码
# 执行上传/下载命令(如put local_file.txt、get remote_file.txt)
7. 可选:增强FTP安全性
ssl_enable=YES、指定证书路径),具体可参考vsftpd官方文档;firewall-cmd --add-rich-rule='rule family="ipv4" source address="可信IP" accept')仅允许可信IP访问FTP服务;anonymous_enable=NO,防止未授权用户访问共享文件。