文件传输协议,基于该协议FTP客户端与服务端可以实现共享文件,上传文件,下载文件。FTP基于TVP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输,用户可以通过客户端向FTP服务段上传,下载,删除文件,FTP服务端可以同时提供给多人共享使用;

 FTP服务是client/server(C/S)模式,基于FTP协议是新FTP文件对外共享及传输的软件称之FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传,下载文件;

FTP主动模式:

客户端从一个任意端口N(N>1024)连接到FTP服务器的port21命令端口,客户端开始监听端口N+1,并发送FTP命令"port N+1" 到FTP服务器,之后服务端才以数据端口20来连接客户端N+1端口

FTP被动模式:

客户端从一个任意端口N(N>1024)连接到服务端的port21命令端口,客户端开始监听端口N+1,并提交PASV命令,这个时候服务端会开启一个任意的端口(P>1024)发送PORT P命令交给客户端,客户端发起从本地端口N+1到服务器端口P的连接用来传输数据

FTP基于C/S模式,FTP客户端与服务器端有两种传输 模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。

主动模式  PORT

被动模式   PASV

FTP主被动模式,默认为主动模式,设置为被动模式使用端口方法如下:

pasv_enable=YES

pasv_min_port=YES

pasv_min_port=YES

【Vsftpd.conf配置文件详解】

/etc/vsftpd/vsftpd.conf             #主配置文件

anonymous_enable=YES                #允许匿名用户访问

local_enable=YES                    #允许本地用户访问

write_enable=YES                    #本地系统用户写入权限

local_umask=                      #本地用户创建文件及目录默认权限掩码

anon_upload_enable=YES               #匿名用户是否可以上传

anon_mkdir_write_enable=YES          #匿名用户是否可以创建

dirmessage_enable=YES                #如果目录存在。message隐藏文件,进入该目录,会显示.message

xferlog_std_from_port_20=YES         #FTP使用20端口进行数据传输

xferlog_std_format=YES               #日志文件将根据xferlog的标准格式写入

listen=NO                            #Vsftpd不以独立的服务启动,通过xinetd服务服务进行管理,建议改成YES

listen_ipv6=YES                      #启用IPv6监听     
pam_service_name=vsftpd #列出与pam相关的文件名称,即/etc/pam.d/目录下 的文件名称 userlist_enable=YES #vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP tcp_wrappers=YES #设置vsftpd与tcp wrapper结合进行主机的访问控制,vsftpd服务检查/etc/hosts.allow和/etc/hosts.deny中的设置,来决定请求连接的主机,
是否允许访问该FTP服务器

【本地用户实战】

# yum install -y vsftpd libdb libdb-utils --skip-broken

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES #开启系统用户验证
write_enable=
YES #写入权限
local_umask=
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/
user_list #对应的是系统列表,
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES #启用用户列表文件
userlist_deny=
NO #不禁用用户列表中的用户
tcp_wrappers=YES

useradd -M -s /sbin/nologin ftpuser   #创建系统用户,用于访问ftp

passwd ftpuser   #设置密码

echo "ftpuser" >> /etc/vsftpd/user_list    #将ftpuser系统用户添加用户列表。

mkdir /home/ftpuser

chown ftpuser:ftpuser /home/ftpuser/

systemctl restart vsftpd

ps:这里要保证/home/ftpuser目录权限属主属组是对应的系统用户以及读写权限

验证:

【 vsftp虚拟用户实战】

如果是基于vsftpd系统用户访问FTP服务器,系统用户越来越不利于 管理,而且不利于系统安全管理。因此,为了能更加的安全使用vsftpd,需要vsftpd虚拟用户方式,

vsftpd虚拟用户原理:虚拟用户就是没有实际真实系统用户,而是通过映射到其中真实用户以及设置相应的权限来实现访问验证的,虚拟用户不能登入linux系统,从而保证了系统更加安全可靠

# yum install -y vsftpd libdb libdb-utils --skip-broken

#useradd -s /sbin/nologin vsftpduser       #所有vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用

# vim /etc/vsftpd/ftpuser.txt        #创建虚拟用户临时文件/etc/vsftpd/ftpuser.txt;

