Linux系统如何使用FTP服务器?

在Linux系统中搭建FTP服务器是常见的需求,vsftpd(Very Secure FTP Daemon)是当前最流行、最安全的FTP服务器软件之一,适用于大多数Linux发行版,以下将详细介绍基于vsftpd的FTP服务器搭建、配置及使用流程。

linux 系统如何用ftp服务器

准备工作

  1. 系统环境:以CentOS 7/Ubuntu 20.04为例,确保系统已更新,并具备root权限(或使用sudo提权)。
  2. 关闭防火墙(临时):若防火墙开启,需先放行FTP相关端口(21命令端口、20数据端口,以及被动模式下的随机端口),或暂时关闭防火墙测试:
    • CentOS 7:systemctl stop firewalld
    • Ubuntu 20.04:ufw disable
  3. SELinux配置(CentOS):若SELinux为 enforcing 模式,需执行:setsebool -P ftpd_full_access on,避免权限问题。

安装vsftpd

不同发行版的安装命令不同:

  • CentOS/RHEL
    yum install vsftpd -y  # CentOS 7及以下
    dnf install vsftpd -y  # CentOS 8及以上
  • Ubuntu/Debian
    apt update && apt install vsftpd -y

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

    systemctl start vsftpd
    systemctl enable vsftpd

配置vsftpd

vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,可通过备份原文件后修改:

linux 系统如何用ftp服务器

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

关键配置项说明(可通过表格整理):

配置项 作用说明 推荐值
anonymous_enable 是否允许匿名用户登录 NO(默认NO)
local_enable 是否允许本地用户登录 YES
write_enable 是否允许本地用户上传文件 YES
chroot_local_user 是否将本地用户限制在其主目录下(防止越权访问) YES
allow_writeable_chroot 当chroot_local_user=YES时,是否允许用户在主目录内写入(需配合write_enable) YES
pasv_enable 是否启用被动模式(解决客户端因防火墙无法连接数据端口的问题) YES
pasv_min_port 被动模式最小端口 10000
pasv_max_port 被动模式最大端口 10100
userlist_enable 是否启用用户列表文件(/etc/vsftpd/user_list) YES
userlist_file 用户列表文件路径 /etc/vsftpd/user_list
userlist_deny 是否拒绝user_list中的用户登录(YES=拒绝,NO=仅允许列表内用户) YES

核心配置示例:

# 禁止匿名用户,允许本地用户登录
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=10100
# 启用用户列表,拒绝非列表用户
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES

创建FTP用户及目录

  1. 创建系统用户(推荐使用非登录用户,禁止SSH登录):
    useradd -s /sbin/nologin -d /home/ftpuser ftpuser  # 创建用户ftpuser,主目录为/home/ftpuser
  2. 设置用户密码
    passwd ftpuser
  3. 设置用户目录权限
    chown -R ftpuser:ftpuser /home/ftpuser  # 设置目录所有者为ftpuser
    chmod -R 755 /home/ftpuser              # 设置目录权限(755确保用户可读写)
  4. 将用户加入user_list(若配置了userlist_deny=YES,需将允许登录的用户加入列表):
    echo "ftpuser" >> /etc/vsftpd/user_list

重启服务并测试

  1. 重启vsftpd服务
    systemctl restart vsftpd
  2. 测试连接
    • 命令行测试(本地或远程客户端):
      ftp 127.0.0.1  # 或FTP服务器IP
      Name: ftpuser  # 输入用户名
      Password:      # 输入密码
      登录后可执行ls、get、put等命令测试上传下载
    • 图形化工具测试:使用FileZilla,输入服务器IP、用户名、密码,端口选择21(主动模式)或自动检测(被动模式)。

