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

相关推荐

  • 如何在linux下切换输入法

    Linux下,可通过快捷键(如Ctrl+空格)切换输入法,或使用

    2025年8月19日
    3400
  • linux t进程如何处理

    nux 中终止进程可通过 kill 命令,后跟进程 ID,也可使用 `kill

    2025年8月18日
    3900
  • Linux你了解吗?

    Linux是一种开源、类Unix的操作系统内核,它由林纳斯·托瓦兹创建,是众多操作系统(称为Linux发行版)的核心基础,这些系统以其稳定性、安全性和高度可定制性著称,广泛应用于服务器、超级计算机、嵌入式设备和桌面环境。

    2025年7月23日
    4500
  • 测试环境分区混乱?

    环境准备阶段硬件选择最低配置:双核CPU/2GB内存/20GB存储(适用于基础服务测试)推荐配置:四核CPU/4GB内存/SSD存储(支持容器化及多服务部署)云服务器替代方案:阿里云ECS/AWS EC2(新手建议选择Ubuntu LTS镜像)Linux发行版选择- Ubuntu LTS (22.04):社区支……

    2025年6月15日
    6100
  • Linux打包目录的操作方法有哪些?

    在Linux系统中,打包目录是将多个文件或目录合并为一个文件的过程,通常与压缩结合使用以减少存储空间占用,本文将详细介绍Linux中打包目录的常用方法、命令选项及实际应用场景,帮助用户高效完成文件归档任务,打包与压缩的基本概念打包(Archiving)指将多个文件或目录合并成一个单一文件,便于传输或存储,常见的……

    2025年10月7日
    1100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信