Linux系统如何开启FTP的21端口?

在Linux系统中,21端口是FTP(File Transfer Protocol,文件传输协议)服务的默认端口,开启21端口通常意味着需要安装并配置FTP服务,同时确保防火墙允许该端口的流量访问,本文将以主流的FTP服务器软件vsftpd(Very Secure FTP Daemon)为例,详细说明在Linux系统中开启21端口的完整步骤,包括安装服务、配置防火墙、修改参数设置及测试连接等关键环节,同时针对不同Linux发行版(如CentOS/RHEL和Ubuntu/Debian)的差异提供对应操作。

linux 如何开启21宽口

安装FTP服务软件vsftpd

vsftpd是一款轻量级、安全的FTP服务程序,广泛应用于Linux系统,是开启21端口的基础,不同Linux发行版的包管理器不同,安装命令略有差异。

CentOS/RHEL系统

使用yumdnf包管理器安装(CentOS 7及以下版本使用yum,CentOS 8及以上版本使用dnf):

# 更新软件包缓存
sudo yum update -y  # CentOS 7及以下
sudo dnf update -y  # CentOS 8及以上
# 安装vsftpd
sudo yum install vsftpd -y  # CentOS 7及以下
sudo dnf install vsftpd -y  # CentOS 8及以上

Ubuntu/Debian系统

使用apt包管理器安装:

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

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

sudo systemctl status vsftpd

若显示“active (running)”,则表示服务已启动;若未启动,可使用sudo systemctl start vsftpd手动启动。

配置防火墙开放21端口

Linux系统默认启用防火墙(如CentOS 7+的firewalld、Ubuntu的ufw),需手动开放21端口及FTP被动模式所需的端口范围(避免主动/被动模式连接问题)。

CentOS/RHEL(firewalld)

# 开放21端口(TCP协议)
sudo firewall-cmd --permanent --add-port=21/tcp
# 开放FTP被动模式端口范围(示例:50000-50100,可根据需求修改)
sudo firewall-cmd --permanent --add-port=50000-50100/tcp
# 重新加载防火墙配置使规则生效
sudo firewall-cmd --reload
# 查查已开放的端口确认
sudo firewall-cmd --list-ports

Ubuntu/Debian(ufw)

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

注意:FTP协议的主动模式(Active Mode)和被动模式(Passive Mode)对端口需求不同,主动模式需客户端连接服务器的21端口(命令端口)和20端口(数据端口),但现代防火墙通常限制主动模式;被动模式下,服务器动态分配数据端口(如上述50000-50100),客户端主动连接这些端口,更适合NAT环境,因此建议开启被动模式并配置端口范围。

linux 如何开启21宽口

修改vsftpd配置文件

vsftpd的核心配置文件为/etc/vsftpd/vsftpd.conf,需根据需求修改关键参数,确保21端口可正常访问且符合安全策略。

备份原始配置文件

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

编辑配置文件

使用vinano编辑器打开文件:

sudo vi /etc/vsftpd/vsftpd.conf

关键参数说明及修改建议

以下为vsftpd.conf中与21端口开启及功能相关的核心参数,可根据需求调整:

参数名 默认值 说明 建议值
listen YES 是否监听IPv4端口 保持YES(若需IPv6支持,添加listen_ipv6=YES
anonymous_enable YES 是否允许匿名用户登录 NO(禁止匿名,提升安全性)
local_enable YES 是否允许本地用户登录 YES(允许系统用户通过FTP访问)
write_enable YES 是否允许文件写入(上传/删除等) 根据需求设置(如仅上传则保持YES)
chroot_local_user NO 是否限制本地用户仅能访问家目录 YES(防止用户越权访问系统目录)
allow_writeable_chroot NO 是否允许chroot目录可写(需配合chroot_local_user=YES YES(若用户需上传文件)
pasv_enable NO 是否开启被动模式 YES(推荐开启,解决防火墙兼容问题)
pasv_min_port 0 被动模式最小端口 50000(与防火墙开放的端口范围一致)
pasv_max_port 0 被动模式最大端口 50100(与防火墙开放的端口范围一致)
userlist_enable YES 是否启用用户列表文件 YES(结合userlist_file限制登录用户)
tcp_wrappers YES 是否使用TCP Wrappers主机访问控制 YES(可限制特定IP访问)

示例配置片段

# 监听IPv4端口
listen=YES
# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许文件写入
write_enable=YES
# 限制用户仅访问家目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 开启被动模式并设置端口范围
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
# 启用用户列表(仅允许列表中的用户登录,需创建/etc/vsftpd/user_list文件)
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO(NO表示仅允许列表中的用户,YES表示禁止列表中的用户)

创建用户列表文件(若启用用户列表限制)

# 编辑用户列表,每行一个用户名(如允许用户ftpuser登录)
sudo vi /etc/vsftpd/user_listftpuser

重启vsftpd服务使配置生效

sudo systemctl restart vsftpd

创建FTP用户并配置权限

为提升安全性,建议创建专用FTP用户,而非直接使用系统root用户。

创建用户并设置密码

# 创建用户ftpuser,家目录为/home/ftpuser(可根据需求修改)
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
# 设置用户密码
sudo passwd ftpuser

参数说明:-m表示创建家目录;-d指定家目录;-s /sbin/nologin限制用户仅能通过FTP登录,无法直接SSH登录系统。

设置家目录权限

确保FTP用户对家目录有读写权限:

sudo chmod 755 /home/ftpuser  # 所有者可读写执行,组用户和其他用户可读执行
sudo chown ftpuser:ftpuser /home/ftpuser  # 设置所有者为ftpuser用户

处理SELinux(仅CentOS/RHEL系统)

CentOS系统默认启用SELinux,可能会阻止FTP服务访问文件系统,需配置SELinux规则。

linux 如何开启21宽口

检查SELinux状态

sestatus

若显示“enabled”,则需执行以下操作。

设置SELinux允许FTP访问

# 设置布尔值,允许FTP用户访问家目录
sudo setsebool -P ftpd_full_access on
# 或使用更严格的规则(推荐)
sudo setsebool -P ftp_home_dir on
sudo setsebool -P allow_ftpd_full_access on

检查vsftpd进程的SELinux上下文

ps auxZ | grep vsftpd

确保上下文为system_u:system_r:ftpd_t:s0,若不符,可通过restorecon -R /home/ftpuser修复。

测试FTP连接

命令行测试(Linux/macOS)

ftp localhost
# 或指定IP:ftp 192.168.1.100

输入用户名(ftpuser)和密码,若成功登录,显示“ftp>”提示符,可通过put(上传)、get(下载)等命令测试文件传输。

图形化工具测试(Windows/Linux/macOS)

使用FileZilla、WinSCP等FTP客户端,输入服务器IP、用户名、密码及端口(21),连接后测试文件上传下载功能。

常见问题排查

  • 连接被拒绝:检查vsftpd服务状态(systemctl status vsftpd)、防火墙规则(firewall-cmd --list-portsufw status)、SELinux设置(sealert -l /var/log/audit/audit.log查看日志)。
  • 无法上传文件:检查write_enable=YESallow_writeable_chroot=YES、目录权限(chmod 755)及SELinux布尔值(ftpd_full_access)。
  • 被动模式连接失败:确认防火墙开放了pasv_min_portpasv_max_port指定的端口范围,并在客户端启用被动模式(FileZilla默认开启)。

相关问答FAQs

Q1:为什么开启了21端口并配置了vsftpd,但FTP客户端仍提示“连接被拒绝”?
A:可能原因包括:

  1. vsftpd服务未启动:执行sudo systemctl start vsftpd并设置开机自启(sudo systemctl enable vsftpd);
  2. 防火墙未开放21端口:检查firewall-cmd --list-ports(CentOS)或ufw status(Ubuntu),确认21端口及被动模式端口范围已添加;
  3. SELinux阻止:CentOS系统下执行sudo setsebool -P ftpd_full_access on,或查看/var/log/audit/audit.log定位SELinux告警;
  4. 客户端网络问题:确认客户端可ping通服务器IP,且本地防火墙未阻止访问。

Q2:如何限制FTP用户仅能访问指定目录(如/var/ftp/share),而不能访问其他系统目录?
A:可通过以下步骤实现:

  1. 创建共享目录并设置权限:
    sudo mkdir -p /var/ftp/share
    sudo chmod 755 /var/ftp/share
    sudo chown ftpuser:ftpuser /var/ftp/share  # 设置FTP用户为所有者
  2. 修改vsftpd配置文件,禁用用户家目录限制,并设置本地用户根目录:
    sudo vi /etc/vsftpd/vsftpd.conf
    # 修改或添加以下参数:
    chroot_local_user=YES
    allow_writeable_chroot=YES
    local_root=/var/ftp/share  # 指定所有本地用户的FTP根目录
  3. 重启vsftpd服务:sudo systemctl restart vsftpd
    用户登录后将仅能访问/var/ftp/share目录及其子目录,无法跳出该目录范围。

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

(0)
酷番叔酷番叔
上一篇 2025年10月4日 10:36
下一篇 2025年10月4日 11:05

相关推荐

  • Linux系统如何正确挂载exfat格式分区?

    Linux系统默认可能不支持exfat文件系统,因为exfat有专利限制,早期Linux内核未集成其开源驱动,尽管后期专利到期后内核已支持,但多数发行版仍需手动安装工具包才能实现挂载,exfat是微软开发的文件系统,广泛用于U盘、SD卡等移动存储设备,因其支持大容量文件和分区,且兼容Windows和macOS……

    2025年8月25日
    9300
  • Linux系统中释放文件句柄的方法有哪些?资源管理技巧

    在Linux系统中,文件句柄(File Handle)是操作系统用于管理打开文件、网络连接等资源的标识符,每个进程能打开的句柄数量受系统限制,当句柄耗尽时,系统无法创建新的文件或连接,可能导致服务异常甚至崩溃,因此及时释放无用句柄至关重要,以下是Linux释放文件句柄的详细方法和操作步骤,查看当前文件句柄使用情……

    2025年8月30日
    7500
  • Linux系统中如何切换中英文输入?

    在Linux系统中,中英文切换是日常使用中常见的需求,主要分为图形界面和命令行环境两种场景,图形界面下的切换通常依赖输入法框架和桌面环境设置,而命令行环境则通过系统语言变量实现,以下从不同场景出发,详细介绍具体操作方法,图形界面下的中英文切换图形界面的中英文切换主要涉及输入法切换(中文输入法与英文键盘模式切换……

    2025年10月1日
    7800
  • vbox如何让cdlinux使用无线网卡?

    在VirtualBox虚拟机中运行CDLinux时,若需使用无线网卡进行网络连接(如在线更新、远程维护或网络测试),需正确配置虚拟机网络模式及系统内无线参数,以下是详细操作步骤,涵盖VirtualBox设置、CDLinux驱动加载、无线网络连接及故障排查,确保虚拟机通过无线网卡正常联网,VirtualBox虚拟……

    2025年9月28日
    7400
  • Linux如何配置服务实现开机自启动?

    Linux系统作为服务器和应用部署的主流平台,许多关键服务(如数据库、Web服务器、监控工具等)需要在系统启动后自动运行,以确保服务的持续可用性,开机自启动服务的配置是Linux系统管理中的基础技能,不同版本的Linux系统可能采用不同的初始化系统(如Systemd、SysVinit、Upstart等),导致配……

    2025年9月16日
    7300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信