南京华金科技

在CentOS7中安装和使用FTP服务的详细流程

2026-03-29 12:24:02 浏览次数:1
详细信息

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 客户端

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



这个流程涵盖了从安装到配置、用户管理到故障排除的全过程。根据实际需求调整配置参数。
相关推荐