xiaoyu
123456
xiaozhang
123456

# db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db     #生成VSFTPD虚拟用户数据库认证文件,设置权限700
# chmod 700 /etc/vsftpd/vsftpd_login.db
# file /etc/vsftpd/vsftpd_login.db
/etc/vsftpd/vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)

# vim /etc/pam.d/vsftpd        #配置PAM认证文件,/etc/pam.d/vsftpd行首加入以下配置

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

# vim /etc/vsftpd/vsftpd.conf 

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#config virtual_userFTP
guest_enable=YES #启用虚拟用户
guest_username=vsftpduser #映射虚拟用户至系统用户vsftpduser
user_config_dir=/etc/vsftpd/vsftpd_user_conf #设置虚拟用户所在的目录
virtual_use_local_privs=YES #虚拟用户使用与本地用户相同的权限

# mkdir -p /etc/vsftpd/vsftpd_user_conf/             #创建虚拟用户配置文件所在的目录,与上述vsftpd.conf配置所对应

# vim /etc/vsftpd/vsftpd_user_conf/xiaoyu   #创建虚拟用户配置文件,例如:创建xiaoyu这个虚拟用户,

local_root=/home/vsftpduser/xiaoyu             #xiaoyu虚拟用户配置文件路径
write_enable=YES #允许登录xiaoyu有写入权限
anon_world_readable_only=YES #允许匿名用户下载,然后读取文件
anon_upload_enable=YES #允许匿名用户上传文件权限,只有在write_enable=YES时该配置参数才生效
anon_mkdir_write_enable=YES #允许匿名用户创建目录,只有在write_enable=YES时改配置参数才生效
anon_other_write_enable=YES #允许匿名用户其他全权限,如修改全权限,删除,改名等

创建虚拟用户 各自的虚拟目录

# mkdir -p /home/vsftpduser/{xiaoyu,zhangsan};      #在系统用户vsftpduser的家目录各自创建虚拟用户的虚拟目录,并授权
# chown -R ftpuser:ftpuser /home/ftpuser/xiaoyu

# ll -d /home/vsftpduser/xiaoyu/
drwxr-xr-x. 2 ftpuser ftpuser 18 6月 24 17:32 /home/vsftpduser/xiaoyu/

# systemctl restart vsftpd
# netstat -anput | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 3271/vsftpd
[root@localhost ~]# systemctl enable vsftpd

在本地客户端验证即可!

【主动与被动模式】

在本章博客开篇中讲到vsftp主备动模式的原理,首先我们需要知道的是,vsftp的主被动是相对于FTPServer端来说的,

主动模式:server主动向客户端发起连接请求

被动模式:server等待客户端发起连接请求(默认模式)

那么问题来了,再生产环境中,如何选择主被动模式呢?可以遵循以下规则:

1)客户端没有设置防火墙,选用主动模式

2)服务端没有防火墙,选择使用被动模式

3)双方都有防火墙的情况下, vsftpd可以服务端设置端口范围,选用被动模式

【拓展】

参数详解

-A:启用主动模式
-p:启用被动模式(默认为ftp和pftp)
-i:在mget中关闭提示
-n:禁止自动登录
-e:禁用readline支持(如果存在)
-g:禁用文件名通配符
-m:不要强制数据通道接口与控制通道相同
-v:详细模式
-t:启用数据包跟踪[无功能]
-d:启用调试

ftp> user xiaoyu 1       #user是传递用户名密码的命令
331 Please specify the password.
230 Login successful.

ftp> dir    #查看所在的文件内容
227 Entering Passive Mode (127,0,0,1,109,22).
150 Here comes the directory listing.
drwxr-xr-x 2 500 500 4096 Sep 08 01:09 test01
226 Directory send OK.
ftp>

#/bin/bash

ftp -n <<EOF
open 192.168.2.138
user xiaoyu 1
prompt     #不提示认证,直接执行上传
mput test01.txt
EOF

