凌峰创科服务平台

CentOS如何搭建FTP服务器?

在CentOS系统中搭建FTP服务器通常使用vsftpd(Very Secure FTP Daemon)软件,它是一款轻量级、高性能且安全的FTP服务程序,适用于大多数Linux发行版,以下是详细的搭建步骤及配置说明。

CentOS如何搭建FTP服务器?-图1
(图片来源网络,侵删)

安装vsftpd服务

首先需要更新系统软件包列表并安装vsftpd,以root用户或具有sudo权限的用户身份执行以下命令:

yum update -y  # 更新系统所有软件包到最新版本
yum install vsftpd -y  # 安装vsftpd服务

安装完成后,启动vsftpd服务并设置为开机自启:

systemctl start vsftpd  # 启动vsftpd服务
systemctl enable vsftpd  # 设置开机自启

检查服务状态:

systemctl status vsftpd  # 确认服务运行状态为active(running)

配置防火墙与SELinux

CentOS系统默认启用防火墙和SELinux,需要开放FTP相关端口,vsftpd默认使用21端口(控制端口)和20端口(数据端口),同时可能需要被动模式下的端口范围配置。

CentOS如何搭建FTP服务器?-图2
(图片来源网络,侵删)
  1. 开放防火墙端口

    firewall-cmd --permanent --add-service=ftp  # 添加FTP服务到防火墙规则
    firewall-cmd --reload  # 重新加载防火墙配置
  2. 配置SELinux: SELinux可能会阻止FTP服务,需设置布尔值允许FTP访问:

    setsebool -P ftpd_full_access on  # 永久允许FTP相关访问

    或使用以下命令检查SELinux状态:

    sestatus | grep ftp  # 确认ftp_home_dir和ftpd_anon_write等状态为on

配置vsftpd核心参数

vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,可通过修改该文件实现功能控制,以下是常用配置项及说明:

CentOS如何搭建FTP服务器?-图3
(图片来源网络,侵删)
配置项 默认值 推荐值 说明
anonymous_enable YES NO 是否允许匿名用户访问,建议关闭
local_enable NO YES 是否允许本地用户登录
write_enable NO YES 是否允许本地用户写权限
chroot_local_user NO YES 是否限制本地用户仅可访问家目录
allow_writeable_chroot NO YES 允许被限制在家目录的用户具有写权限(需chroot_local_user为YES)
pasv_enable NO YES 启用被动模式
pasv_min_port 0 10020 被动模式最小端口
pasv_max_port 0 10040 被动模式最大端口
userlist_enable YES YES 启用用户列表控制
userlist_file /etc/vsftpd/user_list /etc/vsftpd/user_list 用户列表文件路径
userlist_deny YES NO 是否拒绝列表中的用户登录(NO表示仅允许列表中的用户)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

根据需求修改上述参数,保存后重启vsftpd服务:

systemctl restart vsftpd

创建FTP用户并设置权限

  1. 创建本地用户

    useradd -m -s /sbin/nologin ftpuser  # 创建用户ftpuser,禁止SSH登录
    passwd ftpuser  # 设置用户密码
  2. 限制用户访问目录(可选): 如果希望用户仅能访问指定目录(如/var/ftp/share),可执行以下操作:

    mkdir -p /var/ftp/share  # 创建共享目录
    chown -R ftpuser:ftpuser /var/ftp/share  # 设置目录所有者
    usermod -d /var/ftp/share ftpuser  # 修改用户家目录
  3. 配置用户访问控制: 通过/etc/vsftpd/user_list文件控制允许登录的用户:

    echo "ftpuser" > /etc/vsftpd/user_list  # 仅允许ftpuser登录

测试FTP服务

使用FTP客户端工具(如FileZilla、命令行ftp)连接服务器:

  • 主机地址:服务器IP
  • 端口:21
  • 用户名:ftpuser
  • 密码:设置的密码

连接成功后,可上传、下载文件测试权限,若被动模式无法连接,需检查防火墙是否开放了pasv_min_portpasv_max_port指定的端口范围:

firewall-cmd --permanent --add-port=10020-10040/tcp  # 开放被动模式端口
firewall-cmd --reload

常见问题解决

  1. 550 Permission denied错误

    • 检查write_enable是否为YES。
    • 确认用户对目录是否有读写权限(chmod 755 /home/ftpuser)。
    • 检查SELinux是否拦截(ausearch -c 'vsftpd' --raw | audit2why)。
  2. 425 Failed to establish connection错误

    • 被动模式端口未开放,检查防火墙和pasv_min_port/pasv_max_port配置。
    • 确保客户端和服务器网络互通。

相关问答FAQs

Q1:如何限制FTP用户只能下载不能上传?
A:在vsftpd.conf中配置write_enable=NO,或针对特定用户使用目录权限控制(如chmod 555 /home/ftpuser),若仅允许部分用户上传,可通过user_config_dir参数为不同用户创建独立配置文件。

Q2:如何启用FTP SSL/TLS加密传输?
A:生成SSL证书并配置vsftpd启用加密,步骤如下:

  1. 生成证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
  2. 修改配置文件:添加ssl_enable=YESallow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES
  3. 重启服务:systemctl restart vsftpd
    客户端需选择“使用显式FTP over SSL(FTPES)”模式连接。
分享:
扫描分享到社交APP
上一篇
下一篇