FTP服务搭建与配置 (资源)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

FTP介绍

• FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。

• 文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上的意思

• 在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。

• FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。

 FTP的传输有两种方式:ASCII传输模式二进制数据传输模式

• ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

• 二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

 

• FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。20端口用于建立数据连接并传输文件数据;21端口用于建立控制连接,并传输FTP控制命令。

 

  • 主动模式:服务器主动发起数据连接。首先客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,客户端以PORT命令告知服务器“我打开了某端口,你过来连接我”,于是服务器从20端口向客户端的该端口发送请求并建立数据连接。

  • 被动模式:服务器被动等待数据连接。如果客户机所在网络的防火墙禁止主动模式连接,通常会使用被动模式。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,服务器以PASV命令告知客户端“我打开了某端口,你过来连接我”,于是客户端向服务器的该端口发送请求并建立数据连接

• Vsftpd是FTP服务器端软件,基于FTP协议实现的文件发布、共享用于部署在Linux服务,vsftpd在速度和稳定性方面的表现也相当突出。可以支持15000个用户并发连接。,在windows系统中,常见的FTP服务器软件包括FileZilla Sener、Serv-U等;FTP客户端工具的种类,windows中常用的包括CuteFTP、FlashFXP、LeapFTP、Filezilla等;

FTP的传输有两种方式:ASCII(文本模式)传输模式和二进制(binary)数据传输模式。

1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。
2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

注意    :    WIN系统两个都支持 linux最好使用二进制,不然有时候会出错。

常用的ftp文件传输命令为:bin、asc、put、get、mput、mget、prompt、bye。

• FTP的工作方式   :  

一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

FTP是一种文件传输协议,HTTP是超文本传输协议,http://192.168.111.128/ ,基于FTP协议ftp://192.168.111.128/,协议不同,实现功能就不一样;

• 互联网传输底层基于TCP/IP协议(4层、FTP基于应用层、IP、port传输)

•  如果想配置一台匿名ftp 服务器,应修改 /etc/ftpusers  文件

•安装vsftpd软件,二进制rpm安装、zip解压;源码基于GCC编译。yum install  vsftpd* -y; systemctl restart vsftpd.service启动FTP服务;

•FTP默认以匿名用户ftp访问,发布目录:/var/ftp/pub,chmod o+w /var/ftp/pub  -R;chown –R ftp.ftp /var/ftp/ -R

•FTP基于TCP协议生成以恶搞虚拟的链接,主要用于控制FTP链接信息,同时再生成以恶搞单独的TCP链接用于FTP连接用于FTP数据传输,

•Vsftpd基于GPL开源协议发布,在中小企业中得到广泛的应用,Vsftpd可以快速上手,基于Vsftpd虚拟用户方式,访问验证更加安全。Vsftpd还可以基于MYSQL数据库做安全验证,多重安全防护。

• /etc/vsftp/目录,主配置文件目录,启动vsftp服务,systemctl restart vsftpd.service=service vsftpd restart

FTP客户端软件

FileZilla client

ftp客户端软件我选择开源的filezilla,体验还不错。其中它还支持sftp,通过ssh连接远程的Linux,不建议大家在服务器上搭建ftp服务。

FTP服务搭建与配置 (资源)_第1张图片

 

Vsftpd虚拟用户

A.  使用Linux系统不存在的用户去实现FTP文件上传、下载;

B.必须要一个真实用户,只要一个用户;

C.虚拟用户跟真实用户做一个映射;

D.虚拟用户不放在系统,存放在哪里?DB库

Vsftpd软件概念

  1. FTP一种文件传输协议,跟文件管理相关;
  2. FTP用于文件传输、上传、下载、发布共享;
  3. 客户端基于FTP协议可以实现文件上传、下载;
  4. 服务端基于FTP协议可以实现文件发布、共享;
  5. FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

 

Vsftpd的实现有三种方式


1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问
2、本地用户形式:以/etc/passwd中的用户名为认证方式
3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案。

注意       :         匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。

通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。

   注意:虚拟用户没有真实的系统用户,必须要有一个系统用户跟虚拟用户做映射,虚拟用户访问FTP服务器,基于系统用户映射,系统用户的权限,虚拟用户都可以拥有,操作系统必须创建一个用户(该用户无需登录系统,无需密码,无需SHELL环境)。

   FTP默认以匿名用户ftp访问,发布目录:/var/ftp/pub,chmod o+w /var/ftp/pub  -R;chown –R ftp.ftp /var/ftp/ -R

FTP服务搭建与配置 (资源)_第2张图片

     FTP系统用户登录方式,只需要创建Linux系统用户,设置系统的密码,发布目录在自己的家目录,/home/xxxx/(100个用户,系统会不安全、安全隐患。)(useradd wzq ,passwd123456)

 

• 小公司用的多,大企业不用FTP,因为不安全

以往的CentOS版本是需要安装portmap包的,从CentOS 6开始,就改为安装rpcbind包了, 

• 创建vsftpd临时虚拟用户文件,明文存储用户名和密码,每次添加虚拟用户,用户名和密码写入该文件;

• 基于虚拟用户临时文件,通过db_load生成db数据库文件,用于虚拟用户登录认证;

• 为了安全起见,设置虚拟用户临时文件和db文件权限为600或者700;

• 基于pam模块,调用db_load生成的数据文件,实现登录验证;

• 修改vsftpd.conf配置文件,启用虚拟用户配置,创建虚拟用户配置文件,设定虚拟用户权限;

• 创建虚拟用户发布目录,并且授权发布目录,通过资源管理登录访问验证即可;

ftp基于tcp协议,C/S架构 客户端、服务器端,服务器端FTP软件:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server

        Server: wu-ftpd, proftpd ,pureftp,vsftpd:(Very Secure ftpd),IIS,ServU

        Client:

            GUI: flashfxp,cuteftp,filezilla(开源), gftp(Linux)

            CLI:ftp, lftp,wget, lftpget

FTP服务器介绍和配置https://blog.csdn.net/tanga842428/article/details/54015634

ftp的传输机制

            1) 命令连接和数据传输连接

