在CentOS系统中配置FTP服务并设置目录访问权限,是许多服务器管理员需要掌握的基本技能,通过合理的配置,可以确保文件传输的安全性和便捷性,以下是详细的配置步骤和注意事项。

安装FTP服务
需要确保系统中已安装FTP服务软件,CentOS系统中常用的FTP服务软件是vsftpd(Very Secure FTP Daemon),可以通过yum包管理器进行安装,打开终端,执行以下命令:
sudo yum install vsftpd -y
安装完成后,启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
FTP服务已经默认运行,但为了安全起见,建议先进行基础配置。
配置匿名用户访问
默认情况下,vsftpd允许匿名用户访问,但通常出于安全考虑,会禁用此功能,编辑vsftpd的主配置文件:
sudo vim /etc/vsftpd/vsftpd.conf
找到以下配置项并进行修改:
- 将
anonymous_enable=YES改为anonymous_enable=NO,禁用匿名访问。 - 确保
local_enable=YES已启用,允许本地用户登录。 - 设置
write_enable=YES,允许用户上传文件。
保存并退出文件后,重启vsftpd服务使配置生效:
sudo systemctl restart vsftpd
创建FTP专用用户和目录
为了增强安全性,建议为FTP服务创建专用用户,并限制其访问目录,创建一个名为ftpuser的用户:

sudo useradd -d /home/ftpuser -s /sbin/nologin ftpuser
-d参数指定用户的主目录,-s /sbin/nologin禁止该用户通过SSH登录,为该用户设置密码:
sudo passwd ftpuser
创建并设置目录权限:
sudo mkdir -p /home/ftpuser/upload sudo chown -R ftpuser:ftpuser /home/ftpuser sudo chmod -R 755 /home/ftpuser
这样,用户只能访问其主目录,且具有读写权限。
限制用户访问目录
为了确保用户无法通过FTP访问系统其他目录,需要在配置文件中添加以下内容:
sudo vim /etc/vsftpd/vsftpd.conf
添加以下配置项:
chroot_local_user=YES allow_writeable_chroot=YES
chroot_local_user=YES会将用户限制在其主目录内,而allow_writeable_chroot=YES允许在受限目录内写入文件,保存后重启服务。
配置防火墙和SELinux
CentOS系统默认启用防火墙和SELinux,需要开放FTP服务的端口,执行以下命令:

sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload
对于SELinux,可以临时设置为宽松模式以测试:
sudo setsebool -P ftpd_full_access on
生产环境中建议根据实际需求调整SELinux策略。
FAQs
Q1: 如何禁止FTP用户访问除主目录外的其他目录?
A1: 在vsftpd.conf中设置chroot_local_user=YES,并将用户主目录的权限设置为755,确保用户无法向上级目录跳转。
Q2: FTP连接时提示“530 Login incorrect”怎么办?
A2: 检查用户密码是否正确,确认/etc/vsftpd/ftpusers和/etc/vsftpd/user_list文件中是否禁用了该用户,并确保防火墙和SELinux允许FTP访问。