在Linux CentOS系统中新建FTP服务是许多服务器管理员需要掌握的基本技能,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,它简单易用,适用于各种文件传输场景,本文将详细介绍在CentOS系统中如何通过vsftpd(Very Secure FTP Daemon)软件包来配置和启动一个安全的FTP服务。

安装vsftpd软件包
在开始配置之前,首先需要确保系统已经安装了vsftpd软件包,vsftpd是一个轻量级、高性能且安全的FTP服务器程序,是CentOS系统中最常用的FTP服务实现,可以通过以下命令检查是否已安装:
rpm -q vsftpd
如果输出显示“package vsftpd is not installed”,则需要执行以下命令进行安装:
sudo yum install vsftpd -y
安装完成后,可以通过以下命令启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
配置防火墙规则
为了确保FTP服务能够正常访问,需要在防火墙中开放FTP服务的相关端口,FTP服务默认使用21端口进行控制连接,以及20端口进行数据传输,如果启用了被动模式(Passive Mode),还需要开放被动模式使用的端口范围,执行以下命令开放相关端口:
sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload
这些命令会永久开放FTP服务并重新加载防火墙配置,确保新规则立即生效。
修改vsftpd配置文件
vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,建议在修改之前先备份原始配置文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
然后使用文本编辑器(如vim或nano)打开配置文件:

sudo vim /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:启用用户列表功能,只有user_list文件中的用户才能登录。
保存配置文件后,重启vsftpd服务使配置生效:
sudo systemctl restart vsftpd
创建FTP用户
为了安全起见,建议为FTP服务创建专用的用户,而不是使用系统中的现有用户,可以使用以下命令创建一个新用户,例如ftpuser:
sudo useradd -m -s /sbin/nologin ftpuser
这里的-m选项表示创建用户主目录,-s /sbin/nologin表示禁止该用户通过SSH等方式登录系统,然后设置该用户的密码:
sudo passwd ftpuser
如果启用了用户列表功能,需要将用户名添加到/etc/vsftpd/user_list文件中:
echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list
设置目录权限
确保FTP用户对其主目录具有适当的读写权限,默认情况下,用户主目录的权限可能过于严格,需要调整:
sudo chmod 755 /home/ftpuser sudo chown ftpuser:ftpuser /home/ftpuser
如果需要允许用户上传文件到特定目录,可以创建一个子目录并设置相应的权限:

sudo mkdir -p /home/ftpuser/upload sudo chmod 755 /home/ftpuser/upload sudo chown ftpuser:ftpuser /home/ftpuser/upload
测试FTP服务
配置完成后,可以使用FTP客户端工具(如FileZilla或命令行ftp命令)测试服务是否正常工作,使用以下命令连接到本地FTP服务器:
ftp localhost
输入用户名和密码后,如果能够成功登录并传输文件,说明配置基本正确,需要注意的是,如果遇到连接问题,可以检查/var/log/vsftpd.log日志文件以排查错误。
相关问答FAQs
问题1:如何限制FTP用户只能访问其主目录?
答:在vsftpd.conf配置文件中设置chroot_local_user=YES即可将用户限制在其主目录中,确保用户主目录的权限设置正确(例如755),以避免权限错误导致用户无法登录。
问题2:如何启用FTP的SSL/TLS加密?
答:可以通过以下步骤启用SSL/TLS加密:1)生成SSL证书(可以使用openssl命令);2)在vsftpd.conf中启用ssl_enable=YES并配置证书路径(rsa_cert_file和rsa_private_key_file);3)根据需要设置force_local_data_ssl和force_local_logins_ssl以强制数据连接和登录连接使用加密,重启服务后,客户端需使用FTPES或SFTP协议进行加密连接。