FTP服务搭建与配置 (资源)_第3张图片 

  最开始,只建立命令连接,当执行get命令时,开启另一端口建立文件传输连接,如果get多个文件,则建立多个连接。文件传输结束时,拆除相应的文件连接。

  2) 数据连接的主动模式和被动模式 

                 FTP服务搭建与配置 (资源)_第4张图片

主动连接:通常客户端会装有防火墙,不允许别人主动对客户端发起连接

被动连接:可以通过服务器端连接追踪机制来解决防火墙问题,无论访问哪个端口,端口必须和已经建立的链接产生关系。 

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

            主动模式下: 服务器工作在20号端口 

FTP服务搭建与配置 (资源)_第5张图片

            被动模式下: 服务器工作在随机端口  

FTP服务搭建与配置 (资源)_第6张图片

       FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。主被动模式如图8-2(a)、8-2(b)所示,主被动模式详细区别如下:

         (1)、FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

         针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

        1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)

        2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)

        3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)

        4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

    (2)、FTP被动(PASV)模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

        在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

       对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

      1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)

     2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)

    3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

    4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

    以上关于主动和被动FTP的解释,可以简单概括为以下两点:

        1、主动FTP:  
               命令连接:客户端 >1024端口       --->           服务器 21端口  
               数据连接:客户端 >1024端口       <---          服务器 20端口    
       2、被动FTP:    
               

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)

2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)

3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

以上关于主动和被动FTP的解释,可以简单概括为以下两点:

 

    (一)、主动FTP:  
           

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

         1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)

        2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)

        3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

       4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

(二)、被动FTP

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

     1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)

     2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)

     3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

    4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

 

以上关于主动和被动FTP的解释,可以简单概括为以下两点:

    1、主动FTP:  
            命令连接:客户端 >1024端口       --->           服务器 21端口  
            数据连接:客户端 >1024端口       <---          服务器 20端口    
    2、被动FTP:    
            命令连接:客户端 >1024端口      --->            服务器 21端口    
            数据连接:客户端 >1024端口      --->            服务器 >1024端口

 

主动与被动FTP优缺点 :

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。


注意     :对于客户端和服务端都是有防火墙的服务器来说,不管是主动FTP还是被动FTP,FTP服务端都不能只开放21端口。

 

 3). 传输数据: 

            流式话数据: 可以存入硬盘

                                文本文件, 二进制文件 等

    

    4). 用户认证机制: 

        1) 系统用户

        2) 虚拟用户。通常存放在文件或者数据库中

                hash file 

                mysql 

        3) 匿名用户 

    5). 数据传输安全机制: 

        sftp :ssh提供基于ssh协议的ftp服务

        ftps :基于ssl的ftp 

    7). 响应码 

            1xx:信息码 

            2xx:成功状态吗 

            3xx:进一步提示补全信息的状态 

            4xx:客户端错误

            5xx:服务器端错误

 

SHELL实战Vsftpd虚拟用户配置(添加一个新用户)

  1. Vsftpd软件安装方式,基于源码编译、二进制方式YUM|RPM安装;
  2. 创建vsftpd临时虚拟用户文件,明文存储用户名和密码,每次添加虚拟用户,用户名和密码写入该文件;
  3. 基于虚拟用户临时文件,通过db_load生成db数据库文件,用于虚拟用户登录认证;
  4. 为了安全起见,设置虚拟用户临时文件和db文件权限为600或者700;
  5. 基于pam模块,调用db_load生成的数据文件,实现登录验证;
  6. 明确虚拟用户原理:虚拟用户不需要在Linux系统存在,不需要登录Linux操作系统,基于一个系统用户实现访问映射(禁止该系统用户登录系统,只要存在系统即可);
  7. 创建一个映射系统用户,ftpuser,并且确保该用户禁止登陆系统;
  8. 修改vsftpd.conf配置文件,启用虚拟用户配置,创建虚拟用户配置文件,设定虚拟用户权限;
  9. 创建虚拟用户发布目录,并且授权发布目录,通过资源管理登录访问验证即可;

 

使用vsftpd搭建ftp服务

安装NFS服务需要安装两个包(nfs-utils和rpcbind)

• centos上自带vsftpd

• yum install -y vsftpd*                                #安装vsftpd 

• 基于Vsftpd源码编译安装,./configure;make;make install;

卸载Vsftpd软件方法:(源码或者YUM|RPM)

源码卸载:

rm -rf  /usr/local/vsftpd/

YUM卸载:

yum remove vsftpd* -y;                                     #删除ftp包

find / -name "*vsftpd*" -exec rm -rf {} \;                #删除所有的ftp文件

rm -rf /etc/vsftd/                               #删除目录

userdel -r ftpuser                              #删除用户

使用命令:ps -ef | grep vsftp                           #查看ftp是否在运行

FTP服务搭建与配置 (资源)_第7张图片

systemctl restart vsftp.service   =service vsftp restart     =/etc/init.d/vsftpd restart                   #重启ftp服务

FTP服务搭建与配置 (资源)_第8张图片

netstat -tnlp                               #查看FTP端口21

rpm -qa |grep vsftpd                查看系统是否安装Vsftpd软件;

rpm -ql vsftpd |more                 查看系统安装vsftpd的路径;

rpm -iv pptpd-1.4.0-3.el6.x86_64.rpm               #安装软件,,-v会显示安装过程。

rpm -e pptpd                     #卸载pptpd

rpm -ql vsftpd|grep etc|grep -E "conf|cnf",         主配置文件,一般以软件主名称开头.conf结尾;主配置文件一般都在/etc/

Vsftpd默认访问方式,匿名用户(ftp用户):

1、anonymous

2、ftp

查看FTP匿名用户的发布目录:

find / -name pub

/var/ftp/pub路径

 

安装问题:

[root@localhost ~]# yum  install  vsftpd*  -y

Error downloading packages:

vsftpd-sysvinit-3.0.2-21.el7.x86_64: [Errno 256] No more mirrors to try.

vsftpd-3.0.2-21.el7.x86_64: [Errno 256] No more mirrors to try.

