Linux系统下如何正确打开21端口?FTP端口开启详细步骤教程

在Linux系统中,21端口是FTP(File Transfer Protocol,文件传输协议)的默认端口,主要用于文件传输服务,要开启21端口,通常需要安装并配置FTP服务,同时确保防火墙允许该端口的访问,本文将详细讲解在不同Linux发行版中开启21端口的完整步骤,包括服务安装、配置、防火墙设置及验证方法。

linux如何打开21端口

检查当前端口状态

在开启21端口前,首先需要确认当前系统中该端口是否已被占用或开放,可以使用以下命令检查:

  • 使用ss命令(推荐,netstat的替代工具):
    ss -tulnp | grep 21

    如果返回结果中包含“21”端口且状态为“LISTEN”,说明端口已被服务监听;若无输出,则端口未开放。

  • 使用netstat命令(较旧系统):
    netstat -tulnp | grep 21

安装FTP服务

Linux系统中常用的FTP服务器软件有vsftpd(Very Secure FTP Daemon)、proftpd等,其中vsftpd因安全性高、配置简单而被广泛使用,以下以vsftpd为例,分不同发行版介绍安装方法。

基于RHEL/CentOS的系统(如CentOS 7/8、Rocky Linux)

使用yumdnf包管理器安装:

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

基于Debian/Ubuntu的系统(如Ubuntu 20.04/22.04、Debian 11)

使用apt包管理器安装:

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

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

sudo systemctl status vsftpd

若显示“active (running)”,说明服务已启动;若未启动,可手动启动:

linux如何打开21端口

sudo systemctl start vsftpd

配置vsftpd服务

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

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

以下是常用配置参数及说明(可通过vimnano编辑器修改配置文件):

参数 说明 示例值
anonymous_enable 是否允许匿名用户登录 NO(禁止匿名,更安全)
local_enable 是否允许本地系统用户登录 YES
write_enable 是否允许FTP用户上传/修改文件 YES
local_umask 本地用户上传文件的默认权限掩码 022(上传后文件权限为644)
chroot_local_user 是否将用户限制在其家目录 YES(防止用户访问系统其他目录)
allow_writeable_chroot 是否允许被限制在家目录的用户写入 YES(需配合chroot_local_user=YES使用)
pasv_enable 是否启用被动模式(推荐,避免客户端防火墙问题) YES
pasv_min_port 被动模式使用的最小端口 10000
pasv_max_port 被动模式使用的最大端口 10100
userlist_enable 是否启用用户列表文件(仅允许列表中的用户登录) YES
userlist_file 用户列表文件路径 /etc/vsftpd/user_list

示例配置(允许本地用户登录,限制在家目录,启用被动模式):

# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许写入
write_enable=YES
# 本地用户上传文件权限掩码
local_umask=022
# 将用户限制在家目录
chroot_local_user=YES
# 允许被限制用户写入
allow_writeable_chroot=YES
# 启用被动模式
pasv_enable=YES
# 被动模式端口范围
pasv_min_port=10000
pasv_max_port=10100
# 启用用户列表(仅允许user_list中的用户登录)
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list

配置防火墙规则

Linux系统默认会启用防火墙(如CentOS的firewalld、Ubuntu的ufw),需手动开放21端口及被动模式端口(若启用)。

CentOS/RHEL系统(使用firewalld)

# 开放21端口(FTP控制端口)
sudo firewall-cmd --permanent --add-port=21/tcp
# 开放被动模式端口范围(10000-10100)
sudo firewall-cmd --permanent --add-port=10000-10100/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 查看已开放的端口
sudo firewall-cmd --list-ports

Ubuntu/Debian系统(使用ufw)

# 开放21端口
sudo ufw allow 21/tcp
# 开放被动模式端口范围
sudo ufw allow 10000:10100/tcp
# 启用ufw(若未启用)
sudo ufw enable
# 查看防火墙规则
sudo ufw status

创建FTP用户(可选)

如果需要本地系统用户通过FTP登录,可创建专用用户并设置密码,创建用户ftpuser

# 创建用户
sudo useradd -m -s /bin/bash ftpuser
# 设置密码
sudo passwd ftpuser

若启用了userlist_enable=YES,需将用户名添加到/etc/vsftpd/user_list文件中(每行一个用户):

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

启动并设置开机自启

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

linux如何打开21端口

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

验证21端口是否开放

检查端口监听状态

ss -tulnp | grep 21

若输出包含“LISTEN”且进程为vsftpd,说明21端口已开放。

使用FTP客户端测试

  • 命令行测试(本地测试):
    ftp localhost

    输入用户名和密码,若成功登录并显示ftp>提示符,说明服务正常。

  • 工具测试(如FileZilla):
    输入服务器IP、用户名、密码,端口选择21,若连接成功,说明配置正确。

