Linux系统如何开启FTP服务?操作步骤有哪些?

在Linux系统中,FTP(File Transfer Protocol)服务是一种常用的文件传输方式,特别适合在不同系统间共享文件,本文将以最常用的FTP服务器软件vsftpd(Very Secure FTP Daemon)为例,详细介绍如何在Linux系统中安装、配置和启动FTP服务,包括用户管理、防火墙设置及常见问题排查等步骤。

linux如何打开ftp服务

检查系统是否已安装vsftpd

在开始配置前,需确认系统中是否已安装vsftpd,不同Linux发行版的检查命令略有差异:

  • CentOS/RHEL系统
    使用rpm命令检查:

    rpm -q vsftpd

    若返回类似vsftpd-3.0.3-28.el7.x86_64的结果,表示已安装;若提示“package vsftpd is not installed”,则需安装。

  • Ubuntu/Debian系统
    使用dpkg命令检查:

    dpkg -l | grep vsftpd

    若输出包含vsftpd,则已安装;否则需安装。

安装vsftpd

若系统中未安装vsftpd,可通过以下命令安装:

  • CentOS/RHEL系统(使用yum/dnf):

    yum install vsftpd -y  # CentOS 7及以下
    # 或
    dnf install vsftpd -y  # CentOS 8及以上
  • Ubuntu/Debian系统

    apt update
    apt install vsftpd -y

安装完成后,vsftpd的配置文件默认位于/etc/vsftpd/vsftpd.conf,主程序文件位于/usr/sbin/vsftpd

配置vsftpd

vsftpd的配置功能通过vsftpd.conf文件实现,以下是核心参数的配置说明及操作步骤:

linux如何打开ftp服务

备份原始配置文件

修改配置前,建议先备份原始文件,以便出错时恢复:

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

编辑配置文件

使用vinano编辑器打开配置文件:

vi /etc/vsftpd/vsftpd.conf

核心参数配置

以下是常用参数及其作用,可根据需求调整:

