Linux系统下FTP(File Transfer Protocol,文件传输协议)是常用的文件传输方式,主要用于客户端与服务器之间的文件上传、下载等操作,本文将详细介绍Linux环境下FTP的使用方法,包括客户端连接、服务器配置及常用操作。
FTP工具概述
Linux系统中,FTP操作主要通过客户端工具和服务器软件实现,客户端工具包括ftp
(内置命令行工具)、lftp
(增强型客户端,支持断点续传、多线程等),服务器软件常用vsftpd
(very secure FTP daemon,安全且轻量)。
客户端使用:以ftp
命令为例
安装FTP客户端
大多数Linux系统默认已安装ftp
工具,若未安装可通过包管理器安装:
- Ubuntu/Debian:
sudo apt update && sudo apt install ftp
- CentOS/RHEL:
sudo yum install ftp
连接FTP服务器
使用ftp
命令连接服务器,格式为ftp [服务器IP/域名] [端口]
(端口默认为21):
ftp 192.168.1.100
连接后需输入用户名和密码,若服务器允许匿名登录,用户名可输入anonymous
,密码留空或填邮箱。
常用FTP操作命令
连接成功后,进入FTP交互界面,可通过以下命令操作:
命令 | 功能描述 | 示例 |
---|---|---|
ls |
列出当前目录文件 | ls |
cd [目录] |
切换目录 | cd /upload |
get [文件] |
下载文件到本地当前目录 | get test.txt |
put [文件] |
上传本地文件到服务器当前目录 | put local_file.txt |
mget [文件] |
批量下载文件(支持通配符) | mget *.zip |
mput [文件] |
批量上传文件 | mput *.jpg |
mkdir [目录] |
创建服务器目录 | mkdir new_folder |
delete [文件] |
删除服务器文件 | delete old.txt |
! [命令] |
执行本地系统命令 | ! ls (查看本地目录) |
help |
查看所有可用命令 | help |
bye /quit |
退出FTP连接 | bye |
被动模式(PASV)设置
若客户端处于内网或防火墙限制,需启用被动模式以确保数据传输正常:
passive # 开启被动模式
FTP服务器配置:以vsftpd
为例
安装vsftpd
- Ubuntu/Debian:
sudo apt install vsftpd
- CentOS/RHEL:
sudo yum install vsftpd
配置vsftpd
核心配置文件为/etc/vsftpd/vsftpd.conf
,常用配置项如下:
anonymous_enable=NO # 禁止匿名登录 local_enable=YES # 允许本地用户登录 write_enable=YES # 允许文件上传(需用户有写权限) chroot_local_user=YES # 限制用户只能访问自家目录(安全加固) allow_writeable_chroot=YES # 允许chroot目录可写(需配合write_enable=YES) listen=YES # 独立模式运行 pasv_min_port=10000 # 被动模式最小端口 pasv_max_port=10100 # 被动模式最大端口
配置完成后保存,重启服务:sudo systemctl restart vsftpd
(CentOS/RHEL)或sudo service vsftpd restart
(Ubuntu/Debian)。
防火墙与用户设置
- 开放FTP端口(21)及被动模式端口(10000-10100):
sudo ufw allow 21/tcp # Ubuntu sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --reload # CentOS sudo firewall-cmd --permanent --add-port=10000-10100/tcp sudo firewall-cmd --reload
- 创建FTP专用用户(可选):
sudo useradd -m ftpuser # 创建用户并创建家目录 sudo passwd ftpuser # 设置密码
安全注意事项
- 避免明文传输:FTP默认使用明文传输密码和数据,建议改用FTPS(FTP over SSL)或SFTP(基于SSH的文件传输)增强安全性。
- 限制用户权限:通过
chroot
限制用户访问目录,避免越权操作。 - 定期更新:保持
vsftpd
版本最新,及时修复安全漏洞。
相关问答FAQs
Q1:Linux FTP连接失败,提示“Connection refused”怎么办?
A:可能原因包括:服务器未启动vsftpd服务(sudo systemctl status vsftpd
检查);防火墙拦截(开放21端口及被动模式端口);服务器IP或端口错误,可通过telnet 服务器IP 21
测试端口是否可达,排查服务状态和防火墙规则。
Q2:如何限制FTP用户只能访问指定目录(如/home/ftpuser/upload)?
A:可通过配置vsftpd.conf
实现:
- 创建目标目录并设置权限:
sudo mkdir -p /home/ftpuser/upload && sudo chown ftpuser:ftpuser /home/ftpuser/upload
; - 在
vsftpd.conf
中添加:local_root=/home/ftpuser/upload
(指定用户登录后的根目录)和allow_writeable_chroot=YES
; - 重启vsftpd服务,用户登录后将只能操作
/home/ftpuser/upload
目录。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28374.html