Linux系统如何开启FTP服务?

在Linux系统中,FTP(File Transfer Protocol)是一种常用的文件传输协议,用于在客户端和服务器之间进行文件上传和下载,本文将以CentOS和Ubuntu两大主流发行版为例,详细介绍如何通过vsftpd(Very Secure FTP Daemon)这一轻量级、安全的FTP服务器软件开启FTP服务,涵盖安装、配置、权限管理、防火墙设置及常见问题排查等关键步骤。

linux如何开启ftp服务

准备工作:确认系统环境与需求

在开始配置前,需明确以下几点:

  1. 系统版本:本文以CentOS 7/8(使用yum/dnf包管理器)和Ubuntu 20.04/22.04(使用apt包管理器)为例,其他发行版命令可能略有差异。
  2. 网络连接:确保服务器可正常访问外网,以便下载软件包。
  3. 用户权限:建议使用root用户或具有sudo权限的用户进行操作,避免权限不足导致配置失败。

安装vsftpd软件包

vsftpd是Linux下最常用的FTP服务器之一,以其安全性和稳定性著称。

CentOS/RHEL系统

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

Ubuntu/Debian系统

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

安装完成后,可通过以下命令检查vsftpd是否成功安装:

vsftpd --version

启动并设置开机自启

安装完成后,需启动vsftpd服务并设置为开机自启,确保服务器重启后服务依然可用。

CentOS/RHEL系统(使用systemctl)

# 启动vsftpd服务
sudo systemctl start vsftpd
# 设置开机自启
sudo systemctl enable vsftpd
# 检查服务状态(确保显示active (running))
sudo systemctl status vsftpd

Ubuntu/Debian系统(同样使用systemctl)

命令与CentOS一致,具体操作参考上述内容。

配置vsftpd核心参数

vsftpd的配置文件位于/etc/vsftpd/vsftpd.conf,默认配置较为严格,需根据需求修改关键参数,建议先备份原配置文件:

linux如何开启ftp服务

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

以下为常用配置参数及其作用,可通过sudo vim /etc/vsftpd/vsftpd.conf编辑文件,根据需求取消注释或修改值:

参数名 默认值 说明
anonymous_enable NO 是否允许匿名用户登录(默认禁止,建议保持关闭)
local_enable YES 是否允许本地系统用户登录
write_enable YES 是否允许本地用户上传、修改文件(需配合write_list参数控制)
local_umask 022 本地用户上传文件后的默认权限掩码(例如022表示644权限)
dirmessage_enable YES 是否显示目录消息(message文件内容)
xferlog_enable YES 是否启用传输日志(记录到/var/log/xferlog)
connect_from_port_20 YES 是否使用20端口进行数据连接(主动模式需开启)
chroot_local_user NO 是否将本地用户限制在其家目录中(安全关键,建议开启)
allow_writeable_chroot NO 是否允许chroot目录可写(需配合chroot_local_user=YES,否则可能报错)
pasv_enable NO 是否启用被动模式(客户端防火墙环境建议开启)
pasv_min_port (空) 被动模式最小端口(建议设置10000-20000范围内,避免冲突)
pasv_max_port (空) 被动模式最大端口(与pasv_min_port组成端口范围)
userlist_enable YES 是否启用用户列表文件(/etc/vsftpd/user_list)
userlist_file /etc/vsftpd/user_list 用户列表文件路径
tcp_wrappers YES 是否使用TCP Wrappers主机访问控制(建议保持默认,通过hosts.allow/deny控制)

关键配置示例(基础安全配置):

# 禁止匿名用户登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许用户上传文件
write_enable=YES
# 限制用户在家目录(安全措施)
chroot_local_user=YES
allow_writeable_chroot=YES
# 启用被动模式(避免客户端防火墙问题)
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=20000
# 禁止root用户登录(可选)
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES

保存配置文件后,重启vsftpd服务使配置生效:

sudo systemctl restart vsftpd

创建FTP用户并设置权限

默认情况下,系统用户可通过FTP登录,但出于安全考虑,建议为FTP服务创建专用用户,并限制其访问目录。

创建FTP专用用户

# 创建用户(例如ftpuser),家目录为/ftpdata(可自定义)
sudo useradd -m -d /ftpdata -s /sbin/nologin ftpuser
# 设置用户密码
sudo passwd ftpuser

说明-s /sbin/nologin表示禁止用户通过SSH等方式登录系统,仅允许FTP访问。

设置用户目录权限

# 创建FTP数据目录(若不存在)
sudo mkdir -p /ftpdata
# 设置目录所有者为ftpuser,权限为755
sudo chown -R ftpuser:ftpuser /ftpdata
sudo chmod -R 755 /ftpdata

限制用户访问范围(可选)

如果需要将用户限制在指定子目录(例如/ftpdata/user1),可通过以下方式实现:

# 创建子目录并设置权限
sudo mkdir -p /ftpdata/user1
sudo chown -R ftpuser:ftpuser /ftpdata/user1
sudo chmod -R 755 /ftpdata/user1
# 修改用户家目录为子目录(需重启服务生效)
sudo usermod -d /ftpdata/user1 ftpuser

配置防火墙与SELinux

防火墙配置

FTP服务默认使用21端口(命令连接),若启用被动模式,还需开放配置的端口范围(如10000-20000)。

linux如何开启ftp服务

CentOS/RHEL(firewalld)

