在Linux 7.2系统中,FTP(File Transfer Protocol)是一种常用的文件传输协议,通过FTP%ignore_a_2%可以实现本地与远程服务器之间的文件上传、下载、目录管理等操作,本文将详细介绍Linux 7.2中FTP命令的使用方法,包括服务端配置、客户端连接、文件传输及常见问题处理。
FTP服务端安装与配置(以vsftpd为例)
在Linux 7.2中,通常使用vsftpd(Very Secure FTP Daemon)作为FTP服务器软件,若系统未安装,可通过以下步骤完成安装与配置:
安装vsftpd
yum install vsftpd -y # 使用yum安装vsftpd systemctl start vsftpd # 启动vsftpd服务 systemctl enable vsftpd # 设置开机自启
配置vsftpd
核心配置文件为/etc/vsftpd/vsftpd.conf
,常用参数说明如下:
参数 | 功能 | 示值 |
---|---|---|
anonymous_enable | 是否允许匿名用户登录 | NO(禁止匿名) |
local_enable | 是否允许本地用户登录 | YES |
write_enable | 是否允许文件写入 | YES |
chroot_local_user | 是否将用户限制在主目录 | YES(增强安全性) |
pasv_enable | 是否启用被动模式 | YES(避免防火墙问题) |
pasv_min_port / pasv_max_port | 被动模式端口范围 | 10040-10050 |
userlist_enable | 是否启用用户列表文件 | YES |
userlist_file | 用户列表文件路径 | /etc/vsftpd/user_list |
编辑配置文件:
vim /etc/vsftpd/vsftpd.conf
根据需求修改参数,例如禁止匿名用户并启用被动模式:
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES pasv_enable=YES pasv_min_port=10040 pasv_max_port=10050
创建FTP用户并设置权限
useradd ftpuser # 创建用户 passwd ftpuser # 设置用户密码 chown -R ftpuser:ftpuser /home/ftpuser # 设置用户主目录权限
配置防火墙
开放FTP相关端口(21为命令端口,被动模式端口需额外开放):
firewall-cmd --permanent --add-service=ftp firewall-cmd --permanent --add-port=10040-10050/tcp firewall-cmd --reload
FTP客户端命令使用方法
Linux 7.2系统默认已安装FTP客户端工具,通过ftp
命令即可连接远程FTP服务器,以下是常用操作步骤:
连接FTP服务器
ftp ftp.example.com # 通过域名连接 # 或指定IP和端口 ftp 192.168.1.100 21
连接后需输入用户名和密码登录(匿名用户可输入anonymous
,密码为空)。
常用FTP命令及功能
以下是FTP客户端常用命令的详细说明及示例:
命令 | 功能 | 示例 |
---|---|---|
open | 连接指定服务器 | open ftp.example.com 21 |
user | 切换用户/登录 | user ftpuser |
pass | 输入密码 | pass |
ls | 列出服务器当前目录文件 | ls -l(显示详细信息) |
cd | 切换服务器目录 | cd /home/ftpuser/docs |
lcd | 切换本地目录 | lcd /path/to/local(本地文件存放路径) |
get | 下载单个文件 | get remote_file.txt(下载到当前本地目录) |
mget | 批量下载文件 | mget *.txt(下载所有.txt文件) |
put | 上传单个文件 | put local_file.txt(上传到当前服务器目录) |
mput | 批量上传文件 | mput *.log(上传所有.log文件) |
delete | 删除服务器文件 | delete unused_file.txt |
mdelete | 批量删除服务器文件 | mdelete *.tmp |
mkdir | 创建服务器目录 | mkdir new_folder |
rmdir | 删除空服务器目录 | rmdir empty_folder |
pwd | 显示当前服务器目录 | pwd |
执行本地系统命令 | ! ls(列出本地当前目录文件) | |
binary | 设置二进制传输模式(用于图片、压缩包等) | binary |
ascii | 设置ASCII传输模式(用于文本文件) | ascii |
passive | 切换被动模式(推荐,避免防火墙问题) | passive |
active | 切换主动模式 | active |
bye/quit | 退出FTP连接 | bye |
文件传输模式说明
- ASCII模式:适用于文本文件(如.txt、.csv),传输时会自动转换换行符(Linux为
n
,Windows为rn
),避免格式错乱。 - Binary模式:适用于二进制文件(如.jpg、.zip、.exe),传输时不进行任何转换,确保文件完整性。
注意:上传/下载非文本文件前,务必先执行binary
命令,否则文件可能损坏。
实际操作示例
场景1:上传本地文件到服务器
ftp> open 192.168.1.100 21 Connected to 192.168.1.100 (192.168.1.100). 220 (vsFTPd 3.0.2) Name (192.168.1.100:root): ftpuser 331 Please specify the password. Password: ******** 230 Login successful. ftp> lcd /home/user/documents # 切换本地目录 Local directory now /home/user/documents ftp> binary # 设置二进制模式 ftp> put report.pdf # 上传report.pdf local: report.pdf remote: report.pdf 226 Transfer complete. ftp> bye
场景2:从服务器批量下载文件
ftp> open ftp.example.com ftp> user ftpuser ******** ftp> cd /server/downloads ftp> lcd /home/user/downloads ftp> binary ftp> mget *.zip ftp> bye
常见问题与解决方法
-
连接超时或被拒绝
- 检查FTP服务是否启动:
systemctl status vsftpd
- 检查防火墙是否开放端口:
firewall-cmd --list-ports
- 检查服务器配置文件中
listen=YES
是否开启,或listen_ipv6=NO
(若使用IPv4)。
- 检查FTP服务是否启动:
-
用户无法登录或提示“530 Login incorrect”
- 检查用户名密码是否正确;
- 若使用
chroot_local_user=YES
,确保用户主目录无写权限(或设置allow_writeable_chroot=YES
,但存在安全风险); - 检查
/etc/vsftpd/user_list
是否包含用户名(若userlist_enable=YES
)。
-
上传/下载失败,提示“550 Permission denied”
- 检查服务器目录权限:
ls -ld /home/ftpuser
(需为755); - 检查文件权限:
ls -l file.txt
(需为644,用户需有写权限); - 确认
write_enable=YES
是否开启。
- 检查服务器目录权限:
相关问答FAQs
Q1:Linux 7.2中使用FTP上传文件时提示“550 Permission denied”,如何解决?
A1:该错误通常是由于服务器端权限不足导致,可按以下步骤排查:
- 检查目标目录权限:执行
ls -ld /目标目录
,确保属主为FTP用户,权限为755; - 检查文件权限:若上传到已有文件,执行
ls -l 文件名
,确保用户有写权限(644或664); - 检查vsftpd配置:确认
/etc/vsftpd/vsftpd.conf
中write_enable=YES
已开启; - 检查chroot限制:若
chroot_local_user=YES
,需确保用户主目录无上级目录的写权限,或临时添加allow_writeable_chroot=YES
(需重启vsftpd服务)。
Q2:如何在FTP传输过程中显示文件传输进度?
A2:默认的ftp
命令不显示传输进度,可通过以下方法实现:
- 使用
ncftp
工具(需安装:yum install ncftp -y
),支持进度显示:ncftp -u ftpuser -p ******** ftp.example.com ncftp> put large_file.zip # 会显示传输进度(如1234KB/s 100%)
- 使用
lftp
工具(功能更强大,支持进度显示和断点续传):lftp -u ftpuser,******** ftp.example.com lftp> put --use-pget-n=5 large_file.zip # 分5线程传输,显示进度
- 若仅临时查看进度,可在
ftp
命令中使用hash
命令:ftp> hash # 开启hash标记,每传输1024字节显示一个“#” ftp> get large_file.zip ##### ##### ##### ... # 通过“#”数量判断传输进度
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16301.html