参数 默认值 说明 推荐值
anonymous_enable YES 是否允许匿名用户登录 NO(禁止匿名访问,提升安全性)
local_enable YES 是否允许本地用户登录 YES
write_enable YES 是否允许文件上传/修改 YES(需结合权限控制)
local_umask 022 本地用户上传文件的默认权限掩码 022(上传文件权限为644,目录为755)
dirmessage_enable YES 是否显示目录消息文件内容 YES
xferlog_enable YES 是否启用传输日志 YES
xferlog_std_format NO 是否使用标准xferlog日志格式 YES(与wu-ftpd兼容)
chroot_local_user NO 是否将本地用户限制在主目录 YES(防止用户访问系统敏感目录)
allow_writeable_chroot NO 是否允许chroot目录可写 YES(需配合chroot_local_user=YES,否则用户无法登录)
pasv_enable YES 是否启用被动模式 YES(避免防火墙主动连接问题)
pasv_min_port 0 被动模式最小端口 30000
pasv_max_port 0 被动模式最大端口 31000
user_sub_token NONE 用户目录替换标记(如local_root=/home/$USER $USER
local_root NONE 本地用户登录后的根目录 可设置为共享目录路径,如/var/ftp/share

关键配置示例

以下是针对“允许本地用户登录,限制在主目录,启用被动模式”的配置片段:

# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许文件操作
write_enable=YES
# 本地用户上传文件权限掩码
local_umask=022
# 将用户限制在主目录
chroot_local_user=YES
# 允许chroot目录可写(需配合chroot_local_user)
allow_writeable_chroot=YES
# 启用被动模式
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
# 日志配置
xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=YES

创建FTP用户及目录

创建本地用户

若需为FTP服务创建专用用户(避免直接使用系统用户),可执行以下命令:

useradd -m -s /sbin/nologin ftpuser  # 创建用户,家目录为/home/ftpuser,禁止系统登录
passwd ftpuser  # 设置用户密码

参数说明:

  • -m:自动创建家目录;
  • -s /sbin/nologin:禁止用户通过SSH等方式登录系统,仅允许FTP访问。

设置用户目录权限

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

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

可选:创建共享目录

若需要多个用户访问同一目录,可创建共享目录并设置权限:

mkdir -p /var/ftp/share
chmod 775 /var/ftp/share
chown root:ftpgroup /var/ftp/share  # 创建用户组并设置所有者
usermod -a -G ftpgroup ftpuser  # 将ftpuser加入ftpgroup组

配置防火墙

Linux系统默认启用防火墙,需开放FTP相关端口才能正常访问:

CentOS/RHEL系统(firewalld)

# 添加FTP服务到防火墙规则(自动开放21端口及被动模式端口)
firewall-cmd --permanent --add-service=ftp
# 开放被动模式端口范围(30000-31000)
firewall-cmd --permanent --add-port=30000-31000/tcp
# 重新加载防火墙规则
firewall-cmd --reload

Ubuntu/Debian系统(ufw)

# 开放21端口(FTP控制端口)
ufw allow 21/tcp
# 开放被动模式端口范围
ufw allow 30000:31000/tcp
# 启用防火墙(若未启用)
ufw enable

启动并设置开机自启

启动vsftpd服务

# CentOS/RHEL
systemctl start vsftpd
# Ubuntu/Debian
systemctl start vsftpd

设置开机自启

# CentOS/RHEL
systemctl enable vsftpd
# Ubuntu/Debian
systemctl enable vsftpd

检查服务状态

systemctl status vsftpd

若显示“active (running)”,则服务已正常启动。

linux如何打开ftp服务

测试FTP服务

使用命令行测试(Linux系统)

安装lftp工具(若未安装):

  • CentOS: yum install lftp -y
  • Ubuntu: apt install lftp -y

执行以下命令连接FTP服务器:

lftp ftpuser@服务器IP

输入密码后,执行ls查看文件列表,put上传文件,get下载文件,测试传输功能。

使用图形化工具测试

在Windows或macOS系统中,使用FileZilla等FTP客户端连接,参数如下:

  • 主机:服务器IP地址
  • 端口:21(默认FTP端口)
  • 用户名:ftpuser
  • 密码:用户密码
  • 加密:使用“普通”(FTP)或“使用隐式FTP over TLS”(FTPS,需额外配置SSL)

常见问题排查

  1. 无法连接,提示“连接超时”
    检查防火墙是否开放21端口和被动模式端口,或临时关闭防火墙测试:systemctl stop firewalld(CentOS)或ufw disable(Ubuntu)。

  2. 用户登录失败,提示“530 Login incorrect”

    • 检查用户密码是否正确;
    • 确认vsftpd.conflocal_enable=YES
    • 若使用chroot,检查用户目录权限是否为755,且用户对目录有执行权限。

FAQs

问题1:如何限制FTP用户只能上传文件,不能下载?
解答:可通过设置文件权限实现,将FTP用户上传的文件权限设置为000(仅所有者可读写),具体步骤:

  1. vsftpd.conf中添加local_umask=006(上传文件权限为600,目录为700);
  2. 创建目录后执行:chmod 700 /home/ftpuser/upload(仅用户可访问),用户上传的文件需通过其他方式(如SSH)由管理员下载。

问题2:如何启用FTP over SSL/TLS(FTPS)加密传输?
解答:vsftpd支持FTPS,需生成SSL证书并修改配置:

  1. 生成自签名证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
  2. 修改vsftpd.conf,添加以下参数:
    ssl_enable=YES
    allow_anon_ssl=NO
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    ssl_tlsv1=YES
    ssl_sslv2=NO
    ssl_sslv3=NO
    rsa_cert_file=/etc/vsftpd/vsftpd.pem
  3. 重启vsftpd服务:systemctl restart vsftpd
  4. 客户端连接时选择“使用显式FTP over TLS”或“FTPS”模式。

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

(0)
酷番叔酷番叔
上一篇 2025年9月30日 09:31
下一篇 2025年9月30日 09:48

相关推荐

  • linux系统如何改时间格式

    Linux系统中,可通过date命令设置时间格式,如`date “+%Y-

    2025年8月10日
    3200
  • 如何进入arm-linux-gcc开发环境?

    在嵌入式开发领域,交叉编译工具链是连接开发主机与目标板的关键桥梁,其中arm-linux-gcc作为常用的ARM架构交叉编译器,其正确配置与使用是开发嵌入式Linux应用的基础,本文将详细介绍如何在不同操作系统环境下安装、配置并验证arm-linux-gcc工具链,帮助开发者顺利进入ARM Linux开发环境……

    2025年9月22日
    2300
  • Linux下查找.so文件有哪些常用命令和方法?

    在Linux系统中,.so文件(Shared Object,共享目标文件)是动态链接库的核心形式,程序运行时需要加载这些库以实现功能扩展,无论是开发调试、系统维护还是排查依赖问题,快速定位.so文件的位置都至关重要,本文将详细介绍Linux系统中查找*.so文件的多种方法,涵盖命令行工具、系统配置及环境变量等场……

    2025年10月4日
    700
  • Linux如何备份文件夹?方法步骤与工具详解

    在Linux系统中,文件夹备份是数据安全管理的重要环节,无论是防止硬件故障、误删除操作,还是应对系统崩溃,定期备份都能有效降低数据丢失风险,Linux提供了多种备份工具和方法,用户可根据实际需求(如备份规模、存储位置、是否需要增量备份等)选择合适的方案,本文将详细介绍几种常见的文件夹备份方法,包括基础命令工具和……

    2025年8月23日
    3500
  • 如何查看linux的ftp

    Linux中,可使用命令ftp [服务器地址]进入FTP交互模式查看;

    2025年8月15日
    3600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信