常见问题处理

无法连接21端口,提示“Connection refused”

  • 检查vsftpd服务是否启动:sudo systemctl status vsftpd
  • 检查防火墙是否开放21端口:sudo firewall-cmd --list-ports(CentOS)或sudo ufw status(Ubuntu)。
  • 检查SELinux状态(CentOS):若SELinux为 enforcing 模式,可能需执行:
    sudo setsebool -P ftpd_full_access on

用户登录后无法切换目录,提示“500 OOPS: vsftpd: refusing to run with writable root inside chroot”

这是由于chroot_local_user=YES时,默认不允许用户家目录可写,解决方法是在配置文件中添加:

allow_writeable_chroot=YES

FAQs

Q: 开启21端口后,如何限制FTP用户只能访问特定目录,而不能访问系统其他文件?
A: 可以通过配置chroot_local_user=YES将用户限制在其家目录,若需限制到特定目录(如/var/ftp/share),可按以下步骤操作:

  1. 创建目标目录并设置权限:
    sudo mkdir -p /var/ftp/share
    sudo chown -R ftpuser:ftpuser /var/ftp/share
    sudo chmod -R 755 /var/ftp/share
  2. 修改/etc/passwd,将用户的家目录指向目标目录(例如将ftpuser的家目录从/home/ftpuser改为/var/ftp/share):
    sudo usermod -d /var/ftp/share ftpuser
  3. 重启vsftpd服务:sudo systemctl restart vsftpd

Q: 如何关闭匿名FTP访问,仅允许本地用户登录?
A: 编辑/etc/vsftpd/vsftpd.conf文件,确保以下参数配置正确:

anonymous_enable=NO  # 禁止匿名登录
local_enable=YES     # 允许本地用户登录

保存后重启vsftpd服务:sudo systemctl restart vsftpd,确保/etc/vsftpd/user_list文件中包含允许登录的用户名(若启用了用户列表功能)。

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

(0)
酷番叔酷番叔
上一篇 2025年8月30日 11:00
下一篇 2025年8月30日 11:20

相关推荐

  • Linux如何装回Windows?

    从Linux系统换回Windows系统需要谨慎操作,核心步骤包括数据备份、分区调整、系统安装及后续配置,以下是详细流程:准备工作:数据备份与安装介质制作数据备份(关键步骤)重装系统会清空系统分区数据,需提前备份所有重要文件,可将数据复制到移动硬盘、U盘或云存储(如百度网盘、OneDrive),注意:Linux系……

    2025年8月21日
    15700
  • Linux如何删除LV?操作步骤与注意事项详解

    在Linux系统中,逻辑卷(LV)作为LVM(逻辑卷管理)的核心组件,提供了灵活的存储管理能力,当需要释放存储空间、调整存储结构或废弃不再使用的逻辑卷时,删除LV是必要的操作,但删除LV涉及数据安全,需严格遵循操作流程并注意细节,避免误删导致数据丢失,以下将详细介绍Linux中删除LV的完整步骤、注意事项及特殊……

    2025年8月26日
    12700
  • Linux下如何拷贝文件夹?详细命令与操作步骤有哪些?

    在Linux系统中,拷贝文件夹是日常管理和运维中的常见操作,无论是备份重要数据、迁移文件还是同步目录结构,都需要掌握正确的拷贝方法,Linux下拷贝文件夹的方式多样,不同命令适用于不同场景,本文将详细介绍常用命令的使用方法、选项参数及注意事项,帮助用户根据实际需求选择最合适的拷贝方式,使用cp命令拷贝文件夹cp……

    2025年9月29日
    14300
  • Linux如何查看VG(卷组)的UUID?

    在Linux系统中,LVM(逻辑卷管理)是一种灵活的磁盘管理方式,其中VG(卷组)是LVM的核心组件之一,由一个或多个物理卷(PV)组成,用于创建逻辑卷(LV),每个VG都有一个唯一的UUID(通用唯一标识符),用于在系统中唯一标识该卷组,尤其在脚本编写、故障排查或自动化管理中,准确获取VG UUID至关重要……

    2025年9月9日
    10800
  • 为什么打印机无法连接?

    在Linux系统中共享打印机,能让多台设备(包括其他Linux、Windows或macOS)通过网络使用同一台打印设备,以下是详细的操作指南,遵循CUPS(Common UNIX Printing System) 这一标准方案,兼顾安全性与兼容性:通过USB或网络将打印机连接到Linux主机,在终端输入 lpi……

    2025年6月17日
    14400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信