在 CentOS 上开启 FTP 服务通常使用 vsftpd 软件,以下是具体步骤:
安装 vsftpd
1、执行安装命令:在终端中输入sudo yum install vsftpd y
,然后按下回车键,系统会自动下载并安装 vsftpd 软件包。

2、确认安装成功:安装完成后,可以输入rpm qa|grep vsftpd
查看是否安装成功,如果显示vsftpdx.x.xx.elx.x86_64
,则表示安装成功。
配置 vsftpd
1、备份配置文件:在进行配置修改前,先将原始的配置文件进行备份,以便后续出现问题时可以恢复,可以使用命令cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
来备份配置文件。
2、编辑配置文件:使用文本编辑器打开配置文件/etc/vsftpd/vsftpd.conf
,常见的配置选项及含义如下:
anonymous_enable:设置为NO
表示禁用匿名访问;设置为YES
表示允许匿名访问。
local_enable:设置为YES
表示允许本地用户登录;设置为NO
表示不允许本地用户登录。
write_enable:设置为YES
表示允许用户对文件系统进行写操作;设置为NO
表示只允许读取操作。

local_umask:设置本地用户创建文件时的默认权限掩码,例如022
表示文件的权限为755
,目录的权限为755
。
dirmessage_enable:设置为YES
表示当用户首次进入一个新目录时显示一个消息。
xferlog_enable:设置为YES
表示启用上传和下载的详细日志记录。
connect_from_port_20:设置为YES
表示使用端口20
(ftpdata)用于PORT风格的连接。
xferlog_std_format:设置为YES
表示使用标准的日志格式。
listen:设置为NO
表示不要让vsftpd运行在独立模式。

listen_ipv6:设置为YES
表示vsftpd将监听IPv6而不是IPv4。
pam_service_name:指定vsftpd使用的PAM服务名,一般保持默认即可。
userlist_enable:设置为YES
表示vsftpd支持载入用户列表。
tcp_wrappers:设置为YES
表示使用tcp wrappers。
3、保存配置文件:修改完配置文件后,保存并关闭文件。
4、重启 vsftpd 服务:使配置生效,输入systemctl restart vsftpd
命令重启 vsftpd 服务。
配置防火墙
1、开放 FTP 相关端口:CentOS 默认的防火墙可能会阻止外部对 FTP 服务的访问,需要开放 FTP 服务所使用的端口,通常是端口21
(控制端口),可以使用以下命令开放端口:
firewallcmd zone=public addport=21/tcp permanent
(永久开放端口21
)。
firewallcmd reload
(重新加载防火墙配置)。
2、关闭防火墙或禁用 SELinux:为了简化配置过程,也可以选择暂时关闭防火墙或禁用 SELinux,但这样做会降低系统的安全性,不建议在生产环境中长期使用,关闭防火墙的命令如下:
systemctl stop firewalld.service
(停止防火墙服务)。
systemctl disable firewalld.service
(禁止防火墙开机启动)。
修改/etc/selinux/config
文件,将SELINUX=enforcing
改为SELINUX=disabled
,然后重启虚拟机或执行setenforce 0
使修改马上生效。
创建用户和目录
1、创建用户组:创建一个专门的用户组用于 FTP 用户,例如ftpgroup
,使用命令groupadd ftpgroup
创建用户组。
2、创建用户:创建一个或多个用户用于访问 FTP 服务器,并将这些用户添加到上述创建的用户组中,创建一个名为ftpuser
的用户,并将其添加到ftpgroup
组中,同时指定用户的主目录和登录 shell 等,可以使用命令useradd g ftpgroup d /home/ftpuser s /bin/false ftpuser
创建用户。
3、设置用户密码:为用户设置密码,可以使用命令passwd ftpuser
,然后按照提示输入密码。
4、创建目录并设置权限:在服务器上创建一个目录作为 FTP 共享目录,例如/var/ftp/pub
,然后设置该目录的权限,使其可以被 FTP 用户访问,可以使用命令mkdir p /var/ftp/pub
创建目录,使用命令chmod R 755 /var/ftp/pub
设置权限。
常见问题及解决方法
1、无法连接 FTP 服务器:可能是防火墙没有正确配置,或者 vsftpd 服务没有启动,检查防火墙状态和 vsftpd 服务的状态,确保它们都正常运行。
2、无法上传或下载文件:可能是用户没有足够的权限,或者目录的权限设置不正确,检查用户所属的用户组和目录的权限设置,确保用户具有相应的读写权限。
3、出现“500 OOPS: vsftpd: refusing to run with writable root inside prison”错误:这是因为 SELinux 的限制导致的,需要修改 SELinux 的配置或者禁用 SELinux。
FAQs
1、Q:如何在 CentOS 上安装 vsftpd?
A:在 CentOS 上安装 vsftpd,你需要执行以下命令:sudo yum install vsftpd y,这条命令会从 CentOS 的软件仓库中下载并安装 vsftpd 软件包及其依赖项,安装完成后,你可以使用 systemctl start vsftpd 命令启动 vsftpd 服务,并使用 systemctl enable vsftpd 命令将其设置为开机自启。
2、Q:如何配置 vsftpd 以允许本地用户登录但禁止匿名用户访问?
A:要实现这一目标,你需要编辑 vsftpd 的配置文件 /etc/vsftpd/vsftpd.conf,找到 anonymous_enable 选项并将其值设置为 NO,以禁用匿名用户访问,然后找到 local_enable 选项并将其值设置为 YES,以允许本地用户登录,保存配置文件后,重启 vsftpd 服务使配置生效。