Could not resolve host: mirrorlist.centos.org; Unknown error"

解决方案:

  1. yum clean all清除YUM缓存;
  2. ping mirrorlist.centos.org是否能够ping通;
  3. 检查服务器DNS是否配置正确;
  4. 检查本地YUM源是否正常,cd /etc/yum.repos.d/,检查以.repo文件;
  5. 更换YUM源,或者挂载本地光盘,通过光盘中文件去安装;

cd /etc/yum.repos.d/

FTP服务搭建与配置 (资源)_第9张图片

FTP服务搭建与配置 (资源)_第10张图片

注意:

  1. 默认安装的Vsftpd匿名用户,不需要用户名、密码登录、访问;
  2. 默认不能上传、下载、创建、更新;

vim /etc/yum.repos.d/dvd.repo  

[yum]

name=Centos 7.2

baseurl=file:///mnt/cdrom

enabled=1

gpgcheck=0

 

查找YUM|rpm安装的主配置文件

  1. 以.conf结尾只是配置文件,主配置文件一般都在/etc/

    rpm -ql vsftpd|grep etc|grep -E "conf|cnf",主配置文件,一般以软件主名称开头.conf结尾;

实战

实现上传下载功能

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]#  ls

ftpusers     user_list    vsftpd.conf             vsftpd_conf_migrate.sh

[root@localhost vsftpd]# vim vsftp.conf

修改三个地方

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES                  #添加的删除功能,这三个放在一起

去掉vsftpd.conf配置文件#号;

FTP服务搭建与配置 (资源)_第11张图片

 

[root@localhost vsftpd]#  systemctl restart vsftpd.service            #重启FTP服务
[root@localhost vsftpd]#  !ps

然后就可以上传下载到服务器pub目录,pub目录是发布目录,查看pub目录命令:find / -name pub.

创建一百个用户,命令:for i in 'seq 1 100';do echo wzq$i;done   #密码和用户名都是wzq

 

创建一百个用户,同时设置密码

命令:for i in 'seq 1 100';do useradd wzq$i;echo 123456$i|passwd -stdin;done

for i in 'seq 1 100';do useradd wzq$i;echo 123456$i|passwd -stdin 123456;done

查看100个用户

cd /home

ls

或者

vim /etc/passwd

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

注意:一个大于号是覆盖,两个是追加

 

虚拟用户配置方法:

(1)、安装VSFTP虚拟用户需要用到的软件及认证模块  

yum  install  pam* libdb-utils  libdb*  --skip-broken  -y             #libdb库是存放虚拟用户和密码的

注意:centos6需要安装db4库,centos 7安装libdb

(2)、创建虚拟用户临时文件/etc/vsftp/ftpusers.txt,新建虚拟用户和密码,其中wzq001,wzq002为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可:

#cd /etc/vsftpd/

#vim ftpusers.txt                  #创建虚拟用户

wzq001

123456

wzq002

123456

#cat ftpusers

#chmod 700 ftpusers.txt      

#ll

 

(3)、生产vsftp虚拟用户数据认证文件,设置权限700:

#db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db

#ll vsftpd_login.db                      #查看库

#chmod 700 /etc/vsftp/vsftpd_login.db

#

 

(4)、配置PAM认证文件,/etc/pam.d/vsftpd文件加入如下两行(把里面的东西清空):

# vim /etc/pam.d/vsftpd

auth           required           pam_userdb.so       db=/etc/vsftpd/vsftpd_login        #认证信息

account     repuired          pam_userdb.so           db=/etc/vsftpd/vsftpd_login      #账户信息

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

useradd -s /sbin/nologin ftpuser                                 #创建一个真实用户,不允许登录

(6)、完整vsftpd.conf配置文件代码(添加的内容)如下:

#gloabal config Vsftp 2018

anonymous_enable=YES                #开启匿名用户访问

local_enable=YES                #启动本地系统用户访问

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

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

dirmessage_enable=YES          #打印用户创建文件及目录默认权限掩码

xferlog_enable=YES           #启用上传下载日志记录

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

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

listen=NO                 #

Llisten_ipv6=YES         #

 

添加的内容

#config virtual user FTP

pam_service_name=vsftpd

guest_enable=YES

guest_username=ftpuser

user_config_dri=/etc/vsftp/vsftpd_user_conf

virtual_use_local_privs=YES

如上vsftp虚拟用户配置文件参数详解:

#config virtual user FTP

pam_service_name=vsftp                                  #虚拟用户启用PAM认证

guest_enable=YES                                               #启用虚拟用户

guest_username=ftpuser                                   #映射虚拟用户至系统用户ftpuser  user_config_dir=/etc/vsftpd/vsftpd_user_conf      #设置虚拟用户配置文件所在的目录     

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

FTP服务搭建与配置 (资源)_第12张图片

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

#cd /etc/vsftpd/vsftpd_user_conf

#touch wzq001

#vim wzq001

local_root=/home/ftpuser/wzq001

write_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES                     #允许匿名用户创建目录,只有write_enable=YES

anon_other_write_enable=YES         #允许匿名用户其他权限,例如删除、重命名等,

mkdir -p /etc/vsftpd/vsftpd_user_conf/

cd /home/ftpuser/                      #切换到/home/ftpuser/  

mkdir wzq001                           #创建目录wzq001      

(8)、如下分别为虚拟用户wzq001,wzq002用户创建配置文件:

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

local_root=/home/ftpuser/wzq001

write_enable=YES

anon_world_readable_only=YES

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

local_root=/home/ftpuser/wzq002

writre_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_enable=YES

虚拟用户配置文件内容详解:

local_root=/home/ftpuser/wzq002                  #wzq002虚拟用户配置文件路径

write_enble=YES                                         #允许登录用户有写的权限;

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               #允许匿名用户其他权限,例如删除、重命名等。

 

(9)、创建虚拟用户各自虚拟目录:

mkdir -p /home/ftpuser/{wzq001,wzq001}

chown -R ftpuser:ftpuser /home/ftpuser

cd

systemctl restart vsftp.service                                       #重启一下

