在CentOS系统中设置FTP账号是一个常见的服务器管理任务,通常用于文件传输和共享,以下是详细的步骤和注意事项,帮助您顺利完成配置。

安装FTP服务
需要安装vsftpd(Very Secure FTP Daemon),这是CentOS中最常用的FTP服务器软件,打开终端,执行以下命令更新系统并安装vsftpd:
sudo yum update -y sudo yum install vsftpd -y
安装完成后,启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
检查服务状态,确保运行正常:
sudo systemctl status vsftpd
配置防火墙规则
CentOS默认使用firewalld作为防火墙管理工具,需要开放FTP服务的21端口(控制端口)和被动模式的数据端口范围,执行以下命令:
sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload
如果需要指定被动模式端口,可在vsftpd配置文件中设置(后续步骤详述)。
创建FTP用户账号
使用useradd命令创建新用户,例如创建用户ftpuser:
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
参数说明:

-m:自动创建用户主目录。-d:指定用户主目录路径。-s /sbin/nologin:限制用户仅能通过FTP登录,无法SSH登录。
设置用户密码:
sudo passwd ftpuser
配置vsftpd.conf文件
编辑vsftpd主配置文件:
sudo vi /etc/vsftpd/vsftpd.conf
以下是关键配置项及建议值:
anonymous_enable=NO # 禁止匿名用户访问 local_enable=YES # 允许本地用户登录 write_enable=YES # 允许写入操作 chroot_local_user=YES # 限制用户仅能访问主目录 allow_writeable_chroot=YES # 允许chroot目录内有写入权限(需配合write_enable=YES) pasv_min_port=10000 # 被动模式最小端口 pasv_max_port=10100 # 被动模式最大端口 userlist_enable=YES # 启用用户列表控制 userlist_file=/etc/vsftpd/user_list userlist_deny=NO # 仅允许user_list中的用户登录
保存文件后,重启vsftpd服务:
sudo systemctl restart vsftpd
设置用户访问权限
如果需要限制用户仅能访问特定目录(如/var/ftp/share),可执行以下操作:
- 创建共享目录并设置权限:
sudo mkdir -p /var/ftp/share sudo chown -R ftpuser:ftpuser /var/ftp/share sudo chmod -R 755 /var/ftp/share
- 修改用户主目录为共享目录:
sudo usermod -d /var/ftp/share ftpuser
测试FTP连接
使用FileZilla或命令行工具测试连接,例如通过命令行:
ftp localhost
输入用户名和密码后,检查是否能正常登录和传输文件。

常见问题排查
- 拒绝连接:检查防火墙和SELinux设置,可临时关闭SELinux测试:
sudo setenforce 0
- 权限问题:确保用户主目录权限为755,文件权限为644,避免使用777。
FAQs
Q1: 如何限制FTP用户仅能下载不能上传?
A: 在vsftpd.conf中添加以下配置:
write_enable=NO local_umask=022
重启服务后,用户将无法上传或修改文件,若需部分目录可写,可通过目录权限和local_root参数灵活控制。
Q2: 如何配置FTP支持SSL/TLS加密?
A: 1. 生成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 allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
- 重启服务后,使用FileZilla选择“Require explicit FTP over TLS”选项连接。