Ftp:文件服务器

介绍

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

image-20210103172114443

传输模式

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP server。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

Standard模式

FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

image-20210103172604585

Passive模式

在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

image-20210103172547176

Vsftp介绍

Vsftp是目前linux中最主流的ftp服务器,非常安全的ftp服务进程

登陆类型

VSFTP提供了系统用户、匿名用户、虚拟用户三种不同的登陆反射方式,所有的虚拟用户会被映射成一个系统用户,访问时的文件目录是此系统用户的家目录,匿名用户也是虚拟用户,映射的虚拟用户是ftp,详细信息可以通过man vsftp.conf查看。

Vsftp安装

环境:服务端 centos7.6 软件vsftpd

客户端:windows和linux都行

服务端安装:

yum install -y epel-release
# pam 认证模块 db4 支持文件数据库
yum install -y vsftpd* pam* db4*

配置文件说明

配置文件 作用
/etc/vsftp/vsftpd.conf vsftpd核心配置文件
/etc/vsftpd/ftpusers 指定哪些用户不能访问ftp服务器
/etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本
/var/ftp/ 默认情况下匿名用户的根目录

配置匿名用户访问上传下载删除文件

vi /etc/vsftpd/vsftpd.conf

只需要改两处(去除#),添加一行anon_other_write_enable=YES

image-20210103205301201

chown ftp:ftp -R /var/ftp/
setenforce 0
systemctl restart vsftpd
ps aux | grep vsftpd

image-20210103191738990

访问

(1)浏览器直接访问(匿名):ftp://192.168.1.43/

image-20210103192011160

(2)windown窗口访问:ftp://192.168.1.43

image-20210103205429847

(2)工具访问(Mobaxterm)

image-20210103192135488 image-20210103192346885

配置系统用户并登陆

useradd wj
passwd wj
vi /etc/vsftpd/vsftpd.conf

local_enable=YES
write_enable=YES
local_umask=077
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES


touch /home/wj/a.txt
systemctl restart vsftpd

image-20210103211454437

配置虚拟用户并登录

建立虚拟ftp用户账号

useradd -s /sbin/nologin vu

创建虚拟用户文件(奇数行用户名,偶数行密码)

vi /etc/vsftpd/user

wj2
1234

创建数据文件

cd /etc/vsftpd/
db_load -T -t hash -f user user.db

建立支持虚拟用户的PAM认证文件

vi /etc/pam.d/vsftpd.vu

auth  required  /lib64/security/pam_userdb.so  db=/etc/vsftpd/user
account  required  /lib64/security/pam_userdb.so  db=/etc/vsftpd/user

修改配置文件

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
vi /etc/vsftpd/vsftpd.conf

write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vu
pam_service_name=vsftpd.vu
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir

为用户建立独立的配置目录及文件

mkdir /etc/vsftpd/user_dir
cd /etc/vsftpd/user_dir
vi wj2

local_root=/etc/vsftpd/data

创建虚拟用户数据存放目录

cd ..
mkdir data
chmod 777 data
cd data
touch www.txt

重启服务

systemctl restart vsftpd

然后用wj2用户访问,密码是1234

image-20210103213658877

Ftp客户端:lftp

lftp是一款优秀的文件客户端程序,它支持ftp,SETP,HTTP,FTPS等多种文件传输协议。

准备两台linux服务器,一台服务端(192.168.1.43),一台客户端(192.168.1.51)

yum install -y lftp

登陆:lftp 用户名:密码@ftp地址:端口(默认21)

lftp wj2:1234@192.168.1.43

image-20210103214641949

下载文件(文件夹)

get 文件(文件夹)

例如我想下载图中www.txt

注意:默认情况下(不加任何选项),在哪里目录进入的lftp,就下载文件到那个目录

image-20210103214846640

下载文件到指定目录

get file -o 目录

image-20210103215427235

退出lftp:

ctrl + 
enter

或者输入 exit

上传 put

touch /opt/1.txt
cd /opt
lftp wj2:1234@192.168.1.43
put 1.txt
ls

image-20210103215802532

此外,lftp额外支持很多的功能,我这里只是简单介绍了几种,更多功能见 http://lftp.tech/lftp-man.pdf

原文地址:https://www.cnblogs.com/wwjj4811/p/14227111.html