FTP主动模式和被动模式

FTP(File Transfer Protocol)是文件传输协议的简称。正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP支持两种方式的传输:文本(ASCII)方式和二进制(Binary)方式。通常文本文件的传输采用ASCII方式,而图象、声音文件、加密和压缩文件等非文本文件采用二进制方式传输,如果为了从一个系统上传输文件而使用了与本地系统不同的计算机字节位数,那么就必须使用Tenex模式。FTP以ASCII方式作为缺省的文件传输方式。

(1) PORT(主动模式)

​ PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:

(2) PASV(被动模式)

​ PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:

2、安装ftp

yum install vsftp

(1)开启ftp、查看状态 、端口

systemctl start vsftpd #开启ftp服务

systemctl status vsftpd #查看状态

ps -aux|grep vsftpd #查看进程

netstat -tnlp|grep 21 #查看21端口

(2)先将防火墙和selinux关闭,先允许匿名用户、普通用户登录,并上传下载功能。

systemctl stop firewalld.service

setenforce 0

getenforce

(3)做虚拟用户登录,真是不存在系统中的用户。

a、先安装虚拟用户需要的安装的软件包

yum install pam* libdb-utils libdb* --skip-broken -y

b、创建虚拟用户临时文件 /etc/vsftpd/ftpusers.txt,新建虚拟用户和密码nihao、123 奇数行是账号偶数行是密码

c、生成vsftpd虚拟用户数据认证文件,设置权限700:

db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db  #将明文密码转换

chmod 700 /etc/vsftpd/vsftpd_login.db /etc/vsftpd/ftpusers.txt

d、配置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

e、所有vsftp虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要是用于虚拟用户映射使用,创建命令如下:

useradd -s /sbin/nologin ftpuser

f、完整vsftpd.conf配置创建代码

pam_service_name=vsftpd 虚拟用户启用pam认证

guest_enable=YES 启用虚用户

guset_username=ftpuser 映射虚拟用户至系统用户ftpuser

user_config_dir=/etc/vsftpd/vsftpd_user_conf 设置虚拟用户配置文件目录

virtual_use_local_privs=YES 虚拟用户使用与本地用户相同的权限

g、所有虚拟用户共同基/home/ftpuser 主目录实现上传和下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录

mkdir -p /etc/vsftpd/vsftpd_user_conf

h、为虚拟用户创建配置文件 nihao1 、nihao2、

vim /etc/vsftpd/vsftpd_user_conf/nihao1 同时创建私有的虚拟目录,代码如下:

local_root=/home/ftpuser/nihao1

write_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

i、创建虚拟用户各自虚拟目录:

mkdir -p /home/ftpuser/{nihao1,nihao2} : chown -R ftpuser.ftpuser /home/ftpuser

测试结果如下

可在用户下创建文件

FTP原理和虚拟用户映射登录-2019.2.8的更多相关文章

  1. CentOS 7搭建vsftp(虚拟用户方式登录)

    说明: vsftpd的版本:vsftpd-3.0.2-22.el7.x86_64 ftp 根目录 : /data/ftp ftp 配置文件目录:/etc/vsftpd ftp 虚拟用户权限配置文件目录 ...

  2. vsftpd配置虚拟用户为登录用户02

    1.安装vsftpd 安装依赖包: yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl 新建vsftpd系统用户: #建立Vsft ...

  3. ftp安装和虚拟用户创建

    安装 1.安装 sudo apt-get install vsftpd 2 查看安装结果 安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口 ps -eaf|grep vsftpd ...

  4. ftp安装和虚拟用户创建(终于搞清楚了)

    安装 一.安装 sudo apt-get install vsftpd 二.查看安装结果 安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口 ps -eaf|grep vsftpd ...

  5. Centos下安装FTP并进行虚拟用户访问方式配置

    1. 安装认证所需包 [root@localhost]#yum install pam* [root@localhost]#yum install db4* 首先安装PAM(用于用户认证)和DB4(用 ...

  6. Linux上FTP部署:基于mariadb管理虚拟用户

    FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/ ...

  7. Linux:FTP服务匿名用户,本地用户,虚拟用户配置

    匿名用户  FTP协议占用两个端口号: 21端口:命令控制,用于接收客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据. 实验:匿名访问,服务器192.168.10.10    客户 ...

  8. vsftpd搭建ftp服务,并实现虚拟用户访问

    安装vsftpd服务: yum install vsftpd -y [root@wadeson ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd /etc/pam. ...

  9. 构建基于虚拟用户的vsftpd服务器

    安装: [root@server ~]# yum install -y vsftpd [root@server ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd / ...

随机推荐

  1. SQL注入之代码层防御

    [目录] 0x0 前言 0x1 领域驱动的安全 1.1 领域驱动的设计 1.2 领域驱动的安全示例 0x2 使用参数化查询 2.1 参数化查询 2.2 Java中的参数化语句 2.3 .NET(C#) ...

  2. springboot通过poi导出excel

    Maven引入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi< ...

  3. url后面带斜杠与不带斜杠的区别

    比如: https://www.baidu.com/test/ https://www.baidu.com/test 当Web服务器接收到对某个末尾不含斜杠的url请求时,例如https://www. ...

  4. day24类的继承

    类的继承1 什么是继承    继承一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类\基类\超类    python中继承的特点:        1. 子类可以遗传/重用父类的属性   ...

  5. day9笔记整理,记忆

    函数的使用:一 定义函数的三种形式 1.1 无参函数 1.2 有参函数 1.3 空函数二 调用函数的三种形式 2.1 语句形式    def foo():   print('from foo')    ...

  6. 零基础学习python_异常处理(32-33课)

    我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...

  7. linux问题集

    Too many authentication failures for root (code 2) 原因:服务器可能由于装了一下安全软件导致有时用ssh远程工具登陆不了,提示太多认证失败for ro ...

  8. android 开发 xml绘制shape与Selector与layer-list 一 基础篇

    首先我们先来了解状态效果 android:state_pressed=["true" | "false"]  按下状态 android:state_focuse ...

  9. [Android] SeekBar---可拖动进度条

    SeekBar---可拖动进度条 ()setMax //设置SeekBar最大数值 ()setProgress //设置SeekBar当前数值 ()setSecondaryProgress//设置Se ...

  10. TP5中文件的写入路径有的会被自动重定向到首页

    TP5中文件的写入路径有的会被自动重定向到public public function export() { $model=model('FanweUser'); $list=$model->w ...