# 开放FTP服务(自动处理21端口和数据连接端口)
sudo firewall-cmd --permanent --add-service=ftp
# 开放被动模式端口范围(若自定义了端口范围需单独开放)
sudo firewall-cmd --permanent --add-port=10000-20000/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload

Ubuntu(ufw)

# 开放21端口(FTP命令连接)
sudo ufw allow 21/tcp
# 开放被动模式端口范围
sudo ufw allow 10000:20000/tcp
# 启用防火墙(若未启用)
sudo ufw enable

SELinux配置(仅CentOS/RHEL)

CentOS默认开启SELinux,可能阻止FTP服务访问用户目录,需设置布尔值允许FTP写入:

# 查看当前SELinux状态(应为 enforcing 或 permissive)
sestatus
# 设置允许FTP用户访问家目录(-P表示永久生效)
sudo setsebool -P ftpd_full_access on

测试FTP服务连接

命令行测试(Linux客户端)

# 安装ftp客户端(Ubuntu/Debian)
sudo apt install ftp -y
# 连接FTP服务器(替换为服务器IP)
ftp 192.168.1.100
# 输入用户名和密码,登录后可通过以下命令测试:
ls          # 列出文件
put test.txt # 上传文件(需write_enable=YES)
get test.txt # 下载文件
bye         # 退出

图形化工具测试(Windows客户端)

推荐使用FileZilla,输入服务器IP、用户名、密码,端口选择21(主动模式)或自动检测(被动模式),连接成功后即可拖拽文件传输。

常见问题排查

  1. 连接超时或拒绝连接:检查防火墙是否开放21端口和被动模式端口,确认vsftpd服务是否运行(systemctl status vsftpd)。
  2. 530 Login incorrect错误:确认用户名密码正确,检查/etc/vsftpd/ftpusers/etc/vsftpd/user_list文件中是否包含该用户(默认禁止root登录)。
  3. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误:修改allow_writeable_chroot=YES
  4. 被动模式连接失败:确认防火墙开放了pasv_min_portpasv_max_port设置的端口范围,客户端选择被动模式。

相关问答FAQs

问题1:如何禁止特定用户通过FTP登录?
解答:可通过/etc/vsftpd/user_list文件控制,编辑该文件,将需要禁止的用户名添加到一行(每行一个用户),并在vsftpd.conf中确保userlist_enable=YESuserlist_deny=YES(默认禁止列表中的用户登录),重启vsftpd服务即可生效。

问题2:如何配置匿名用户只读访问?
解答:在vsftpd.conf中设置anonymous_enable=YES,并添加以下参数限制匿名用户权限:

anon_upload_enable=NO      # 禁止匿名用户上传
anon_mkdir_write_enable=NO # 禁止匿名用户创建目录
anon_other_write_enable=NO # 禁止匿名用户删除/重命名文件

重启服务后,匿名用户可下载文件但无法修改。

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

(0)
酷番叔酷番叔
上一篇 2025年9月30日 12:57
下一篇 2025年9月30日 13:12

相关推荐

  • Ubuntu还是Debian更合适?

    Linux安装网卡驱动详细指南为什么需要手动安装网卡驱动?Linux内核通常自带主流网卡驱动(如Intel、Realtek常见型号),但以下情况需手动安装:新硬件兼容滞后:新型号网卡尚未被内核支持厂商专属驱动:部分企业级网卡(如Broadcom、某些无线网卡)需专用驱动功能限制:开源驱动可能缺少高级功能(如SR……

    2025年7月26日
    12200
  • 如何快速安装TigerVNC详细步骤

    在Linux服务器管理中,图形界面连接能显著提升操作效率,尤其适合桌面环境管理、可视化软件调试等场景,以下是三种主流图形连接方法的详细操作指南,所有步骤均基于Linux发行版(如Ubuntu/CentOS)验证,注重安全性与易用性,准备工作服务器端配置安装桌面环境(以GNOME为例): # Ubuntu/Deb……

    2025年7月17日
    11200
  • pxelinux.0如何实现网络启动?

    pxelinux.0 是 Syslinux 项目中的核心网络引导文件,用于 PXE(预启动执行环境)启动流程,它存储在 TFTP 服务器上,当客户端通过网卡启动时,会从服务器加载该文件,进而读取配置文件(如 pxelinux.cfg/default)决定启动选项(如加载 Linux 内核、Live CD 镜像等……

    2025年6月17日
    13100
  • Linux文件权限设置的具体方法是什么?

    Linux文件权限是系统安全的核心机制,通过控制不同用户对文件的访问和操作能力,确保数据不被未授权访问或篡改,本文将详细讲解Linux文件权限的设置方法,包括基本概念、表示方式、命令操作及注意事项,Linux文件权限的基本概念Linux文件权限分为三类,分别针对不同用户群体:读(Read,r):允许查看文件内容……

    2025年9月20日
    9800
  • Linux下修改IP地址的具体步骤是什么?命令行与配置文件操作

    在Linux系统中修改IP地址是日常运维和开发中常见的操作,根据不同的Linux发行版(如CentOS、Ubuntu等)和网络管理工具(如NetworkManager、netplan等),操作方法略有差异,本文将详细介绍几种主流的IP地址修改方法,包括临时修改和永久修改,并说明注意事项及常见问题排查,使用传统命……

    2025年8月31日
    13300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信