CentOS 7 安装和配置 FTP 服务详细流程
1. 安装 vsftpd(最常用的FTP服务器)
# 更新系统包
sudo yum update -y
# 安装 vsftpd
sudo yum install vsftpd -y
# 启动 vsftpd 服务
sudo systemctl start vsftpd
# 设置开机自启
sudo systemctl enable vsftpd
# 检查服务状态
sudo systemctl status vsftpd
2. 配置防火墙
# 开放 FTP 端口(20,21)
sudo firewall-cmd --permanent --add-port=20/tcp
sudo firewall-cmd --permanent --add-port=21/tcp
# 开放被动模式端口范围
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
# 重新加载防火墙
sudo firewall-cmd --reload
# 查看已开放的端口
sudo firewall-cmd --list-all
3. 配置 SELinux(如果启用)
# 检查 SELinux 状态
getenforce
# 如果 SELinux 是 Enforcing 模式,需要设置
sudo setsebool -P ftpd_full_access on
sudo setsebool -P tftp_home_dir on
4. 配置 vsftpd
备份原始配置文件
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
编辑配置文件
sudo vi /etc/vsftpd/vsftpd.conf
常用配置选项
# 匿名用户设置
anonymous_enable=NO # 禁止匿名登录(安全考虑)
# 本地用户设置
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许写操作
local_umask=022 # 文件权限掩码
# 限制用户访问其主目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 用户列表配置
userlist_enable=YES
userlist_deny=NO # 仅允许user_list中的用户
userlist_file=/etc/vsftpd/user_list
# 被动模式设置
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的服务器IP地址 # 重要:填写服务器公网IP
# 日志设置
xferlog_enable=YES
xferlog_file=/var/log/xsferlog
xferlog_std_format=YES
# 其他安全设置
idle_session_timeout=300
data_connection_timeout=120
max_clients=50
max_per_ip=10
5. 创建 FTP 用户
方法一:创建系统用户
# 创建用户(禁止Shell登录)
sudo useradd -s /sbin/nologin ftpuser1
sudo passwd ftpuser1
# 设置用户主目录权限
sudo chmod 755 /home/ftpuser1
方法二:虚拟用户(更安全)
# 1. 创建虚拟用户数据库文件
sudo mkdir -p /etc/vsftpd/virtual_users
cd /etc/vsftpd/virtual_users
# 2. 创建用户文件(格式:一行用户名,一行密码)
sudo vi vusers.txt
# 内容示例:
virtualuser1
password1
virtualuser2
password2
# 3. 生成数据库文件
sudo db_load -T -t hash -f vusers.txt vsftpd-virtual-user.db
sudo chmod 600 vsftpd-virtual-user.db
# 4. 创建 PAM 配置文件
sudo vi /etc/pam.d/vsftpd-virtual
# 添加内容:
auth required pam_userdb.so db=/etc/vsftpd/virtual_users/vsftpd-virtual-user
account required pam_userdb.so db=/etc/vsftpd/virtual_users/vsftpd-virtual-user
# 5. 创建虚拟用户对应的本地用户
sudo useradd -d /var/ftp/virtual -s /sbin/nologin virtual
sudo chmod 755 /var/ftp/virtual
# 6. 修改 vsftpd.conf
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd-virtual
6. 用户权限管理
用户列表文件
# 编辑允许登录的用户列表
sudo vi /etc/vsftpd/user_list
# 每行添加一个用户名
# 编辑禁止登录的用户列表
sudo vi /etc/vsftpd/ftpusers
7. 启动和测试
# 重启 vsftpd 服务
sudo systemctl restart vsftpd
# 测试连接(本地测试)
ftp localhost
# 或
ftp 服务器IP地址
# 查看日志
sudo tail -f /var/log/vsftpd.log
8. 客户端连接示例
Windows 使用资源管理器
地址栏输入:ftp://服务器IP地址
Linux 使用命令行
ftp 服务器IP地址
# 输入用户名和密码
使用 FileZilla 等 FTP 客户端
- 主机:服务器IP地址
- 用户名:你的FTP用户名
- 密码:你的FTP密码
- 端口:21
- 传输模式:主动或被动
9. 常见问题解决
连接超时
# 检查防火墙设置
sudo firewall-cmd --list-all
# 检查 vsftpd 服务状态
sudo systemctl status vsftpd
无法上传文件
# 检查目录权限
sudo chmod 777 /目标目录 # 临时测试
# 或
sudo chown ftpuser:ftpuser /目标目录
被动模式问题
确保在 vsftpd.conf 中正确设置了 pasv_address
10. 安全建议
使用 SFTP 替代 FTP(更安全):
# 安装 OpenSSH 服务器(通常已安装)
sudo yum install openssh-server -y
使用 SFTP
sftp username@服务器IP地址
2. **启用 TLS/SSL 加密**:
```bash
# 生成 SSL 证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
# 在 vsftpd.conf 中添加
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
定期更新和监控
# 更新软件包
sudo yum update vsftpd -y
查看日志
sudo journalctl -u vsftpd -f
这个流程涵盖了从安装到配置、用户管理到故障排除的全过程。根据实际需求调整配置参数。