vsftp虚拟主机实战的更多相关文章

  1. vsftp虚拟主机

    ################################Vsftp服务器实战##########################################3 文件传输协议,基于该协议FT ...

  2. Apache入门篇(三)之apache2.4.33的新特性解析与虚拟主机实战

    1.http 2.4新特性 新特性: (1) 在编译时可以将多个MPM构建为可加载模块,可以在运行时通过LoadModule指令配置所选的MPM: (2) 2.2版本的event MPM在实验阶段,到 ...

  3. Apache虚拟主机实战

    [root@localhost ~]# wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.2.32.tar.bz2  [root@localho ...

  4. Linux安装Nignx基于域名的多虚拟主机实战

    看这个文章之前,要保证你的Nginx已经安装成功! 如果没有,请移步到下面这个文章,看完后再回来看! https://www.cnblogs.com/apollo1616/p/10214531.htm ...

  5. nginx笔记 安装nginx 配置 反向代理 多虚拟主机

    1,检测linux上是否 通过yum安装了nginxrpm   -qi  nginx 2.安装nginx之前的依赖包yum install gcc patch libffi-devel python- ...

  6. Nginx安装与升级(包括虚拟主机)

    Nginx WEB服务器最主要就是各种模块的工作,模块从结构上分为核心模块.基础模块和第三方模块,其中三类模块分别如下: 核心模块:HTTP模块.EVENT模块和MAIL模块等: 基础模块:HTTP ...

  7. ***阿里云ECS实战配置虚拟主机 + Apache 配置虚拟主机三种方式

    阿里云ECS实战配置虚拟主机 买了一台ECS阿里云服务器,性能感觉有点富余,想着可以陪着虚拟主机多一些WWW目录好放一些其他的程序.比如DEMO什么的. 今天研究了下,主要是就是做基于不同域名的虚拟主 ...

  8. nginx配置实战1----配置虚拟主机

    1 nginx虚拟主机的概念 虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点.应用组件等,提供必要的站点功能.数据存放和传输功能,所谓虚拟主机,也叫"网站空间",就是把 ...

  9. 基于虚拟主机的HAProxy配置实战

    本实例是如上图所示 主要实现的功能如下: 当客户访问www.tb.com/tb.com的时候HAProxy将网站提交到电商服务器集群当访问bbs.tb.com的时候,将访问请求调度到论坛集群,实现论坛 ...

随机推荐

  1. Python2018-列表的相关操作

    列表中存放的数据是可以进行修改的,比如"增"."删"."改" .“查” "增"-----append, extend, ...

  2. django-form介绍

    Django form表单   目录 普通方式手写注册功能 views.py login.html 使用form组件实现注册功能 views.py login2.html 常用字段与插件 initia ...

  3. Java实现三大简单排序算法

    一.选择排序 public static void main(String[] args) { int[] nums = {1,2,8,4,6,7,3,6,4,9}; for (int i=0; i& ...

  4. Shiro配置URL过滤

      常用过滤器: anon     不需要认证 authc     需要认证 user     验证通过或RememberMe登录的都可以   URL说明: /admin?=authc      表示 ...

  5. 分布式系统的一致性协议之 2PC 和 3PC

    在分布式系统领域,有一个理论,对于分布式系统的设计影响非常大,那就是 CAP 理论,即对于一个分布式系统而言,它是无法同时满足 Consistency(强一致性).Availability(可用性) ...

  6. LONG数据类型转换为VARCHAR2并相互转换

    --方法1,支持表 --plsql中将long类型隐式转换为varchar2,但是sql不能CREATE OR REPLACE FUNCTION LONG_TO_CHAR( in_rowid rowi ...

  7. poj1562 Oil Deposits 深搜模板题

    题目描述: Description The GeoSurvComp geologic survey company is responsible for detecting underground o ...

  8. 计算机信息类ComputerInfo(车)

    using System; using System.Management; using System.Net; using System.Net.Sockets; using System.Text ...

  9. 学了这么久,vue和微信小程序到底有什么样的区别?

    前言 写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别.相比之下,小程序的钩子函数要简单得多. 一.生命周期 先贴两张图: vue生命周期 小程序生命周期   相比之下 ...

  10. 【MySql】join操作

    飞机票 飞机票 加油 INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN( ...