重启vsftp服务,通过winodws客户端资源管理器vsftp服务端,VSFTP默认不需要密码,测试结果如图8-8

FTP服务搭建与配置 (资源)_第13张图片

FTP服务搭建与配置 (资源)_第14张图片

 

(10)、查看上传下载的所有的文件:cd /wzq001/

#ls

重要的目录

 1、/etc/pam.d/vsftpd              认证文件存放目录      
 2、/etc/rc.d/init.d/vsftpd        服务脚本  
 3、/usr/sbin/vsftpd               主程序文件   ​​
4/etc/vsftpd/vsftpd.conf        主配置文件   
5、/etc/vsftpd/ftpusers           用户黑名单 
6 、/etc/vsftpd/user_list         用户限制名单 userlist_deny=NO 仅允许此名单用户登录,
userlist_deny=YES   
7、不允许用户名单的用户登录  
 8、/var/ftp/pub                   共享文件所在位置  

关于pam的认证文件

 ## 文件所在位置/etc/pam.d/vsftpd 关于认证文件 
        pam: Plugable Authentication Module: 插件式认证模块 
            1) nsswitch: 名称解析框架 
                模块: /lib64/libnss* , /usr/lib64/libnss* 
                配置文件: /etc/nsswitch.conf 
            2) 用户认证框架 
                模块化:/lib64/security/pam*.so 
                配置文件:/etc/pam.conf 和 /etc/pam.d/*   

 

• yum install -y vsftpd                                #安装vsftpd 

• useradd -s /sbin/nologin virftp

• vim /etc/vsftpd/vsftpd_login //内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行

testuser1                                      #奇数行为用户名

aminglinux                                 #偶数行为密码

• chmod 600 /etc/vsftpd/vsftpd_login

• db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db        #转换成计算机二进制文件

• mkdir /etc/vsftpd/vsftpd_user_conf                     #创建虚拟文件所在的目录

• cd /etc/vsftpd/vsftpd_user_conf

 

• vim testuser1 //加入如下内容

local_root=/home/virftp/testuser1

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

 

• mkdir /home/virftp/testuser1

• touch /home/virftp/testuser1/aming.txt

• chown -R virftp:virftp /home/virftp

• vim /etc/pam.d/vsftpd //在最前面加上

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

 

• vim /etc/vsftpd/vsftpd.conf

• 将anonymous_enable=YES 改为 anonymous_enable=NO

• 将#anon_upload_enable=YES 改为 anon_upload_enable=NO

• 将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

•  再增加如下内容

chroot_local_user=YES

guest_enable=YES

guest_username=virftp

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

allow_writeable_chroot=YES

• systemctl restart vsftpd = service vsftpd restart      //启动vsftpd服务,/etc/vsftpd目录是主配置文件目录

 

ftp://139.199.228.59/ 匿名用户访问FTP服务器

FTP服务搭建与配置 (资源)_第15张图片

查找FTP发布目录

#find / -name pub

/var/ftp/pub

匿名用户实现上传、下载、删除:

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

对FTP匿名发布目录授权:

chmod  o+w   /var/ftp/pub –R

chown  -R  ftp.ftp  /var/ftp/pub

FTP服务搭建与配置 (资源)_第16张图片

系统用户登录FTP,发布目录:/home/xxxx/

jfedu666 1 其家目录:/home/jfedu666/

FTP服务搭建与配置 (资源)_第17张图片

关闭匿名用户访问:/etc/vsftpd/vsftpd.conf修改如下:

anonymous_enable=YES,将YES改成NO,重启VSFTPD服务即可

FTP服务搭建与配置 (资源)_第18张图片

 

使用shell脚本安装

#!/bin/bash

#201782215:34:24

#by author www.jfedu.net

#auto create vsftpd virtual user.

###################

#Install vsftpd server soft.

yum install vsftpd* db4* pam -y

#Create virtual tmp config files.

touch /etc/vsftpd/ftpusers.txt

echo "jfedu666

pw123" >/etc/vsftpd/ftpusers.txt

#Create virtual DB Files and create vsftpd pam module.

db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db

chmod 700 /etc/vsftpd/vsftpd_login.db

chmod 700 /etc/vsftpd/ftpusers.txt

echo "

auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/vsftpd_login

account sufficient      /lib64/security/pam_userdb.so      db=/etc/vsftpd/vsftpd_login

" >/etc/pam.d/vsftpd

#Create system user for virtual user.

useradd -s /sbin/nologin ftpuser

cat>>/etc/vsftpd/vsftpd.conf<

guest_enable=YES

guest_username=ftpuser

pam_service_name=vsftpd

user_config_dir=/etc/vsftpd/vsftpd_user_conf

virtual_use_local_privs=YES

EOF

#Mkdir Virtual config dir

mkdir -p /etc/vsftpd/vsftpd_user_conf

cat>/etc/vsftpd/vsftpd_user_conf/jfedu666 <

local_root=/home/ftpuser/jfedu666

write_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

EOF

mkdir -p /home/ftpuser/jfedu666/

chown -R ftpuser.ftpuser /home/ftpuser/

/etc/init.d/vsftpd restart

在RHEL6.5源码安装VSFTP

案例1 基于本地用户的ftp

  1. 查看并安装vsftp 

安装vsftp相关的软件包

[root@s2 /]# rpm -ivh /123/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

warning: /123/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing...                ########################################### [100%]

   1:vsftpd                 ########################################### [100%]

2、创建用户并指定其宿主目录

[root@s2 /]# mkdir –p /var/ftp/bc/sybg

[root@s2 /]# useradd -d /var/ftp/bc –s /sbin/nologin bc

[root@s2 /]# passwd bc

[root@s2 /]# useradd -d /var/ftp/bc/sybg –s /sbin/nologin bc2015

[root@s2 /]# passwd bc2015

3、为/var/ftp/bc设置权限,属主为bc,属组为bc2013  并设置其权限为735

[root@s2 /]# chown -R bc:bc2015  /var/ftp/bc/

[root@s2 /]# chmod -R 735 /var/ftp/bc/

 

4、修改vsftpd的主配置文件

anonymous_enable=YES  //开启匿名

local_enable=YES  //开启本地

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=YES

userlist_deny=NO

tcp_wrappers=YES

8、启动vsftpd服务

[root@s2 /]# service  vsftpd start

为 vsftpd 启动 vsftpd:                                    [确定]

9、查看服务是否正常,分别用linuxwindows做客户端来测试

可以安装flashftpcuteftp这样的软件来测试

我们会发现bc用户登录是完全控制的权限,bc2015是只能上传的

 

锁定目录:

6cc5932cf08f0f944ba40a0cffb464e6fe7.jpg

 

FTP服务搭建与配置 (资源)_第19张图片

 

 

建立基于虚拟用户的vsftpd服务

虚拟用户的好处在于:

可以将ftp登录的账号和系统的账号分开,进一步增强ftp的安全性

 

1、查看是否安装了vsftp相关的软件包

[root@s2 /]# rpm -qa | grep vsftp

 

2db4-utilsRHEL6.5中默认安装

fa874f88b10676db05e7693a01bb1c03dc1.jpg

 

 

3  建立虚拟用户的用户名/密码数据库库(/etc/vsftpd/vusers.list)

FTP服务搭建与配置 (资源)_第20张图片

FTP服务搭建与配置 (资源)_第21张图片

4 、用db_load工具将列表转化为DB数据库文件

[root@s2 ~]# cd /etc/vsftpd/

[root@s2 vsftpd]# db_load -T -t hash -f vusers.list vusers.db   //将文本格式转换为数据库文件

[root@s2 vsftpd]# file vusers.db

vusers.db: Berkeley DB (Hash, version 8, native byte-order)

[root@s2 vsftpd]# chmod 600 /etc/vsftpd/vusers.*   //降低文件权限以提高安全性

-f  选项用于指定用户名/密码列表文件  -T允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件 –t hash 选项指定读取数据文件的基本方法

 

5、建立FTP访问的根目录及虚拟用户对应的系统账户

[root@s2 vsftpd]# useradd  -d /var/ftproot -s /sbin/nologin  virtual    //建立映射账号virtual

[root@s2 vsftpd]# chmod -R 755

 /var/ftproot/  //更改FTP根目录的权限

6、建立PAM认证文件(/etc/pam.d/vsftpd.vu

auth    required        pam_userdb.so   db=/etc/vsftpd/vusers

account required        pam_userdb.so   db=/etc/vsftpd/vusers

FTP服务搭建与配置 (资源)_第22张图片

 

 

7、修改vsftpd.conf主配置文件,添加虚拟用户支持 (/etc/vsftpd/vsftpd.conf)

anonymous_enable=no   //不允许匿名

local_enable=YES   //使用虚拟用户需开启本地用户

write_enable=YES

local_umask=022

guest_enable=yes   //启用用户映射功能

guest_username=virtual   //将映射用户指定为virtual

dirmessage_enable=YES 

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd.vu   //修改使用的pam文件位置

userlist_enable=YES

tcp_wrappers=YES

user_config_dir=/etc/vsftpd/vusers_dir  //添加用户配置目录支持

 

以上红色部分是做虚拟用户时要增加的

 

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

[root@s2 vsftpd]# mkdir /etc/vsftpd/vusers_dir

[root@s2 vsftpd]# cd /etc/vsftpd/vusers_dir/

[root@s2 vusers_dir]# vi zhangsan

 

anon_upload_enable=yes            //允许上传

anon_mkdir_write_enable=yes       //允许创建和写入

anon_other_write_enable=yes       //允许重命名和删除

[root@s2 vusers_dir]# touch lisi

 

9、重启vsftpd服务

[root@s2 vusers_dir]# service vsftpd restart

Shutting down vsftpd: [  OK  ]

Starting vsftpd for vsftpd: [  OK  ]

 

验证虚拟用户zhangsanlisi,按照之前赋予的权限,比较zhangsanlisi之间的不同。

Selinux会影响ftp的访问,关闭selinux的命令

setsebool -P ftpd_disable_trans 1

 

 

实例:

安装vsftpd

[root@localhost-01 ~ ]# yum install -y vsftpd
[root@localhost-01 ~ ]# useradd -s /sbin/nologin virftp                    # 创建用户virftp
[root@localhost-01 ~ ]# vim /etc/vsftpd/vsftpd_login
testuser1
aminglinux    
user1
aaaaa1111
[root@localhost-01 ~ ]# chmod 600 /etc/vsftpd/vsftpd_login
[root@localhost-01 ~ ]#cat /etc/vsftpd/vsftpd_login
[root@localhost-01 ~ ]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@localhost-01 ~ ]# ls -l /etc/vsftpd/                                #查看生产的文件
[root@localhost-01 ~ ]# mkdir /etc/vsftpd/vsftpd_user_conf                 #创建虚拟文件所在的目录
[root@localhost-01 ~ ]# cd !$                                              #进入这个目录中,
cd  /etc/vsftpd/vsftpd_user_conf
[root@localhost-01 vsftpd_user_conf]# vim testuser1
local_root=/home/virftp/testuser1                                 #定义虚拟用户的家用户
anonymous_enable=NO                                              #是否允许匿名用户
write_enable=YES                                                #是否允许显示
local_umask=022                                                 #与系统上的umask一样的,
anon_upload_enable=NO                                           #是否允许匿名用户可上传文件
anon_mkdir_write_enable=NO                                       #是否允许匿名用户可创建目录
idle_session_timeout=600                                     #链接FTP,空闲时间超过600秒,自动断开
data_connection_timeout=120                          #数据传输时间,超过120秒,断开
max_clients=10                                              #最大的客户端
[root@localhost-01 sftpd_user_conf]# mkdir /home/virftp/testuser1
[root@localhost-01  sftpd_user_conf]# touch /home/virftp/testuser1/aming.txt
[root@localhost-01 sftpd_user_conf]# chown -R virftp:virftp /home/virftp                    #添加读的权限
[root@localhost-01 sftpd_user_conf]# vim /etc/pam.d/vsftpd                       #定义密码文件的位置,/etc/pam.d/vsftpd :认证的文件
auth sufficient /lib64/security/pam_userdb.so
db=/etc/vsftpd/vsftpd_login
[root@localhost-01 sftpd_user_conf]#cat !$                            #前两行是新增加的
[root@localhost-01 sftpd_user_conf] # ls /lib64/security/pam_useradb.so
[root@localhost-01 sftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
 将anonymous_enable=YES 改为 anonymous_enable=NO
将#anon_upload_enable=YES 改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

在最下面追加

chroot_local_user=YES
guest_enable=YES 
guest_username=virftp                                                    #映射的用户virftp
virtual_use_local_privs=YES                                                 #使用的是虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf                             #定义虚拟文件所在的路径
allow_writeable_chroot=YES
[root@localhost-01 sftpd_user_conf]# systemctl start vsftpd              #启动vsftpd服务
[root@localhost-01 sftpd_user_conf]# ps aux |grep vsftp               #查看进程vsftpd
[root@localhost-01 sftpd_user_conf]# netstat -lntp                      #查看vsftpd监听的端口 21

只查看21端口,方法:netstat -lntp | grep "\<21\>"

netstat -lntp | grep "21\>"

netstat -lntp | grep "\<21"

测试ftp

在Windows上安装filezilla client ,为了方便在Linux上直接安装

• yum install -y lftp

• lftp [email protected]

• 执行命令ls,看是否正常输出

• 若不正常查看日志/var/log/messages和/var/log/secure

• windows下安装filezilla客户端软件,进行测试

实例:

安装ftp软件

[root@localhost-01 sftpd_user_conf]# cd
[root@localhost-01  ]# yum install -y lftp
[root@localhost-01 ]# lftp [email protected]
口令:                      #输入密码123456
lftp testuserl127.0.0.1:~> ls
-rw -r -r -- 1 011    1021      0 Aug 08 09:10  aming.txt
lftp testuserl127.0.0.1:~> ?                                                #查看可执行的命令
lftp testuserl127.0.0.1:~> get aming.txt                                   #get到了当前目录
lftp testuserl127.0.0.1:~> quit                                            #退出来
[root@localhost-01 ~ ]# ls -lt |head                                       #查看是否有aming.txt

测试xftp

在Windows上面,下载xftp软件,并使用ctrl+alt+F命令打开

上传的时候,双击文件文档,或者用鼠标拖到左边的桌面上,

FTP服务搭建与配置 (资源)_第23张图片

在xshell5上面,把vsftp服务停掉

[root@localhost-01 ]# systemctl stop vsftp
[root@localhost-01  ]# !netst                                        #查看还有没有21端口
[root@localhost-01 ]# lftp [email protected]
口令:                      #输入密码123456
lftp testuserl127.0.0.1:~> ls

 

 

使用pure-ftpd搭建ftp服务

ctrl +alt +f               下载xftp

xftp链接命令:ctrl+alt+F

在机器上面新建一个,使用sftp协议,主机IP和之前一样。

•  yum install -y epel-release

• yum install -y pure-ftpd

• vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb这行,把行首的#删除

• systemctl stop vsftpd

• systemctl start pure-ftpd

• mkdir /data/ftp

• useradd -u 1010 pure-ftp

• chown -R pure-ftp:pure-ftp /data/ftp

• pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp

• pure-pw mkdb

• pure-pw list/userdel/usermod/passwd

实例:

安装pure-ftpd以及扩展源

[root@localhost-01 ]# yum install -y epel-release
[root@localhost-01 ~]# yum install -y pure-ftpd
[root@localhost-01  ]# yum install -y lftp
[root@localhost-01 ]# vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb这行,把行首的#删除
[root@localhost-01 ]# systemctl stop vsftpd                        #关闭vsftpd服务,释放21端口
[root@localhost-01 ]# systemctl start pure-ftpd                     #启动pure-ftpd​​
[root@localhost-01 ]# ps aux |grep ftp                              #查看ftp进程
[root@localhost-01 ]# netstat -lntp                                 #查看21端口
[root@localhost-01 ]# mkdir /data/ftp                      #/data/ftp存放 pure-ftpd用户的目录
[root@localhost-01 ]# useradd -u 1010 pure-ftp                 #创建 pure-ftp用户,指定UID1010
[root@localhost-01 ]# chown -R pure-ftp:pure-ftp /data/ftp
[root@localhost-01 ]pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp #指定ftp_usera用户名;创建系统用户pure-ftp,指定虚拟用户的家目录/data/ftp
[root@localhost-01 ~]# pure-pw mkdb
[root@localhost-01  ]# touch /data/ftp/123.txt
[root@localhost ~]# lftp [email protected]
口令:123456
lftp [email protected]:~> ls
drwx-xr-x    2 1020        pure-ftp         21 Aug   8 17:40 .
drwx-xr-x    2 1020        pure-ftp         21 Aug   8 17:40 .​.​​​​​
-rw-r--r--   1 0           0                 0 Aug   8 17:40 123.txt
lftp [email protected]:~> quit
[root@localhost-01 ~]# chown pure-ftp:pure-ftp /data/ftp/123.txt
[root@localhost ~]# lftp [email protected]
口令:123456
lftp [email protected]:~> ls
drwx-xr-x    2 1020        pure-ftp         21 Aug   8 17:40 .
drwx-xr-x    2 1020        pure-ftp         21 Aug   8 17:40 .​.​​​​​
-rw-r--r--   1 1020        pure-ftp          0 Aug   8 17:40 123.txt
lftp [email protected]:~> quit

 

简化版安装FTP服务器

Centos 6.7 搭建FTP服务器

安装vsftpd:

查看系统是否安装了FTP:

FTP服务搭建与配置 (资源)_第24张图片

启动vsftpd:  service vsftpd start

停止vsftpd:  service vsftpd stop

重启vsftpd:  service vsftpd restart

 

vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:

vsftpd.conf 为主要配置文件

ftpusers 配置禁止访问 FTP 服务器的用户列表

user_list 配置用户访问控制

配置防火墙:

vim /etc/sysconfig/iptables

添加如下代码:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

重启防火墙:

service iptables start

 

配置ftp服务器:

vi /etc/vsftpd/vsftpd.conf

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

FTP服务搭建与配置 (资源)_第25张图片

增加用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。

useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser

FTP服务搭建与配置 (资源)_第26张图片

FTP服务搭建与配置 (资源)_第27张图片

 

使用shell脚本安装ftp

#!/bin/bash

#auto install nginx.web

#install vsftpd soft

yum install vsftpd* db4* pam -y

service vsftpd restart

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

touch /etc/vsftpd/ftpusers.txt

echo "wzq001 pw123" >/etc/vsftpd/ftpusers.txt

#Echo “wzq001”

#”123456”>/etc/vsftpd/ftpusers.txt                         #创建wzq001

cat>>/etc/vsftpd/ftpusers.txt<

wzq001

123456

EOF

db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db

chmod 700 /etc/vsftpd_login.db

chmod 700 /etc/vsftpd/ ftpusers.txt

cat>/etc/pam.d/vsftpd<

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

account     repuired       pam_userdb.so      db=/etc/vsftpd/vsftpd_login  

EOF

#create vsftpd system user

useradd -s /sbin/nologin ftpuser    

cat>>/etc/vsftpd/vsftpd.conf<

pam_service_name=vsftpd

guest_enable=YES

guest_username=ftpuser

user_config_dri=/etc/vsftp/vsftpd_user_conf

virtual_use_local_privs=YES

EOF

#Mkdir Virtual config dir

mkdir -p /etc/vsftpd/vsftpd_user_conf/

touch  /etc/vsftpd/vsftpd_user_conf/wzq001

cat>/etc/vsftpd/vsftpd_user_conf/wzq001<

local_root=/home/ftpuser/wzq001

write_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_enable=YES

EOF

mkdir -p /home/ftpuser/wzq001

chown -R ftpuser:ftpuser /home/ftpuser

service vsftpd restart

service firewalld stop

setenforce 0

/etc/init.d/vsftpd restart

注意:把

cat>/etc/pam.d/vsftpd<

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

account     repuired       pam_userdb.so      db=/etc/vsftpd/vsftpd_login  

EOF

换成

echo "

auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/vsftpd_login

account sufficient      /lib64/security/pam_userdb.so      db=/etc/vsftpd/vsftpd_login

" >/etc/pam.d/vsftpd

 

使用shell脚本安装ftp

#!/bin/bash

#201782215:34:24

#by author www.jfedu.net

#auto create vsftpd virtual user.

###################

#Install vsftpd server soft.

yum install vsftpd* db4* pam -y

#Create virtual tmp config files.

touch /etc/vsftpd/ftpusers.txt

echo "jfedu666

pw123" >/etc/vsftpd/ftpusers.txt

#Create virtual DB Files and create vsftpd pam module.

db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db

chmod 700 /etc/vsftpd/vsftpd_login.db

chmod 700 /etc/vsftpd/ftpusers.txt

echo "

auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/vsftpd_login

account sufficient      /lib64/security/pam_userdb.so      db=/etc/vsftpd/vsftpd_login

" >/etc/pam.d/vsftpd

#Create system user for virtual user.

useradd -s /sbin/nologin ftpuser

cat>>/etc/vsftpd/vsftpd.conf<

guest_enable=YES

guest_username=ftpuser

pam_service_name=vsftpd

user_config_dir=/etc/vsftpd/vsftpd_user_conf

virtual_use_local_privs=YES

EOF

#Mkdir Virtual config dir

mkdir -p /etc/vsftpd/vsftpd_user_conf

cat>/etc/vsftpd/vsftpd_user_conf/jfedu666 <

local_root=/home/ftpuser/jfedu666

write_enable=YES

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

EOF

mkdir -p /home/ftpuser/jfedu666/

chown -R ftpuser.ftpuser /home/ftpuser/

/etc/init.d/vsftpd restart

 

 

 

常见问题:

1、

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login 
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

这两个auth account是代表什么的密码文件呢?

答:这两行配置用来指定,密码认证的方式是文件的形式,账户存储形式也是文件的形式,然后就是指定这文件的路径。

2、

启动时报错:unrecognised variable in config file: allow_writeable_chroot。。。。。注释了

#allow_writeable_chroot=YES这行以后启动就没问题,怎么回事呢?

答:

在网上找了下,发现这么一句话 In earlier versions, the allow_writeable_chroot=YES configuration option is not available (it was added in vsftpd version 3 onwards)  

你用vsftpd -version 看看你的版本。

 

3、

[root@zhdy-03 ~]# lftp [email protected]

bash: lftp: command not found...

解决方法:

[root@zhdy-03 ~]# yum -y install lftp

 

4、配置pure-ftp后,测试报错

答:

1 配置文件是否和我的一致

2 是否执行mkdb

3 检查用户名密码是否正确

 

5、FTP服务搭建与配置 (资源)_第28张图片

6、

FTP服务搭建与配置 (资源)_第29张图片

解决方法:

查看错误日志,关闭selinux,关闭原先vsftpd服务;

FTP服务搭建与配置 (资源)_第30张图片

ftp://139.199.228.59/ 匿名用户访问FTP服务器

 

简述使用 ftp 进行文件传输时的两种登录方式?它们的区别是什么?常用的 ftp 文件传
输命令是什么?
参考答案:
(1)ftp 有两种登录方式:匿名登录和授权登录。使用匿名登录时,用户名为:anonymous,
密码为:任何合法 email 地址;使用授权登录时,用户名为用户在远程系统中的用户帐号,
密码为用户在远程系统中的用户密码。
区别:使用匿名登录只能访问 ftp 目录下的资源,默认配置下只能下载;而授权登录访问的
权限大于匿名登录,且上载、下载均可。
(2)ftp 文件传输有两种文件传输模式:ASCII 模式和 binary 模式。ASCII 模式用来传
输文本文件,其他文件的传输使用 binary 模式。
(3)常用的 ftp 文件传输命令为:bin、asc、put、get、mput、mget、prompt、bye

 

7、问题 :没有授权

FTP服务搭建与配置 (资源)_第31张图片

 

 

 

 

注意:

xftp和filezilla 是linux与windows直接传输文件用,vsftp是Linux与Linux之间传输文件用

xftp走的是ssh协议,不属于ftp,这种只要是linux开启了sshd服务就可以用。 

vsftp获取其他ftp软件实现的是ftp服务,windows上可以搭建共享文件服务器,linux上也可以搭建共享文件服务器。

xftp和winscp类似

 

 

链接:

red hat linux5配置tftp服务器步骤详解 : https://www.jb51.net/os/RedHat/125179.html

CentOS常见服务详解 : https://www.jb51.net/os/RedHat/518513.html

阿里云  FTP (10841篇)系列      https://yq.aliyun.com/search/articles?q=FTP

脚本之家  FTP (140篇)系列 : https://www.jb51.net/list/list_218_1.htm

CentOS7上搭建FTP服务+VSFTPD配置全解析https://www.aliyun.com/jiaocheng/118537.html?spm=5176.100033.1.38.lzPn4m

Centos6.5搭建FTP   :  http://blog.51cto.com/xiaogongju/1940640

Vsftpd虚拟用户企业实战  :https://mp.weixin.qq.com/s/MOtvE0m6Uw_nJZi9-8xhZg

Linux环境下FTP文件传输服务  : https://mp.weixin.qq.com/s/lVK2AQXIp-IkNg5ikn1DRQ

使用Vsftpd服务传输文件 : https://www.linuxprobe.com/chapter-11.html

Linux FTP服务的安装配置 : https://blog.csdn.net/liupeifeng3514/article/details/79054539

在CentOS系统下搭建FTP服务器vsftpd的方法  :  https://www.jb51.net/os/RedHat/408259.html

linux下登录ftp, lftp命令详解   : http://blog.51cto.com/xiaogongju/2160704

FTP常用错误代码解释,ftp反馈码含义   : http://blog.51cto.com/xiaogongju/2060973

 centos如何在命令行中使用 ftp 命令上传和下载文件   :  http://blog.51cto.com/xiaogongju/1981507

 

FTP服务器的排错详解  :  http://blog.51cto.com/best0/99049

将文件复制到ftp服务器时发生错误   : http://blog.51cto.com/xiaogongju/1948439

Windows 服务器使用FTP出现“当前的安全设置不允许从该位置下载文件" 警告   :http://blog.51cto.com/xiaogongju/1946242

解决vsftpd 530 Permission denied   :  http://blog.chinaunix.net/uid-25266990-id-2557040.html

Linux 下ftp自动登录    :   http://blog.chinaunix.net/uid-25266990-id-134339.html

CentOS7.2如何部署FTP?CentOS7.2部署FTP的方法 : https://www.jb51.net/os/RedHat/533444.html

阿里云CentOS系统yum方式安装vsftpd  : https://www.jb51.net/os/RedHat/503425.html

详解在CentOS中安装配置FTP服务器软件VSFTP的流程  :  https://www.jb51.net/os/RedHat/442480.html

CentOS下安装使用FTP服务器端程序ProFTPd的教程  : https://www.jb51.net/os/RedHat/474325.html

CentOS下启用vsftpd代替PureFTPd的方法  : https://www.jb51.net/os/RedHat/393028.html

CentOS执行ftp命令提示ftp:command not found解决方法  : https://www.jb51.net/os/RedHat/264302.html

CentOS 5.3系统设置vsftpd虚拟用户的具体步骤  :  https://www.jb51.net/os/RedHat/230047.html

 

CentOS 6.4 下安装vsftpd并配置虚拟用户 : https://www.jb51.net/os/RedHat/112444.html

CentOS 安装vsftp 建新用户的方法 :     https://www.jb51.net/os/RedHat/105909.html

CentOS 6.2 快速配置vsftpd虚拟用户的步骤分享  :  https://www.jb51.net/os/RedHat/74006.html

FTP出现500 OOPS: cannot change directory的解决方法  :  https://www.jb51.net/os/RedHat/40744.html

LINUX环境中配置WU-FTP服务器  :  https://www.jb51.net/os/RedHat/1361.html

 

私人FTP搭建          :  https://www.jianshu.com/u/09c6ddf22f0a

linux上安装配置vsftpd :  https://www.cnblogs.com/itech/archive/2012/09/16/2687378.html

如何在Centos下安装ftp服务器  : https://jingyan.baidu.com/article/95c9d20d4e1222ec4e7561fc.html

原  Windows 服务器使用FTP出现“当前的安全设置不允许从该位置下载文件" 警告      : https://blog.csdn.net/u012842205/article/details/48222323

 

vsftpd服务监听端口修改以及设置iptables            :      http://blog.51cto.com/11638832/1926748

vsftp虚拟、实体账号同时验证登录           ;     http://blog.51cto.com/lythjq/1603192

三种常见的文件共享服务--ftp,nfs,samba                         :           http://blog.51cto.com/guoting/1541299

ftp实现实时同步数据              :              http://blog.51cto.com/ityunwei2017/1856584

 

搭建FTP服务,实现三种方式的访问:1.匿名访问;2,本地用户访问;3虚拟用户访问。         :           http://blog.51cto.com/13728740/2140089

 

Linu的sftp环境搭建                    :               http://blog.51cto.com/ityunwei2017/1785256

dns,lamp,文件共享服务为基础的三个示例             : http://blog.51cto.com/guoting/1541310

 

让小白优雅完成vsftpd服务器的日常管理    : http://blog.51cto.com/zhaochj/1618114

马年最后一博-根据项目需求实现ftp服务权限分配及分网段限速访问                ;      http://blog.51cto.com/zhaochj/1614030

FTP文件传输协议两种模式 ftp协议集,错误码集,ftp客户端命令集 (标准 FTP 响应代码)https://www.cnblogs.com/duanxz/p/5129153.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3803405/blog/1815495

你可能感兴趣的:(运维,开发工具,数据库)