HCRM博客

如何在CentOS上配置FTP服务器?

CentOS FTP配置详解

一、FTP简介

文件传输协议(File Transfer Protocol, FTP)是一种用于在计算机络上进行文件传输的标准网络协议,它使用TCP生成一个控制通道(端口21)和一个数据通道(端口20),通过FTP,用户可以在不同主机之间上传和下载文件,FTP有三种主要用户类型:本地用户、Guest用户和匿名用户,匿名用户通常使用“anonymous”作为用户名,主要用于公共文件的下载。

如何在CentOS上配置FTP服务器?-图1
(图片来源网络,侵权删除)

二、软件包安装

1. 安装vsftpd

vsftpd(Very Secure FTP Daemon)是Linux系统中常用的FTP服务器软件,可以通过以下命令安装:

yum install y vsftpd

或者使用dnf(适用于CentOS 8):

dnf install y vsftpd

2. 启动与开机自启设置

安装完成后,启动vsftpd服务并设置为开机自启:

systemctl start vsftpd
systemctl enable vsftpd

3. 防火墙配置

如何在CentOS上配置FTP服务器?-图2
(图片来源网络,侵权删除)

开放FTP所需的端口(21为控制端口,20为数据端口):

firewallcmd permanent addport=21/tcp
firewallcmd permanent addport=20/tcp
firewallcmd reload

三、查看与编辑配置文件

vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,建议在编辑前备份原始配置文件:

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

编辑配置文件:

nano /etc/vsftpd/vsftpd.conf

四、测试默认配置

1. 匿名登录测试

默认情况下,vsftpd允许匿名登录,根目录为/var/ftp,可以使用FTP客户端工具或命令行测试:

ftp [服务器IP]

输入anonymous作为用户名,直接按回车以空密码登录,成功登录后,将看到类似如下信息:

如何在CentOS上配置FTP服务器?-图3
(图片来源网络,侵权删除)
220 (vsFTPd 3.0.2)
Name ([服务器IP]:(none)): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> /home/ftpuser
257 "/home/ftpuser" is the current directory

2. 列出并进入目录

ftp> ls
ftp> cd pub
ftp> ls

五、修改默认配置

1. 禁用匿名登录

将配置文件中的anonymous_enable设为NO

anonymous_enable=NO

2. 启用本地用户登录

确保local_enable设为YES

local_enable=YES
write_enable=YES
chroot_local_user=YES

这些设置允许本地用户登录并限制他们只能访问其主目录。

3. 修改用户主目录权限

确保用户主目录及其子目录具有适当的权限,

sudo chmod 755 /home/ftpuser

4. 重启服务

每次修改配置文件后,重启vsftpd服务使更改生效:

systemctl restart vsftpd

六、配置虚拟用户FTP服务器(可选)

为了更高的安全性,可以配置虚拟用户,这需要创建专门的用户数据库文件,并在vsftpd配置文件中引用这些文件,具体步骤如下:

1. 创建用户数据库文件

编辑/etc/pam_vsftpd/vsftpd文件,添加虚拟用户信息:

cat /etc/pam_vsftpd/vsftpd
tutorial ftpdata 133133133133133133 password

2. 配置vsftpd使用此数据库文件

编辑/etc/vsftpd/vsftpd.conf,添加以下行:

guest_enable=YES
virtual_use_local_privs=YES
guest_username=ftpdata

3. 重启服务

保存并关闭文件后,重启vsftpd服务:

systemctl restart vsftpd

七、常见问题及解决方案

1. SELinux问题

如果遇到SELinux导致的连接问题,可以临时关闭SELinux:

setenforce 0

或者修改SELinux配置以允许FTP服务:

setsebool P ftp_home_dir on
setsebool P allow_ftpd_full_access on

2. 防火墙未开放相关端口

确保防火墙已开放FTP所需的端口(21和20):

firewallcmd permanent addservice=ftp
firewallcmd reload

3. 无法连接到FTP服务器

如果客户端无法连接到FTP服务器,首先检查服务器是否启动正常,然后确认防火墙设置是否正确,检查配置文件中的绑定地址和端口是否正确。

1. 如何更改FTP的欢迎语?

/etc/vsftpd/vsftpd.conf中添加或修改以下行:

ftpd_banner=Welcome to my FTP server.

2. 如何限制本地用户的访问权限?

可以通过配置chroot_local_userlocal_root选项来限制用户只能访问其主目录:

chroot_local_user=YES
local_root=/home/$USER

3. 如何允许匿名用户上传文件?

虽然不推荐,但可以通过以下设置实现:

anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
分享:
扫描分享到社交APP
上一篇
下一篇