一、ftp功能:上传和下载文件,应用层协议使用ftp协议,传输层使用TCP协议,默认端口21。
二、安装:
(A)配置服务器端
1.安装vsftpd(very secure FTP daemon)服务器:非常安全的FTP守护进程,顾名思义提高了ftp协议传输数据的安全性。
sudo apt install vsftpd
2.配置,打开/etc/vsftpd.conf,建议先备份一份
cd /etc
sudo cp ./vsftpd.conf ./vsftpd.conf.back
vim vstfpd.conf
我目前设置的配置信息:
listen=YES #服务器启动后,开启侦听状态,随时准备提供服务
#listen_ipv6=YES #能用ipv6的可以使用,用ipv4的注释掉,不然重启不了哦
#
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=YES #允许匿名用户登录
#
# Uncomment this to allow local users to log in.
local_enable=YES #允许实名用户登录
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES #实名用户允许写(上传文件)
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
anon_upload_enable=YES #匿名用户允许上传
anon_mkdir_write_enable=YES #匿名用户可以创建目录
注:配置文件依据需求而定
3.配置好之后,重启服务器
sudo systemctl restart vsftpd
4.设置开机自启
sudo systemctl enable vsftpd
如果想关掉开机自启:
sudo systemctl disable vsftpd
(B)客户端使用
(一).实名用户模式下
1.客户端主机上登录ftp服务器的站点
ftp 服务器主机ip地址
#例如:ftp 192.168.255.2
之后输入ftp服务器的登录名和密码。
2.将客户端的文件上传到服务器例子:
(1).登录服务器后切换到你想使用的服务器里的目录
ftp> cd /home/zhangqu/ftpShare
(2).上传文件使用put命令:
注:如果上传的文件不在客户端登录ftp服务器之前的路径下,会出现上传失败。例如我之前的客户端目录为/home/zhangqu
,但我要上传的文件在客户端的/home/zhangqu/study/ftpTest
目录里,直接使用put 上传就会失败。如果就是上传当前目录下的文件就正常用put。
解决方法:
法一:使用lcd命令可以到客户端对应的目录
ftp> lcd /home/zhangqu/study/ftpTest/
Local directory now /home/zhangqu/study/ftpTest
之后执行put命令上传文件到服务器当前目录:
#上传upload.cc文件
ftp> put upload.cc
法二:将客户端主机切换到要上传的文件路径下,之后再登录ftp服务器,切换到服务器对应目录后再上传
cd /home/zhangqu/study/ftpTest
ftp 192.168.255.2
ftp> cd /home/zhangqu/ftpShare
ftp> put upload.c
如果传输失败,也可能是其他原因,上网搜一搜吧
2.将服务器的文件下载到客户端的例子:
(1).登录服务器后切换到你想使用的服务器里的目录
ftp> cd /home/zhangqu/ftpShare
(2).下载文件使用get命令
#如果就是下载到当前客户端目录,则可省略lcd命令
ftp> lcd /home/zhangqu/study/ftpTest/
#从服务器上下载vsftpd.conf
ftp> get vsftpd.conf
再次说明:客户端的目录(路径)很重要。
注:如果要下载或上传目录(文件夹),则需要打包,将文件夹压缩后再上传和下载。
(二).匿名用户模式下
1.服务器端为匿名用户(其他人)创建工作目录,限制其操作服务器文件的范围,提高安全性。
#在服务器的/home/zhangqu路径下创建匿名用户的根目录
mkdir /home/zhangqu/ftpAnonymous
#在ftpAnonymou里创建linuxFtp和winFtp文件夹
mkdir /home/zhangqu/linuxFtp /home/zhangqu/winFtp
注意此时创建的文件的权限:
匿名用户属于其他人,现在没有写权限,也就无法上传文件,所以需要给匿名用户添加写权限:
chmod o+w linuxFtp
chmod 777 winFtp
2.在ftp服务器上,修改配置文件,设置匿名用户登录ftp服务器后的根目录
sudo vim /etc/vsftpd.conf
在配置文件里添加:
anon_root=/home/zhangqu/ftpAnonymous/
最后重启ftp服务器
sudo systemctl restart vsftpd
3.客户端使用put上传文件到服务器
① 匿名登录ftp服务器
ftp 服务器ip地址
之后登录名一定要写anonymous,密码直接回车就行。成功登录后会进入ftp服务器为匿名用户设置好的根目录路径。
② 上传,假设客户端当前路径为/home/zhangqu/ftpTest
#进入ftp服务器匿名用户根目录下的linuxFtp文件夹
cd /linuxFtp
#上传anonUpload.pdf 到 linuxFtp
ftp> put anonUpload.pdf
4.从服务器上下载文件get,类比put使用。
注:如果要下载或上传目录(文件夹),则需要打包,将文件夹压缩后再上传和下载。