常见问题排查

  1. 无法连接,提示“Connection refused”

    • 检查vsftpd服务是否启动:systemctl status vsftpd
    • 检查防火墙是否放行端口:CentOS执行firewall-cmd --add-port=21/tcp --permanent && firewall-cmd --add-port=10000-10100/tcp --permanent,然后firewall-cmd --reload;Ubuntu执行ufw allow 21/tcp && ufw allow 10000:10100/tcp
  2. 用户登录后无法上传文件,提示“553 Could not create file”

    • 检查用户目录权限:ls -ld /home/ftpuser,需为755(所有者可读写执行,其他用户可读执行);
    • 检查write_enable是否设置为YES,allow_writeable_chroot是否为YES。

相关问答FAQs

Q1:如何限制FTP用户只能访问自己的主目录,且无法切换到其他目录?
A:通过配置chroot_local_user=YES可将用户限制在主目录下,但需确保主目录权限正确(755),若需更精细控制(如仅允许特定用户),可创建chroot_list_file(如/etc/vsftpd/chroot_list),添加用户名后设置chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list,此时列表内用户将被限制在主目录,其他用户不受限(需配合userlist_deny=NO仅允许列表内用户登录)。

linux 系统如何用ftp服务器

Q2:FTP连接时提示“530 Login incorrect”,但用户名和密码正确,如何解决?
A:通常由以下原因导致:

  1. 用户被/etc/vsftpd/ftpusers(默认拒绝登录的用户列表)或/etc/vsftpd/user_list(若userlist_deny=YES)拦截,检查文件是否包含该用户名,若有则删除;
  2. SELinux限制:执行getsebool -a | grep ftpd,确认ftpd_full_access为off,则执行setsebool -P ftpd_full_access on
  3. 密码错误或用户不存在,确认/etc/shadow中用户密码正确,且/etc/passwd中用户shell未被禁用(如/sbin/nologin仅禁止SSH登录,不影响FTP)。

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

(0)
酷番叔酷番叔
上一篇 2025年9月19日 06:16
下一篇 2025年9月19日 06:30

相关推荐

  • Linux中如何配置网站?具体步骤和命令有哪些?

    在Linux系统中配置网站通常涉及环境搭建、服务安装、虚拟主机配置、域名解析及安全设置等步骤,以下以Ubuntu/Debian和CentOS/RHEL两大主流发行版为例,详细讲解全过程,环境准备与系统更新首先确保服务器已安装Linux系统(推荐Ubuntu 20.04+或CentOS 8+),并拥有sudo权限……

    2025年10月8日
    7900
  • 在Linux操作系统中,安装硬件驱动程序的具体步骤是什么?

    Linux驱动是操作系统与硬件设备之间的桥梁,负责控制和管理硬件资源,确保设备能够正常工作,与Windows系统不同,Linux系统通常自带大量开源驱动,覆盖大部分常见硬件,但对于一些较新的或特殊硬件(如独立显卡、专业网卡、外设等),可能需要手动安装驱动,本文将详细介绍Linux系统中安装驱动的多种方法,包括使……

    2025年8月23日
    13000
  • Linux下如何生成bin文件?

    Linux系统中,bin文件(二进制文件)是一种包含原始二进制数据的文件格式,广泛应用于嵌入式系统固件、可执行程序、磁盘镜像等领域,生成bin文件的方法多样,需根据具体需求(如程序编译、数据转换、镜像创建等)选择合适工具,本文将详细介绍Linux环境下生成bin文件的多种方法,涵盖从基础命令到专业工具的使用场景……

    2025年9月29日
    6700
  • linux 下如何安装php

    Linux 下安装 PHP 可以使用包管理器,如 apt-get install php(Debian/Ubuntu)

    2025年8月16日
    8300
  • linux如何切换回桌面快捷键

    在Linux操作系统中,切换回桌面的快捷键因桌面环境的不同而有所差异,常见的桌面环境包括GNOME、KDE Plasma、XFCE、MATE、Cinnamon等,每种环境都设计了专属的快捷键组合,方便用户快速切换到桌面视图,部分环境还支持自定义快捷键,以满足用户的个性化需求,以下将详细介绍不同桌面环境的默认快捷……

    2025年10月6日
    5500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信