HCRM博客

如何在CentOS上设置和使用FTP服务器?

CentOS 的 FTP

一、

文件传输协议(File Transfer Protocol,简称 FTP)是一种用于在网络上进行文件传输的协议,通过 FTP,可以在本地主机和远程主机之间传输文件,FTP 使用两个端口,控制端口(21)和数据端口(通常为 20),CentOS 中常用的 FTP 服务器软件是 vsftpd(Very Secure FTP Daemon),它以其安全性高、配置灵活而著称。

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

二、安装 vsftpd

1. 使用 YUM 安装

sudo yum install y vsftpd

2. 使用 RPM 手动安装

首先下载 vsftpd 及其依赖包:

sudo yum install yumplugindownloadonly
sudo yum install downloadonly downloaddir=/root/vsftpd_rpm vsftpd

然后安装下载的 RPM 包:

sudo rpm ivh /root/vsftpd_rpm/*.rpm

三、启动与设置开机自启

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

四、配置防火墙

开放 FTP 使用的端口:

sudo firewallcmd permanent addport=21/tcp
sudo firewallcmd permanent addservice=ftp
sudo firewallcmd reload

五、配置 SELinux

为了让 vsftpd 正常工作,需要设置 SELinux 允许其访问用户家目录:

如何在CentOS上设置和使用FTP服务器?-图2
(图片来源网络,侵权删除)
sudo setsebool P ftp_home_dir on
sudo setsebool P allow_ftpd_full_access on

六、配置文件详解

vsftpd 的主要配置文件是/etc/vsftpd/vsftpd.conf,以下是一些关键配置项的解释:

参数 说明
anonymous_enable=YES 允许匿名用户登录
local_enable=YES 允许本地用户登录
write_enable=YES 允许写操作
local_umask=022 本地用户新建文件的 umask 值
dirmessage_enable=YES 启用目录欢迎消息
xferlog_enable=YES 启用传输日志记录
connect_from_port_20=YES 使用端口 20 作为数据连接端口
xferlog_std_format=YES 使用标准格式记录传输日志
listen=NO 不监听 IPv4,只监听 IPv6
listen_ipv6=YES 监听 IPv6 地址
pam_service_name=vsftpd 指定 PAM 服务名称
userlist_enable=YES 启用用户列表功能
tcp_wrappers=YES 使用 tcp_wrappers

七、用户管理

1. 创建 FTP 用户

sudo adduser ftpuser

2. 修改用户密码

sudo passwd ftpuser

3. 限制用户目录访问

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

chroot_local_user=YES
allow_writeable_chroot=YES

4. 锁定用户在家目录

如何在CentOS上设置和使用FTP服务器?-图3
(图片来源网络,侵权删除)

将用户家目录设置为不可访问上级目录:

sudo usermod d /home/ftpuser ftpuser
sudo chown R ftpuser:ftpuser /home/ftpuser

八、常见问题及解决方案

1. 无法连接到 FTP 服务器

检查防火墙设置,确保开放了 21 端口。

确保 SELinux 设置允许 FTP 访问。

确认 vsftpd 服务已经启动。

2. 500 错误

通常是由于权限问题或路径错误引起的,检查用户目录权限和配置文件中的路径设置。

3. 无法上传文件

确保write_enable 设置为YES

确保目标目录具有写权限。

九、相关问答FAQs

Q1: 如何更改 FTP 服务的默认端口号?

A1: 编辑/etc/vsftpd/vsftpd.conf,找到并修改以下行:

listen=YES
listen_port=2121

然后重启 vsftpd:

sudo systemctl restart vsftpd

同时在防火墙中开放新的端口:

sudo firewallcmd permanent addport=2121/tcp
sudo firewallcmd reload

Q2: 如何禁止根用户通过 FTP 登录?

A2: 编辑/etc/vsftpd/vsftpd.conf,确保以下行未被注释且设置为NO

allow_root_login=NO

然后重启 vsftpd:

sudo systemctl restart vsftpd
分享:
扫描分享到社交APP
上一篇
下一篇