linux如何安装ftp服务

在Linux系统中,FTP(File Transfer Protocol)服务是一种常用的文件传输方式,适用于服务器间文件共享、用户文件上传下载等场景,本文将以主流的FTP服务器软件vsftpd(Very Secure FTP Daemon)为例,详细讲解在Linux系统中安装、配置FTP服务的完整流程,涵盖环境准备、软件安装、参数配置、用户管理、防火墙设置及测试验证等环节,帮助读者快速搭建安全稳定的FTP服务。

linux如何安装ftp服务

安装前环境准备

在开始安装FTP服务前,需确保系统满足基本条件,并完成以下准备工作:

  1. 系统环境检查:确保Linux系统已正确安装,本文以CentOS 7/8和Ubuntu 20.04为例,其他发行版命令略有差异,但核心逻辑一致。
  2. 网络连接:确保系统可访问外部网络,用于下载安装包(若使用离线安装,需提前下载rpm/deb包)。
  3. 管理员权限:安装软件及修改系统配置需root权限或sudo权限。

安装vsftpd软件包

vsftpd是Linux下安全性较高、性能稳定的FTP服务器软件,支持匿名访问、本地用户访问、虚拟用户等多种模式,推荐作为FTP服务首选。

CentOS/RHEL系统(使用yum/dnf安装)

# 更新软件包缓存
sudo yum update -y
# 安装vsftpd
sudo yum install vsftpd -y

Ubuntu/Debian系统(使用apt安装)

# 更新软件包列表
sudo apt update
# 安装vsftpd
sudo apt install vsftpd -y

安装完成后,vsftpd服务会自动启动,可通过以下命令检查状态:

sudo systemctl status vsftpd

配置vsftpd核心参数

vsftpd的配置文件位于/etc/vsftpd/vsftpd.conf,通过修改该文件可控制FTP服务的各项行为,建议先备份原配置文件,再进行修改:

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

以下是关键参数的说明及配置建议,可通过vimnano编辑器修改配置文件:

参数名 含义 默认值 建议值 说明
anonymous_enable 是否允许匿名用户访问 YES NO 生产环境建议关闭,避免安全风险
local_enable 是否允许本地用户登录 YES YES 需开启以支持系统用户访问
write_enable 是否允许文件上传/修改 NO YES 根据需求开启,需配合权限控制
chroot_local_user 是否限制用户仅访问家目录 NO YES 提升安全性,防止用户越权访问
allow_writeable_chroot 是否允许chroot目录可写 NO YES(需配合chroot_local_user) 解决chroot目录下无法上传的问题
pasv_enable 是否启用被动模式 NO YES 被动模式可穿透防火墙,建议开启
pasv_min_port 被动模式最小端口 0 1024 需与防火墙规则配合,避免端口冲突
pasv_max_port 被动模式最大端口 0 65535 同上,建议设置1024-65535
userlist_enable 是否启用用户列表文件 YES YES 结合userlist_file限制登录用户
userlist_file 用户列表文件路径 /etc/vsftpd/user_list /etc/vsftpd/user_list 仅列表中用户可登录(若userlist_deny=YES)

示例配置/etc/vsftpd/vsftpd.conf):

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=65535
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO  # 仅允许user_list中的用户登录

创建FTP用户并设置权限

创建本地用户

若使用本地用户登录FTP,需创建系统用户并设置密码,例如创建用户ftpuser,家目录为/home/ftpuser

linux如何安装ftp服务

# 创建用户(家目录自动生成)
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
# 设置用户密码
sudo passwd ftpuser

说明-s /sbin/nologin表示禁止用户通过SSH登录,仅允许FTP访问,提升安全性。

设置用户目录权限

确保FTP用户对其家目录有读写权限,且家目录及其上级目录权限设置正确(避免chroot失败):

# 设置家目录所有者为ftpuser
sudo chown -R ftpuser:ftpuser /home/ftpuser
# 设置家目录权限(755,所有者可读写执行,其他用户可读执行)
sudo chmod -R 755 /home/ftpuser

配置用户列表(可选)

若启用了userlist_deny=NO,需将允许登录的用户添加到/etc/vsftpd/user_list文件中(每行一个用户名):

echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list

防火墙与SELinux配置

防火墙设置

FTP服务默认使用20(数据端口)和21(控制端口),若开启被动模式,还需开放pasv_min_portpasv_max_port的端口范围。

CentOS/RHEL(firewalld)

# 开放FTP服务(自动开放20和21端口)
sudo firewall-cmd --permanent --add-service=ftp
# 开放被动模式端口范围(以1024-65535为例)
sudo firewall-cmd --permanent --add-port=1024-65535/tcp
# 重载防火墙规则
sudo firewall-cmd --reload

Ubuntu/Debian(ufw)

# 开放20和21端口
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
# 开放被动模式端口范围
sudo ufw allow 1024:65535/tcp
# 启用防火墙(若未启用)
sudo ufw enable

SELinux配置(CentOS/RHEL)

若系统启用SELinux,需设置允许FTP访问家目录,否则可能导致chroot失败或无法上传文件:

linux如何安装ftp服务

# 设置SELinux布尔值,允许FTP用户家目录写入
sudo setsebool -P ftpd_full_access on
# 查看SELinux状态
sestatus | grep ftpd_full_access

启动vsftpd服务并测试

启动并设置开机自启

# 启动vsftpd服务
sudo systemctl start vsftpd
# 设置开机自启
sudo systemctl enable vsftpd

测试FTP服务

(1)命令行测试(使用ftp客户端)

# 连接本机FTP服务(用户名为ftpuser,密码为设置的密码)
ftp localhost

登录成功后,可使用以下命令:

  • put:上传文件
  • get:下载文件
  • ls:列出文件
  • bye:退出

(2)图形界面测试(使用FileZilla)

  • 主机:服务器IP地址
  • 端口:21
  • 用户名:ftpuser
  • 密码:用户密码
  • 协议:FTP(若需加密,可选择FTPS,需额外配置SSL证书)

若连接失败,检查以下问题:

  • 服务是否启动(systemctl status vsftpd
  • 防火墙是否开放端口(firewall-cmd --list-ports
  • 用户是否在user_list中(若启用用户列表)
  • SELinux是否阻止访问(grep avc /var/log/audit/audit.log

常见问题与维护

FAQs

问题1:FTP用户登录后无法上传文件,报错“550 Permission denied”?
解答

  1. 检查write_enable是否在配置文件中设置为YES
  2. 确认用户家目录权限为755(chmod 755 /home/ftpuser),文件权限为644(chmod 644 /home/ftpfile);
  3. 若使用SELinux,执行setsebool -P ftpd_full_access on允许写入;
  4. 检查allow_writeable_chroot是否设置为YES(需配合chroot_local_user=YES)。

问题2:如何配置FTP被动模式,解决客户端连接超时问题?
解答
被动模式(Passive Mode)可解决NAT环境下FTP客户端连接问题,配置步骤如下:

  1. vsftpd.conf中启用被动模式:
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=65535
  2. 防火墙开放被动模式端口范围(如1024-65535);
  3. 客户端(如FileZilla)选择“被动模式”(Passive Mode),连接即可正常传输文件。

通过以上步骤,即可完成Linux系统中FTP服务的安装与配置,实际应用中,可根据需求调整参数(如限制用户带宽、启用SSL加密等),并定期检查日志文件(/var/log/vsftpd.log)排查问题,确保服务稳定运行。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33198.html

(0)
酷番叔酷番叔
上一篇 2025年9月30日 15:08
下一篇 2025年9月30日 15:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信