Linux如何打开FTP服务?

在Linux系统中,操作FTP(File Transfer Protocol,文件传输协议)通常包括两种场景:作为客户端连接远程FTP服务器上传/下载文件,或作为服务器搭建FTP服务供其他客户端访问,本文将详细介绍Linux下这两种场景的操作方法,涵盖命令行工具和图形化工具的使用,以及FTP服务器的配置步骤。

linux如何打开ftp

Linux客户端连接FTP服务器

作为客户端,Linux系统可通过内置命令行工具(如ftplftp)或第三方图形化工具(如FileZilla)连接FTP服务器,实现文件传输,以下是具体操作:

使用ftp命令行工具(基础工具)

ftp是Linux系统自带的FTP客户端,功能简单,适合基本操作。
安装:若系统未安装,可通过包管理器安装(以Ubuntu/Debian为例):

sudo apt update && sudo apt install ftp

连接FTP服务器

ftp [服务器IP或域名]

例如连接IP为168.1.100的FTP服务器:

ftp 192.168.1.100

登录:输入服务器分配的用户名和密码(若为匿名服务器,用户名通常为anonymous,密码为任意邮箱或空)。

常用操作命令
| 命令 | 功能描述 | 示例 |
|—————|———————————–|————————–|
| ls | 查看服务器当前目录文件列表 | ls |
| cd [目录名] | 切换服务器目录 | cd pub |
| lcd [路径] | 切换本地客户端目录 | lcd /home/user/download|
| get [文件名]| 从服务器下载文件到本地当前目录 | get example.txt |
| put [文件名]| 上传本地当前目录文件到服务器 | put local.txt |
| mget [文件名]| 批量下载多个文件(支持通配符) | mget *.zip |
| mput [文件名]| 批量上传多个文件 | mput *.jpg |
| ! [命令] | 执行本地系统命令 | ! ls(查看本地目录) |
| byequit | 退出FTP连接 | bye |

注意事项

  • 默认情况下,ftp使用主动模式(Active Mode),若客户端防火墙严格,可能导致连接失败,需切换为被动模式:在FTP命令行输入passive,此时数据连接由客户端主动发起。
  • 传输过程中,可通过hash命令开启进度条显示(输入hash后,每传输1024字节显示一个)。

使用lftp命令行工具(增强工具)

lftpftp的增强版,支持多线程、断点续传、镜像同步等功能,更适合复杂场景。
安装

# Ubuntu/Debian
sudo apt install lftp
# CentOS/RHEL
sudo yum install lftp

连接与登录

lftp ftp://[用户名]:[密码]@[服务器IP或域名]

例如匿名登录:

linux如何打开ftp

lftp ftp://anonymous:anonymous@192.168.1.100

常用操作命令
| 命令 | 功能描述 | 示例 |
|————————–|———————————–|——————————-|
| ls | 查看服务器目录 | ls |
| cd [目录] | 切换服务器目录 | cd /data |
| lcd [路径] | 切换本地目录 | lcd ~/upload |
| get [文件] | 下载文件(支持断点续传) | get large_file.zip |
| put [文件] | 上传文件 | put report.pdf |
| mirror [本地目录] [远程目录] | 同步目录(双向) | mirror -R local_dir remote_dir(上传本地到远程) |
| pget [文件] | 多线程下载(加速大文件下载) | pget large_file.zip -n 5(5线程) |
| exit | 退出连接 | exit |

优势

  • 默认使用被动模式(PASV),兼容性更好;
  • 支持书签功能(bookmark add [名称]保存连接,bookmark [名称]快速连接);
  • 可通过set ftp:passive-mode on/off手动切换模式。

使用图形化工具(适合新手)

若不习惯命令行,可安装图形化FTP客户端,如FileZilla(跨平台,支持Linux)。
安装FileZilla

# Ubuntu/Debian
sudo apt install filezilla
# CentOS/RHEL(需EPEL源)
sudo yum install epel-release && sudo yum install filezilla

使用步骤

  1. 打开FileZilla,点击“文件”→“站点管理器”,点击“新建站点”,命名站点(如“FTP服务器”);
  2. 在“常规”选项卡中填写:
    • 主机:服务器IP或域名;
    • 登录类型:选择“正常”(需用户名密码)或“匿名”;
    • 用户名/密码:若选择“正常”,填写服务器分配的凭据;
  3. 点击“连接”,右侧窗口显示服务器文件列表,左侧为本地文件;
  4. 拖拽文件即可上传/下载,或右键文件选择“传输”。

优势:操作直观,支持拖拽、实时传输进度显示,适合不熟悉命令行的用户。

Linux搭建FTP服务器(以vsftpd为例)

若需在Linux服务器上搭建FTP服务,推荐使用vsftpd(Very Secure FTP Daemon),轻量级且安全,是大多数Linux发行版的默认FTP服务器软件。

安装vsftpd

# Ubuntu/Debian
sudo apt update && sudo apt install vsftpd
# CentOS/RHEL
sudo yum install vsftpd

配置vsftpd

核心配置文件为/etc/vsftpd/vsftpd.conf,建议先备份原配置:

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

关键配置参数(编辑/etc/vsftpd/vsftpd.conf):
| 参数 | 默认值 | 作用说明 |
|——————————-|———-|———————————–|
| anonymous_enable=NO | YES | 是否允许匿名登录(建议关闭) |
| local_enable=YES | NO | 是否允许本地用户登录 |
| write_enable=YES | NO | 是否允许文件上传/修改 |
| chroot_local_user=YES | NO | 是否限制用户仅能访问家目录 |
| allow_writeable_chroot=YES | NO | 是否允许chroot目录写入(需配合chroot) |
| pasv_min_port=10000 | (无) | 被动模式最小端口(避免冲突) |
| pasv_max_port=10100 | (无) | 被动模式最大端口 |
| user_sub_token=$USER | (无) | 动态设置用户目录(如local_root=/home/$USER/ftp) |

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

# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许写入
write_enable=YES
# 限制用户在家目录(安全)
chroot_local_user=YES
# 允许chroot目录写入(CentOS 7+需开启)
allow_writeable_chroot=YES
# 被动模式端口范围
pasv_min_port=10000
pasv_max_port=10100
# 设置用户家目录为FTP根目录(可选)
local_root=/home/$USER/ftp

创建FTP用户并设置权限

创建用户(例如创建用户ftpuser):

linux如何打开ftp

sudo useradd -m -s /bin/bash ftpuser  # 创建用户并分配家目录
sudo passwd ftpuser                    # 设置用户密码

创建FTP专用目录(可选,若未配置local_root):

sudo mkdir -p /home/ftpuser/ftp
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp  # 设置目录所有者

配置防火墙与SELinux(CentOS/RHEL)

防火墙开放FTP端口

sudo firewall-cmd --permanent --add-service=ftp  # 允许FTP服务
sudo firewall-cmd --permanent --add-port=21/tcp   # FTP命令端口
sudo firewall-cmd --permanent --add-port=10000-10100/tcp  # 被动模式端口
sudo firewall-cmd --reload

SELinux设置(若开启SELinux):

sudo setsebool -P ftpd_full_access on  # 允许FTP访问用户目录

启动并设置开机自启

# 启动vsftpd服务
sudo systemctl start vsftpd
# 开机自启
sudo systemctl enable vsftpd
# 查看服务状态
sudo systemctl status vsftpd

测试FTP服务器

在客户端(同一局域网或公网可访问的服务器)使用FileZilla或lftp连接,输入服务器IP、用户名(ftpuser)、密码,若能成功访问目录并上传/下载文件,则搭建成功。

相关问答FAQs

问题1:连接FTP服务器时提示“530 Login incorrect”,如何解决?

解答

  • 用户名/密码错误:确认输入的用户名和密码是否正确,区分大小写;
  • 服务器未允许用户登录:检查vsftpd配置文件中local_enable=YES(本地用户)或anonymous_enable=YES(匿名用户)是否开启;
  • 防火墙或SELinux拦截:若服务器为CentOS/RHEL,执行getsebool -a | grep ftpd检查ftpd_full_access状态,若为off,则需通过setsebool -P ftpd_full_access on开启;
  • 用户被限制:若配置了userlist_enable=YESuserlist_file=/etc/vsftpd/user_list,需检查/etc/vsftpd/user_list中是否包含该用户(默认拒绝列表中的用户登录)。

问题2:如何限制FTP用户只能访问指定的目录(而非家目录)?

解答
可通过local_rootuser_sub_token参数为用户指定独立目录,步骤如下:

  1. 创建专用目录(例如/var/ftp/share):
    sudo mkdir -p /var/ftp/share
    sudo chown -R ftpuser:ftpuser /var/ftp/share  # 设置目录所有者为FTP用户
  2. 修改vsftpd配置
    /etc/vsftpd/vsftpd.conf中添加:

    user_sub_token=$USER
    local_root=/var/ftp/$USER  # 动态绑定用户目录(如用户ftpuser则访问/var/ftp/ftpuser)

    或直接为指定用户设置固定目录(需在配置文件末尾添加):

    local_root=/var/ftp/share  # 所有FTP用户均访问此目录
  3. 重启vsftpd服务
    sudo systemctl restart vsftpd

    用户登录后将只能被限制在指定的目录(如/var/ftp/share),无法访问上级目录,提升安全性。

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

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

相关推荐

  • MacBook Air如何安装Linux系统?

    在Apple MacBook Air上安装Linux系统是一个需要谨慎操作的过程,尤其因其硬件架构(Intel或Apple Silicon M系列)的不同,安装方法和注意事项存在差异,本文将详细分步骤说明不同架构MacBook Air的Linux安装流程、准备工作及常见问题解决,帮助用户顺利完成系统部署,安装前……

    2025年9月11日
    2400
  • 如何在Linux系统下开发2048游戏的环境配置与实现?

    开发一个Linux环境下的2048游戏,需结合开发语言、GUI库及游戏逻辑实现,以下以Python(Tkinter库)为例,详细说明开发流程,兼顾性能与跨平台兼容性,环境准备首先确保Linux系统已安装Python3(推荐3.8+),Tkinter作为Python标准GUI库通常已预装,若缺失可通过sudo a……

    2025年8月27日
    3600
  • 程序员如何避免996加班?

    在Linux系统中监控硬件温度对于维护系统稳定性、预防过热损坏及优化性能至关重要,以下详细介绍多种命令行与图形化工具的操作方法,涵盖CPU、硬盘、GPU等核心硬件:核心工具安装与配置lm-sensors(CPU/主板传感器)安装:sudo apt install lm-sensors # Debian/Ubun……

    2025年8月8日
    3700
  • Ubuntu还是Debian升级最安全?

    准备工作:安装依赖确保系统已安装编译工具和DBus依赖库:sudo apt install build-essential git autoconf automake libtool \ libexpat1-dev libsystemd-dev libglib2.0-dev# Fedora/CentOS/RHE……

    2025年7月25日
    3600
  • Linux下如何查找Qt的根目录?

    在Linux系统中,查找Qt的根目录是开发过程中常见的需求,无论是配置编译环境、管理依赖还是部署应用,都需要准确获取Qt的安装路径,Qt的根目录通常包含bin(可执行文件)、lib(库文件)、include(头文件)、plugins(插件)等关键子目录,本文将详细介绍多种查找方法,涵盖环境变量检查、命令行工具查……

    2025年9月25日
    1900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信