在网站运维和服务器管理中,文件传输是一个基础却又至关重要的环节,CentOS作为一款稳定、高效的Linux发行版,是许多站长的首选操作系统,掌握在CentOS上管理FTP用户的方法,意味着你能安全、高效地完成文件的上传与下载,这对于网站内容更新、数据备份都极其重要。
本文将引导你逐步完成从FTP服务选型、用户创建、权限设置到安全加固的全过程。

选择合适的FTP服务软件
在开始之前,我们需要选择一个FTP服务器软件,目前最主流的选择是 vsftpd,它以其高性能、高安全性和稳定性而闻名。
安装vsftpd:
使用yum命令可以轻松完成安装:
yum install vsftpd -y
安装完成后,启动vsftpd服务并设置为开机自启:
systemctl start vsftpd systemctl enable vsftpd
创建专用的FTP用户
直接使用root用户进行FTP传输是极度危险的行为,最佳实践是为每个需要FTP访问的网站或任务创建独立的系统用户。
创建用户并指定家目录

假设我们有一个网站,其文件存放在 /www/mysite 目录下,我们可以创建一个名为 ftp_mysite 的用户,并将其家目录指向该路径:
useradd -d /www/mysite -s /sbin/nologin ftp_mysite
-d /www/mysite:指定用户的家目录为/www/mysite。-s /sbin/nologin:禁止该用户通过SSH登录服务器,这是重要的安全措施,FTP访问不受影响。
设置用户密码
为用户设置一个强密码:
passwd ftp_mysite
根据提示输入两次密码即可,请务必使用复杂且难以猜测的密码。
配置目录权限与所有权
正确的权限设置是保证安全和功能正常的关键。
确保目录所有权

将网站目录的所有权赋予新创建的FTP用户,通常我们也会将其所属组一并修改,假设我们通常使用 nginx 或 apache 用户来运行Web服务,我们可以将用户加入到Web服务组,或者直接更改目录所有者。
chown -R ftp_mysite:nginx /www/mysite
这条命令将 /www/mysite 及其下所有文件和子目录的所有者改为 ftp_mysite,所属组改为 nginx。
设置合理的目录权限
为了保证网站既能被FTP用户写入,又能被Web服务器读取,我们设置如下权限:
chmod -R 755 /www/mysite
find /www/mysite -type f -exec chmod 644 {} \; - 第一条命令设置目录为755(所有者可读可写可执行,组用户和其他用户可读可执行)。
- 第二条命令使用
find将目录下所有普通文件的权限设置为644(所有者可读可写,组用户和其他用户只读)。
这样的设置既安全又实用,FTP用户可以自由更新文件,Web服务器可以正常读取并展示网站内容。
配置vsftpd.conf核心参数
vsftpd的主要配置文件是 /etc/vsftpd/vsftpd.conf,在修改前,建议先备份原文件。
使用文本编辑器(如vim)打开配置文件:
vim /etc/vsftpd/vsftpd.conf
找到并修改或确保以下参数存在且设置正确:
# 禁止匿名用户登录,提升安全性 anonymous_enable=NO # 允许本地系统用户登录 local_enable=YES # 启用写入权限 write_enable=YES # 设置本地用户创建文件时的默认掩码,022对应755/644权限 local_umask=022 # 将所有用户限制在其家目录中(非常重要!) chroot_local_user=YES # 解决chroot目录必须非可写的问题 allow_writeable_chroot=YES # 启用被动模式(PASV)并设置端口范围,有助于通过防火墙 pasv_enable=YES pasv_min_port=30000 pasv_max_port=31000
重要说明:chroot_local_user=YES 是核心安全配置之一,它能够将FTP用户“禁锢”在其家目录中,使其无法访问服务器上的其他目录,极大地增强了系统的安全性。
修改完成后,保存并退出编辑器,然后重启vsftpd服务使配置生效:
systemctl restart vsftpd
防火墙与SELinux设置
防火墙放行FTP流量
CentOS默认的防火墙是firewalld,需要放行FTP服务所需的端口。
# 放行FTP默认的21端口 firewall-cmd --permanent --add-service=ftp # 放行我们上面设置的被动模式端口范围 firewall-cmd --permanent --add-port=30000-31000/tcp # 重新加载防火墙配置 firewall-cmd --reload
SELinux配置
如果您的服务器启用了SELinux(通常默认启用),需要允许FTP访问用户家目录。
setsebool -P ftp_home_dir on
如果FTP用户的家目录是自定义路径(如 /www),可能需要额外设置SELinux上下文:
semanage fcontext -a -t public_content_rw_t "/www/mysite(/.*)?" restorecon -Rv /www/mysite
测试与连接
你可以使用任何FTP客户端(如FileZilla、WinSCP)进行连接测试了。
- 主机: 你的服务器IP地址
- 用户名:
ftp_mysite - 密码: 你设置的密码
- 端口: 21(默认)
连接成功后,你应该只能看到 /www/mysite 目录下的内容,并且可以正常上传、下载和修改文件。
安全建议与个人观点
FTP服务虽然方便,但其本身传输是明文的,存在安全风险,对于生产环境,强烈建议考虑使用更安全的 SFTP,SFTP基于SSH协议,数据传输是加密的,无需额外配置服务,直接使用系统用户和SSH密钥即可,既安全又方便,但对于一些必须使用传统FTP的场景(如与某些老旧系统对接),遵循上述步骤进行严格配置,同样可以构建一个相对安全的FTP环境,关键在于:最小权限原则、禁用匿名登录、禁锢用户目录以及使用强密码,服务器安全无小事,每一个细节都值得认真对待。
